Spark从集群环境搭建到运行第一个案例 超详细教程!!

2021-08-16 18:08:38 浏览数 (1)

Spark从集群环境搭建到运行第一个案例


spark是什么?

Apache Spark是一个快速的,多用途的集群计算系统,相对于Hadoop MapReduce将结果保存在磁盘中,Spark使用了内存保存中间结果,支持迭代计算,能在数据尚未写入磁盘时在内存中进行运算。

spark的发展历史
  • 2009年由加州大学伯克利分校AMPLab开创
  • 2010年通过BSD许可协议开源发布
  • 2013年捐赠给Apache软件基金会并切换开源协议到Apache2.0
  • 2014年2月,Spark成为Apache的顶级项目
  • 2014年11月,Spark的母公司Databricks团队使用Spark刷新数据排序世界记录
Spark的组成
  • Spark Core:

包含Spark的基本功能,包含任务调度,内存管理,容错机制等,内部定义了RDDs(弹性分布式数据集),提供了很多APIs来创建和操作这些RDDs。为其他组件提供底层的服务。

  • Spark SQL:

Spark处理结构化数据的库,就像Hive SQL,Mysql一样,企业中用来做报表统计。

  • Spark Streaming:

实时数据流处理组件,类似Storm。Spark Streaming提供了API来操作实时流数据。企业中用来从Kafka接收数据做实时统计。

  • MLlib:

一个包含通用机器学习功能的包,Machine learning lib包含分类,聚类,回归等,还包括模型评估和数据导入。MLlib提供的上面这些方法,都支持集群上的横向扩展。

  • Graphx:

处理图的库(例如,社交网络图),并进行图的并行计算。像Spark Streaming,Spark SQL一样,它也继承了RDD API。它提供了各种图的操作,和常用的图算法,例如PangeRank算法。

Spark运行流程图

流程介绍

  • 构建Spark Application的应用程序运行环境,启动SparkContext核心
  • SparkContext向资源管理调度器(Standalone,Mesos,Yarn)申请运行Executor资源,并启动StandaloneExecutorbackend,
  • Executor向SparkContext申请Task
  • SparkContext将应用程序分发给各个Executor
  • SparkContext构建成DAG图,最后由Task Scheduler将Task发送给Executor运行
  • Task在Executor上运行,运行完释放所有资源
运行一个Spark程序需要经历的流程

1.启动 Drive, 创建 SparkContext应用

2.Client 提交程序给 Drive, Drive 跟Cluster Manager申请集群资源

3.资源申请完毕,在worker中运行Executor

4.Driver 将程序转化为 Tasks, 分发给 Executor 执行


Spark集群环境搭建

1.机器与环境准备:

  • 1.1:准备node-01 node-02 node-03三台机器完成
  • 1.2:三台机器已经正常运行hadoop集群,关闭linux防火墙
  • 1.3:准备好三台机器的java环境

2.下载对应版本的安装包并解压到对应目录(node-01)

代码语言:javascript复制
# 下载 Spark  创建(mkdir)/export/softwares  export/servers目录
cd /export/softwares
wget https://archive.apache.org/dist/spark/spark-2.2.0/spark-2.2.0-bin-hadoop2.7.tgz
# 解压 Spark 安装包
tar xzvf spark-2.2.0-bin-hadoop2.7.tgz
# 移动 Spark 安装包到对应目录并修改名字
mv spark-2.2.0-bin-hadoop2.7.tgz /export/servers/spark

3.修改对应配置文件

代码语言:javascript复制
#修改配置文件`spark-env.sh`, 以指定运行参数
cd /export/servers/spark/conf
cp spark-env.sh.template spark-env.sh
vi spark-env.sh

#将以下内容复制进配置文件末尾
# 指定 Java Home(根据自己机器的路径修改)
export JAVA_HOME=/export/servers/jdk1.8.0
# 指定 Spark Master 地址
export SPARK_MASTER_HOST=node01  //主节点
export SPARK_MASTER_PORT=7077  //运行端口
#修改slaves配置文件
cd /export/servers/spark/conf
cp slaves.template slaves
vi slaves
#添加如下内容,node-01
node-01
node-02
node-03

4.分发配置文件

代码语言:javascript复制
#将 Spark 安装包分发给集群中其它机器
cd /export/servers
scp -r spark root@node02:$PWD
scp -r spark root@node03:$PWD
启动 Spark Master 和 Slaves,

5.启动集群

代码语言:javascript复制
#cd /export/servers/spark
sbin/start-all.sh

6.查看进程

  • 在主节点node-01的机器上 输入JPS 可以看到workers与Master进行开启 在node-02与node-03机器出现Master进程 即算安装完成

7.访问WEBUI界面

  • 要注意的是8080是spark的WEB UI访问端口,7077是master端口,不要搞混 输入http:IP:8080访问WEBUI界面
Spark测试案例运行
代码语言:javascript复制
#1 进入 Spark 安装目录中
cd /export/servers/spark/
#2 运行 Spark 示例任务  spark-submit运行案例jar包
bin/spark-submit 
--class org.apache.spark.examples.SparkPi 
--master spark://node01:7077,node02:7077,node03:7077 
--executor-memory 1G 
--total-executor-cores 2 
/export/servers/spark/examples/jars/spark-examples_2.11-2.2.3.jar 
100
#3 运行结果
Pi is roughly 3.14

到这里Spark搭建完成.

0 人点赞