目录
2. 将 spark 自带的与 Hadoop 集成的 jar 包上传到 hdfs
1. 运行 spark 的示例 run-example 并提交到 yarn
以前的 Spark 部署都是使用的 standalone 方式,集群中的每台机器都安装部署 Spark,然后启动 Master 和 Worker 进程运行 Spark。今天尝试一下 Spark on YARN 的部署方式。
一、实验目的
- 只在一台机器上安装 Spark,基于已有的 Hadoop 集群,使用 YARN 调度资源。
- 不启动 Master 和 Worker 进程提交 Spark 作业。
- 通过 YARN 的 WebUI 查看 Spark 作业的执行情况。
二、实验环境
4 台 CentOS release 6.4 虚拟机,IP 地址为:
192.168.56.101
192.168.56.102
192.168.56.103
192.168.56.104
192.168.56.101 是 Hadoop 集群的主,运行 NameNode 和 ResourceManager 进程。
192.168.56.102、192.168.56.103 是 Hadoop 的从,运行 DataNode 和 NodeManager 进程。
192.168.56.104 安装 Pentaho 的 PDI,安装目录为 /home/grid/data-integration。
Hadoop 版本:2.7.2
Spark 版本:1.5.0
PDI 版本:6.0
Hadoop 集群的安装配置参考“Hadoop 集群安装配置实验”。
三、安装 Spark
只在 192.168.56.101 一台机器上上安装 Spark,具体安装步骤参考“Spark 安装配置实验”。
四、配置步骤
1. 启动 Hadoop 集群
# 启动hdfs
/home/grid/hadoop-2.7.2/sbin/start-dfs.sh
# 启动yarn
/home/grid/hadoop-2.7.2/sbin/start-yarn.sh
2. 将 spark 自带的与 Hadoop 集成的 jar 包上传到 hdfs
hadoop fs -put /home/grid/spark/lib/spark-assembly-1.5.0-hadoop2.6.0.jar /user/
3. 编辑 spark-defaults.conf 文件
添加如下一行:
spark.yarn.jar=hdfs://master:9000/user/spark-assembly-1.5.0-hadoop2.6.0.jar
修改后的 spark-defaults.conf 文件如图1 所示。
图1
五、测试
1. 运行 spark 的示例 run-example 并提交到 yarn
cd $SPARK_HOME/bin
cp run-example run-example2
# 需要将EXAMPLE_MASTER设置成yarn
vi run-example2
EXAMPLE_MASTER="yarn"
# 执行示例
./run-example2 org.apache.spark.examples.SparkPi 2
执行结果如图2 所示。
图2
2. Kettle 提交 Spark 作业到 yarn
以下是本实验相关的步骤,关于 PDI 提交 Spark 作业的配置参考“Pentaho Work with Big Data(二)—— Kettle 提交 Spark 作业”。
# 将yarn和spark配置文件拷贝到客户端机器
scp /home/grid/hadoop/etc/hadoop/yarn-site.xml 192.168.56.104:/home/grid/data-integration/plugins/pentaho-big-data-plugin/hadoop-configurations/cdh54/
scp /home/grid/spark/conf/spark-defaults.conf 192.168.56.104:/home/grid/spark/conf/
修改 PDI 的 Spark 例子。
cp /home/grid/data-integration/samples/jobs/Spark\ Submit/Spark\ submit.kjb /home/grid/data-integration/test/Spark\ Submit\ Sample.kjb
在 Kettle 中打开 /home/grid/data-integration/test/Spark\ Submit\ Sample.kjb 文件,编辑 Spark Submit Sample 作业项,填写如图3 所示的信息。
图3
执行 Spark Submit Sample 作业,结果如图4 所示。
图4
3. 在 yarn 的 WebUI 查看作业的运行情况
http://192.168.56.101:8088/
正在执行的 spark 作业如图5 所示。
图5
点击“ApplicationMaster”,进入 Spark 作业页面,如图6 所示。
图6
作业执行完,应用历史页面如图7 所示。
图7
4. 执行 SparkSQL
关于用 beeline 连接 SparkSQL 的相关配置,参考“用 beeline 连接 SparkSQL”。
# 启动mysql,用于存储hive的元数据
mysqld &
# 启动hive元数据存储服务
hive --service metastore > /tmp/grid/hive_metastore.log 2>&1 &
# 启动spark thriftserver服务
$SPARK_HOME/sbin/start-thriftserver.sh --master yarn
此时在 yarn 的 WebUI 查看应用的运行情况,如图8 所示。
图8
# 登入beeline
$SPARK_HOME/bin/beeline -u jdbc:hive2://192.168.56.101:10001/
执行 SparkSQL 查询:
use test;
select * from session_test;
select count(*) from session_test;
此时在 yarn 的 WebUI 查看 Spark 作业的运行情况,如图9 所示。