以前的Spark部署都是使用的standalone方式,集群中的每台机器都安装部署Spark,然后启动Master和Worker进程运行Spark。今天尝试一下Spark on YARN的部署方式。 一、实验目的 1. 只在一台机器上安装Spark,基于已有的Hadoop集群,使用YARN调度资源。 2. 不启动Master和Worker进程提交Spark作业。 3. 通过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集群的安装配置参考 http://blog.csdn.net/wzy0623/article/details/50681554 三、安装Spark 只在192.168.56.101一台机器上上安装Spark,具体安装步骤参考 http://blog.csdn.net/wzy0623/article/details/50946766 四、配置步骤 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作业的配置参考http://blog.csdn.net/wzy0623/article/details/51097471 # 将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的相关配置,参考http://blog.csdn.net/wzy0623/article/details/50999197 # 启动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所示
图9
参考:
http://blog.csdn.net/xiao_jun_0820/article/details/46561097