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生态圈中。
热门推荐
中国煤矸石行业报告 :资源化利用具有巨大市场潜力和前景
如何规避个人独资企业的无限责任风险?
怎样才能优化设置,减少电量消耗,提升手机续航
阿托伐他汀钙片适应症有哪些?高效降脂,实现心脑临床获益
规则怪谈惊魂教学楼通关攻略:隐秘档案解谜全攻略
单身公寓布置技巧,打造温馨舒适的小空间
摆脱频繁换工作的困扰?专家建议:从自我认识和职涯规划开始寻找方向!
用冷暴力的人最大的弱点:田蜜蜜为你解读冷暴力背后的心理
银行资金业务投资组合优化的方法有哪些?
转专业申请书写作指南:结构、要点与注意事项
终于有人把 p 值讲明白了!
牛哪个部位的肉最好吃?牛肉最好的部位依次排列
嘴巴长疱疹亲宝宝会不会传染给宝宝
电脑文件系统错误全解析:当"文件名目录名或卷标语法不正确"时怎么办?
新生儿黄疸怎么办?
儿童游乐场有哪些玩法和互动方式呢
2024国际渔业和水产养殖产品市场报告
枭曰:乡人皆恶我鸣。
基础模型的推理能力:现状与未来方向
猫咪的饮水量管理(如何确保你的宠物猫每天喝到足够的水量)
为什么很多足球运动员在俱乐部和在国家队的表现判若两人?
命令模式详解:封装请求的指挥者
放弃继承,就可以不承担被继承人的债务吗?
数据线接触不良的解决方法(让数据线畅通无阻)
从葱郁林海到巍峨山峦,这群警察为啥成天围着绿水青山转?
火山岩:从自然馈赠到建筑美学
专家解读:腓总神经损伤后脚趾为何仍能动
银行利息怎么计算
乌梅用法知多少?
生命科学好就业吗?张雪峰最看好,前景好月薪高!