问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Apache Spark大数据处理与分析入门指南

创作时间:
作者:
@小白创作中心

Apache Spark大数据处理与分析入门指南

引用
CSDN
1.
https://blog.csdn.net/Xiaozou_Q/article/details/136496776

Apache Spark是一个快速、通用的大数据处理引擎,广泛应用于大规模数据集的实时和批处理分析。本文将详细介绍Spark的主要特点、与MapReduce的对比、运行架构、RDD(弹性分布式数据集)的特点和运行过程,以及Spark的部署与安装步骤。此外,文章还将介绍Scala语言的特点及其在Spark编程中的应用。

Spark的主要特点

  1. 运行模式多样:Spark可以运行于独立的集群模式、Hadoop、Amazon EC2等云环境中,并且可以访问HDFS、Cassandra、HBase、Hive等多种数据源。
  2. 运行速度快:使用DAG执行引擎以支持循环数据流与内存计算。
  3. 通用性:Spark提供了完整而强大的技术栈,支持多种数据处理场景。
  4. 易用性:支持使用Scala、Java、Python和R语言进行编程。

MapReduce简介

MapReduce主要分成Map和Reduce两个阶段,核心思想就是分而治之。Map阶段负责将复杂的任务分解成若干个小任务进行处理,Reduce阶段则将Map阶段得到的结果进行汇总。

Spark与MapReduce的对比

Spark与Hadoop的主要区别在于其运行架构和执行引擎。Spark采用DAG执行引擎,支持循环数据流与内存计算,而MapReduce则采用简单的Map和Reduce两阶段处理模型。

Spark运行架构特点

  1. 专属Executor进程:每个application都有自己专属的Executor进程,并且该进程在application运行期间一直驻留。Executor进程以多线程的方式运行Task。
  2. 资源无关性:Spark运行过程与资源管理无关,只要能够获取Executor进程并保持通信即可。
  3. 优化机制:Task采用了数据本地性和推测执行等优化机制,实现“计算向数据靠拢”。

RDD的核心特点

  1. 高效的容错性:RDD具有天生的容错性,通过血缘关系可以重新计算丢失的分区,无需回滚系统,重算过程在不同节点之间并行,只记录粗粒度的操作。
  2. 内存持久化:中间结果持久化到内存,数据在内存中的多个RDD操作直接传递,避免了不必要的读写磁盘开销。
  3. 对象存储:存放的数据可以是Java对象,避免了不必要的对象序列化和反序列化。

RDD的运行过程

  1. 创建RDD对象
  2. SparkContext负责计算RDD之间的依赖关系,构建DAG
  3. DAGScheduler负责把DAG图分解成多个Stage,每个Stage中包含了多个Task,每个Task会被TaskScheduler分发给各个WorkerNode上的Executor去执行

RDD的宽窄依赖

  • 窄依赖:父RDD的一个分区最多被子RDD的一个分区所用。例如map()、filter()、union()等操作都会产生窄依赖。
  • 宽依赖:父RDD的一个分区被子RDD的多个分区所用。例如groupByKey()、reduceByKey()、sortByKey()等操作都会产生宽依赖。


注意:

  1. 对于join算子,两种依赖都可能产生!
  2. 在数据容错方面,窄依赖要优于宽依赖。当子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的特点

  1. 强大的并发性:支持函数式编程,可以更好地支持分布式系统。
  2. 语法简洁:能提供优雅的API。
  3. 兼容Java:运行速度快,且能融合到Hadoop生态圈中。
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号