Spark环境搭建
下载包
所需Spark包:我选择的是2.2.0的对应Hadoop2.7版本的,下载地址:https://archive.apache.org/dist/spark/spark-2.2.0/
Spark 集群高可用搭建
对于 Spark Standalone 集群来说, 当 Worker 调度出现问题的时候, 会自动的弹性容错, 将出错的 Task 调度到其它 Worker 执行
但是对于 Master 来说, 是会出现单点失败的, 为了避免可能出现的单点失败问题, Spark 提供了两种方式满足高可用
使用 Zookeeper 实现 Masters 的主备切换
使用文件系统做主备切换
Step 1 停止 Spark 集群
cd /export/servers/spark
sbin/stop-all.sh
Step 2 修改配置文件, 增加 Spark 运行时参数, 从而指定 Zookeeper 的位置
进入 spark-env.sh
所在目录, 打开 vi 编辑
cd /export/servers/spark/conf
vi spark-env.sh
编辑 spark-env.sh
, 添加 Spark 启动参数, 并去掉 SPARK_MASTER_HOST 地址
# 指定 Java Home
export JAVA_HOME=/export/servers/jdk1.8.0_141
# 指定 Spark Master 地址
# export SPARK_MASTER_HOST=node01
export SPARK_MASTER_PORT=7077
# 指定 Spark History 运行参数
export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=4000 -Dspark.history.retainedApplications=3 -Dspark.history.fs.logDirectory=hdfs://node01:8020/spark_log"
# 指定 Spark 运行时参数
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=node01:2181,node02:2181,node03:2181 -Dspark.deploy.zookeeper.dir=/spark"
Step 3 分发配置文件到整个集群
cd /export/servers/spark/conf
scp spark-env.sh node02:$PWD
scp spark-env.sh node03:$PWD
Step 4 启动
在 node01
上启动整个集群
cd /export/servers/spark
sbin/start-all.sh
sbin/start-history-server.sh
在 node02
上单独再启动一个 Master
cd /export/servers/spark
sbin/start-master.sh
Step 5 查看 node01 master
和 node02 master
的 WebUI
你会发现一个是 ALIVE(主)
, 另外一个是 STANDBY(备)
Spark shell
简单介绍
Spark shell 是 Spark 提供的一个基于 Scala 语言的交互式解释器, 类似于 Scala 提供的交互式解释器, Spark shell 也可以直接在 Shell 中编写代码执行
这种方式也比较重要, 因为一般的数据分析任务可能需要探索着进行, 不是一蹴而就的, 使用 Spark shell 先进行探索, 当代码稳定以后, 使用独立应用的方式来提交任务, 这样是一个比较常见的流程
Spark shell 的方式编写 WordCount
Spark shell 简介
启动 Spark shell Spark shell 的原理是把每一行 Scala 代码编译成类, 最终交由 Spark 执行 |
Master地址的设置
Master 的地址可以有如下几种设置方式
|
Step 1 准备文件
在 hadoop01 中创建文件 /export/data/wordcount.txt,文件内容如下
hadoop spark flume
spark hadoop
flume hadoop
Step 2 启动 Spark shell
cd /export/servers/spark
bin/spark-shell --master local[2]
Step 3 执行如下代码