Apache Spark大数据处理与分析入门指南
创作时间:
作者:
@小白创作中心
Apache Spark大数据处理与分析入门指南
引用
CSDN
1.
https://blog.csdn.net/Xiaozou_Q/article/details/136496776
Apache Spark是一个快速、通用的大数据处理引擎,广泛应用于大规模数据集的实时和批处理分析。本文将详细介绍Spark的主要特点、与MapReduce的对比、运行架构、RDD(弹性分布式数据集)的特点和运行过程,以及Spark的部署与安装步骤。此外,文章还将介绍Scala语言的特点及其在Spark编程中的应用。
Spark的主要特点
- 运行模式多样:Spark可以运行于独立的集群模式、Hadoop、Amazon EC2等云环境中,并且可以访问HDFS、Cassandra、HBase、Hive等多种数据源。
- 运行速度快:使用DAG执行引擎以支持循环数据流与内存计算。
- 通用性:Spark提供了完整而强大的技术栈,支持多种数据处理场景。
- 易用性:支持使用Scala、Java、Python和R语言进行编程。
MapReduce简介
MapReduce主要分成Map和Reduce两个阶段,核心思想就是分而治之。Map阶段负责将复杂的任务分解成若干个小任务进行处理,Reduce阶段则将Map阶段得到的结果进行汇总。
Spark与MapReduce的对比
Spark与Hadoop的主要区别在于其运行架构和执行引擎。Spark采用DAG执行引擎,支持循环数据流与内存计算,而MapReduce则采用简单的Map和Reduce两阶段处理模型。
Spark运行架构特点
- 专属Executor进程:每个application都有自己专属的Executor进程,并且该进程在application运行期间一直驻留。Executor进程以多线程的方式运行Task。
- 资源无关性:Spark运行过程与资源管理无关,只要能够获取Executor进程并保持通信即可。
- 优化机制:Task采用了数据本地性和推测执行等优化机制,实现“计算向数据靠拢”。
RDD的核心特点
- 高效的容错性:RDD具有天生的容错性,通过血缘关系可以重新计算丢失的分区,无需回滚系统,重算过程在不同节点之间并行,只记录粗粒度的操作。
- 内存持久化:中间结果持久化到内存,数据在内存中的多个RDD操作直接传递,避免了不必要的读写磁盘开销。
- 对象存储:存放的数据可以是Java对象,避免了不必要的对象序列化和反序列化。
RDD的运行过程
- 创建RDD对象
- SparkContext负责计算RDD之间的依赖关系,构建DAG
- DAGScheduler负责把DAG图分解成多个Stage,每个Stage中包含了多个Task,每个Task会被TaskScheduler分发给各个WorkerNode上的Executor去执行
RDD的宽窄依赖
- 窄依赖:父RDD的一个分区最多被子RDD的一个分区所用。例如map()、filter()、union()等操作都会产生窄依赖。
- 宽依赖:父RDD的一个分区被子RDD的多个分区所用。例如groupByKey()、reduceByKey()、sortByKey()等操作都会产生宽依赖。
注意:
- 对于join算子,两种依赖都可能产生!
- 在数据容错方面,窄依赖要优于宽依赖。当子RDD的某一个分区的数据丢失时,若是窄依赖,只需重算和该分区对应的父RDD分区即可,而宽依赖则可能需要重算父RDD的所有分区。
Spark的部署与安装
上传并解压安装包
tar -zxvf /export/software/spark-3.0.3-bin-hadoop2.7.tgz
设置环境变量
vim /etc/profile
export SPARK_HOME=/usr/local/soft/spark-3.0.3
export PATH=$PATH:${SPARK_HOME}/bin
export PATH=$PATH:${SPARK_HOME}/sbin
source /etc/profile
修改配置文件
cd spark/conf/
cp spark-env.sh.template spark-env.sh
cp slaves.template slaves
vim spark-env.sh
添加以下环境变量:
export SCALA_HOME=/usr/local/soft/scala-2.12.12
export JAVA_HOME=/usr/local/soft/jdk1.8.0_202
export SPARK_MASTER_IP=master
export SPARK_WORKER_CORES=2
export SPARK_WORKER_MEMORY=2g
export HADOOP_CONF_DIR=/usr/local/soft/hadoop-3.1.3/etc/hadoop
修改从节点IP
vi slaves
修改内容为:
slave1
slave2
分发文件
scp -r /usr/local/soft/spark-3.0.3/ slave1:/usr/local/soft/
scp -r /usr/local/soft/spark-3.0.3/ slave2:/usr/local/soft/
设置从节点环境变量
在slave1和slave2上执行:
vim /etc/profile
export SPARK_HOME=/usr/local/soft/spark-3.0.3
export PATH=$PATH:${SPARK_HOME}/bin
export PATH=$PATH:${SPARK_HOME}/sbin
source /etc/profile
启动集群
在主节点master上执行:
./start-all.sh
查看节点
- Master:
- Slave1:
- Slave2:
启动成功后,可以在主节点master上看到Master,在s1上看到Worker,在s2上看到Worker。
Spark Shell
Scala安装
Scala是Spark编程常用语言之一。可以从Scala官网下载安装包并按照说明进行安装。
Scala部署安装
上传并解压安装包
tar -zxvf scala-2.12.12.tgz
设置环境变量
vim /etc/profile
export SCALA_HOME=/usr/local/soft/scala-2.12.12
export PATH=$PATH:${SCALA_HOME}/bin
source /etc/profile
验证Scala启动成功
Scala启动成功后,可以在命令行中输入scala
命令进入Scala shell。
Scala的特点
- 强大的并发性:支持函数式编程,可以更好地支持分布式系统。
- 语法简洁:能提供优雅的API。
- 兼容Java:运行速度快,且能融合到Hadoop生态圈中。
热门推荐
毛泽东滴水洞别墅揭秘:60年代绝密工程今成旅游胜地
韶山:伟人故里见证毛泽东成长足迹
方山腊肉:一块腊肉撬动乡村振兴
冰箱里的腊肉还能吃吗?
红烧光明乳鸽:深圳必打卡的传统美食
肾动脉狭窄:隐藏的健康杀手
青少年肾动脉狭窄引发顽固性高血压,怎么办?
五年级数学方程复习:基础概念到实战演练,全面解析助你拿高分
类型错位致口碑下滑,《草木人间》成吴磊演技试金石
张学友声带恢复秘籍大揭秘:从RSV感染到重返舞台
声带受损?这些科学恢复方法请收好
深圳小孩上学政策详解:户籍儿童入学条件及非深户孩子上学指南
6661万VS1.13亿:反传销电影《草木人间》票房遇冷
茶禅一味:电影《草木人间》里的中国茶文化
宁夏十大小吃,你尝过哪一味?地道美味不容错过!
西安本地土著带路!必吃的7条美食街
职场人必备:年度考核总结完整写作指南
远离超加工食品,定期检查:慢性肾病预防指南
替代20%动物蛋白,这些植物性食物助你降低心血管疾病风险
营养师详解:豆浆的三大健康益处与饮用攻略
《银翼杀手2049》:复制人与人类的终极对决
1碗淀粉6碗水,教你自制凉粉,10分钟完成,清凉爽滑,Q弹开胃
《银翼杀手2049》:复制人的社会地位与身份认同
秦岭-淮河一线:自然分界线上的文化交融
横断南北的秦岭-淮河:从气候到文化的地理之界
深圳的自然奇观:从山海到草原,这些城市里的自然秘境你都发现了吗?
深圳湾公园&大鹏所城:拍大片的绝佳圣地
海南东方市海东方沙滩旅游攻略与景点详解:玩乐、住宿、美食一站式指南
“单身冻卵第一案”终审败诉!但判决书留了一道口子......
香港买天梭表必看:打折、款式、质量、保修全解析