首页  

Spark大数据分析实战 第2章 初识Spark     所属分类 spark 浏览量 864
大数据开发总体架构
什么是Spark
Spark主要组件
Spark运行时架构
Spark集群搭建与测试
Spark应用程序的提交
Spark Shell的使用


大数据开发总体架构
业务层 数据可视化 业务逻辑处理
任务调度层 crontab oozie
数据计算层 mapreduce hive
spark sparkMLIB sparkSQL sparkR sparkStreaming
资源管理层 YARN
数据存储层 HDFS hbase ES
数据传输层 flume sqoop kafka
数据来源层 mysql 日志文件 视频文档等非结构化数据

什么是Spark 快速 通用 可扩展 分布式计算框架 基于内存计算的大数据并行计算框架 SparkSQL SparkStreaming GraphX MLlib 与MapReduce相比,Spark支持包括Map和Reduce在内的更多操作 这些操作相互连接形成一个有向无环图(Directed Acyclic Graph DAG) 各个操作的中间数据保存在内存中,因此比MapReduce更加快 使用先进的DAG调度器、查询优化器和物理执行引擎 高效的实现批处理和流数据处理 Spark特点 快 与MapReduce相比,Spark基于内存的运算要快100倍以上,基于硬盘的运算也要快10倍以上 Spark实现了高效的DAG(有向无环图)执行引擎,基于内存来高效处理数据流 易用性 支持Java Python和Scala API,支持超过80种算子,快速构建不同的应用 支持交互式的shell Python和Scala 通用 提供了统一的解决方案 Spark可以用于批处理 交互式查询(Spark SQL) 实时流处理(Spark Streaming) 机器学习(Spark MLlib)和图计算(GraphX) 这些不同类型的处理都可以在同一个应用中无缝使用 到处运行 Spark可以使用独立集群模式运行(自带的独立资源调度器,Standalone模式) 也可以运行在Amazon EC2、Hadoop YARN、Kubernetes之上 并且可以访问HDFS、Cassandra、HBase、Hive等数据源中的数据
Spark主要组件 Spark Core 是一个对由很多计算任务组成的、运行在多个工作机器或者一个计算集群上的应用进行调度、分发以及监控的计算引擎
工具层 sparkSQL streaming mlib graphx
计算层 spark core
调度层 standalone YARN
存储层 HDFS hbase S3

Spark运行时架构 本地(单机)模式 Standalone Spark On YARN YARN集群架构 主/从(Master/Slave)架构 由ResourceManager NodeManager ApplicationMaster和Container等组件构成 YARN负责资源的管理和调度,运行哪种应用程序由用户自己实现 在YARN上可同时运行MapReduce程序和Spark程序 YARN 对每一个程序实现 资源 隔离 Spark与MapReduce可以运行于同一个集群中,共享集群存储资源与计算资源 YARN集群 应用程序执行流程 向ResourceManager提交应用程序 启动ApplicationMaster ApplicationMaster 向 ResourceManager 申请资源 运行task 应用程序提交的方式 Driver(主控进程)在集群中的位置不同 client和cluster,默认 client
Spark集群搭建与测试 node01 master node02 worker node03 worker slaves文件 cp slaves.template slaves vi slaves node02 node03 spark-env.sh文件 cp spark-env.sh.template spark-env.sh vi spark-env.sh export JAVA_HOME=/opt/modules/jdk1.8.0_144 export SPARK_MASTER_HOST=node01 export SPARK_MASTER_PORT=7077 在主节点node01 执行,启动Spark集群 $ sbin/start-all.sh jps查看进程 三个节点的进程分别为 Master Worker Worker Spark WebUI http://node01:8080 客户端应用程序提交工具spark-submit bin/spark-submit [options] < app jar > [app options] options 传递给spark-submit的参数 app jar 提交的程序jar包(或Python脚本文件)的位置 app options 应用程序参数 main()方法中的参数 bin/spark-submit --master spark://node01:7077 --class org.apache.spark.examples.SparkPi ./examples/jars/spark-examples_2.11-2.4.0.jar --master 指定Master节点 连接地址 spark://host:port Standalone模式 默认端口 7077 yarn 连接到YARN集群 local 本地模式,使用1个CPU核心 local[N] 本地模式,使用N个CPU核心 local[*] 本地模式 其他参数 --deploy-mode 提交方式 client 或 cluster client 在本地客户端启动Driver程序 cluster 在集群的工作节点上启动Driver程序 默认为 client --class 应用程序的主类(Java或Scala程序) --name 应用程序名称,会在Spark Web UI中显示 --jars 应用依赖的第三方的jar包列表,以逗号分隔 --files 需要放到应用工作目录中的文件列表,以逗号分隔 一般用来放需要分发到各节点的数据文件 --conf 设置任意的SparkConf配置属性,格式为 属性名=属性值 --properties-file 加载外部包含键值对的属性文件 如果不指定,默认将读取Spark安装目录下的conf/spark-defaults.conf文件中的配置 --driver-memory Driver进程使用的内存 ,例如 512M 或 1G 单位不区分大小写 ,默认 1024M --executor-memory 每个Executor进程使用的内存 默认1G --driver-cores Driver进程使用的CPU核心数,仅在集群模式中使用 默认为1 --executor-cores 每个Executor进程所用的CPU核心数,默认为1 --num-executors Executor进程数量,默认为2 如果开启动态分配,则初始Executor的数量至少是此参数配置的数量 此参数仅在Spark On YARN模式中使用 bin/spark-submit \ --master spark://centos01:7077 \ --deploy-mode cluster \ --class org.apache.spark.examples.SparkPi \ --driver-memory 512m \ --executor-memory 1g \ --executor-cores 2 \ ./examples/jars/spark-examples_2.11-2.4.0.jar
Spark Shell 使用 Standalone模式 bin/spark-shell --master spark://node01:7077 Spark WebUI http://node01:8080 Spark On YARN模式 bin/spark-shell --master yarn
Spark大数据分析实战 第1章 Scala基础 spark-shell 简单使用

上一篇     下一篇
Spark大数据分析实战 第1章 Scala基础

指数估值工具

编程式绘图工具mermaid

Spark Standalone 的两种提交方式

Spark大数据分析实战 第3章 RDD弹性分布式数据集

Spark大数据分析实战 第4章 Spark内核源码分析