spark core 系列一

Spark是什么

Apache Spark是一个统一的分布式内存计算引擎,包括一组用于在计算机集群上进行并行数据处理的函数库。spark最大的好处就是迭代计算,相比MapReduce大大的提高了计算能力。spark为批处理(Spark core),交互式(Spark SQL),流式(Spark Streaming),机器学习(MLib),图处理(GraphX)提供一个统一的数据处理平台,这相对于使用Hadoop有很大的优势。 test


截图.png

Spark集群安装

1.准备工作:在集群节点上安装JDK8,设置JAVA-HOME环境变量;配置集群节点间免密码登录
2.去官网下载与Hadoop对应版本的spark(http://spark.apache.org/downloads.html),上传到集群master节点相关目录并解压
3.配置SPARK_HOME环境变量,配置JAVA_HOME,spark-env.sh中添加export JAVA_HOME=/usr/local/java/jdk1.8.0_73
配置slaves文件,把conf/slaves.template重命名为conf/slaves,添加worker节点主机名
配置Spark History Server,重命名conf/spark-defaults.conf.template为conf/spark-defaults.conf,修改spark-default.conf配置文件
配置好后,把spark文件夹同步发给worker节点

image.png

4.运行sbin/start-all.sh脚本,并启动./start-history-server.sh
spark 启动模式有standalone,spark on yarn,mesos,local


image.png

5.访问Spark UI界面,地址为:http://master节点IP:8080
运行Spark交互式控制台spark-shell: bin/spark-shell --master spark://hadoop-001:7077

image.png

Spark基本架构

Spark将集群交由集群管理器管理,如Spark Standalone集群管理器、YARN集群管理器、Mesos集群管理器。用户向集群管理器提交Spark应用程序,它为应用程序提供资源。Spark应用程序由一个driver进程(驱动程序)和一组Executor进程组成。集群管理器帮助Spark跟踪可用的资源。
driver进程负责响应用户程序或输入; 运行main函数,维护有关Spark应用程序信息; 分析、分配和调度executor的工作。executors进程执行driver分配的代码,并将executor的计算状态报告给driver进程driver类似项目经理,executor相当于小组长,task相当于具体的工程师


image.png

Spark应用程序调度过程

Driver进程会向master节点申请资源,master节点收到请求之后,会向worker节点进行资源调度。worker节点启动Executor进程,然后Executor进程向Driver进程进行注册,此时Spark 应用程序会知道哪些worker上面的executor就绪。
接着开始执行spark任务:遇到action操作-》创建一个job-》提交给DAGScheduler,DAGScheduler会把job分为多个stages(shuffle:最后一个stage里面的task叫ResultTask,前面stage里面的task叫shuffleMapTask),为每个stage创建一个taskset集合,集合中的task计算逻辑完全相同,只是处理的数据不同。Task的数量等于partition的数量,但是同时执行的task的数量等于集群core的数量。DAGScheduler会把taskset交给TaskScheduler,TaskScheduler会把taskset里面的task发送给Executor。Executor接收到task,启动一个线程TaskRunner,在里面运行task。整个Application运行完成时间,等于最后一个task的时间。
从Spark集群角度(静态): Master、worker
从spark应用程序的角度(动态): Application、Driver、Executor、Action、Transformation、Job、Stage、Task

你可能感兴趣的:(spark core 系列一)