Spark 原理与实践 | 青训营笔记

109 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的的第5天

1.Spark基础入门

1.1什么是Spark

Spark是用于大规模数据处理的统一分析引擎

1.2Spark生态圈

       Spark Core:内核
       Spark SQL:用于处理结构化数据的组件,类似Hive
       Spark Streaming:用于处理流式数据的组件,类似Storm
       Spark MLLib:机器学习
       Spark Graphx: 图计算

1.3Spark的特点与MapReduce对比

Spark的特点:

1.基于内存,所以速度快,但同时也是缺点,因为Spark没有对内存进行管理,容易OOM(out of memory内存溢出),可以用Java Heap Dump对内存溢出问题进行分析 2.可以使用Scala、Java、Python、R等语言进行开发 3.兼容Hadoop

Spark与MapReuce对比 1.MapReduce最大的缺点,Shuffle过程中会有很多I/O开销,可以看到这里有6个地方会产生IO,而Spark只会在1和6的地方产生I/O,其他的过程都在内存中进行 image.png 2.Spark是MapReduce的替代方案,兼容Hive、HDFS、融入到Hadoop

2.Spark体系结构与安装部署

2.1Spark体系结构

1.主从架构:存在单点故障的问题,因此需要实现HA
2.Spark体系结构图

image.png

Driver Program可以理解为是客户端,而右边的可以理解为服务器端。 Cluster Manager是主节点,主节点并不负责真正任务的执行,任务的执行由Worker Node完成。
这是一张更详细的架构图

image.png

如果要搭建全分布模式,至少需要两个worker 要实现HA的话,则必须借助ZooKeeper

2.2Spark的安装与部署

Spark伪分布模式的部署

解压 tar -zxvf spark-2.2.0-bin-hadoop2.6.tgz -C ~/training/ 注意:由于Hadoop和Spark的脚本有冲突,设置环境变量的时候,只能设置一个 核心配置文件: conf/spark-env.sh export JAVA_HOME=/root/training/jdk1.8.0_144 export SPARK_MASTER_HOST=bigdata111 export SPARK_MASTER_PORT=7077
从节点的地址:slaves文件中填入主机名即可,注意hosts文件里要有对ip的解析 启动Spark集群 sbin/start-all.sh,这里我个人是给这个文件做了一个软链接start-spark.sh,因为hadoop下的启动脚本也是start-all.sh,会有冲突 Web界面:主机名:8080

Spark全分布模式的部署

全分布式的部署与伪分布式类似,在每个节点上都解压压缩包,修改conf/spark-env.sh 在主节点上的slaves文件中填入从节点的主机名 然后在每个节点上启动集群即可