Spark on YARN 部署

1.说明:

  1. 首先要部署好Hadoop集群包括HDFS和YARN,这里不再赘述.
  2. Spark on YARN模式,不需要启动spark的master和worker,master的工作由YARN完成.
  3. 相关路径根据实际情况修改.
  4. 1.4和1.6版本部署过程类似.

2.部署

下载

从官网(http://spark.apache.org/)下载对应Hadoop版本的包,如spark-1.6.1-bin-hadoop2.4.tgz.
解压至某个目录,如”/usr/local/hadoop/spark-1.6.1-bin-hadoop2.4”.
解压后得到如下文件

配置

配置文件修改

配置文件在conf目录中.
配置环境变量
cp spark-env.sh.template spark-env.sh
在spark-env.sh中添加如下:
export HADOOP_HOME=/usr/local/hadoop/hadoop-2.4.1
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop/

配置spark选项
cp spark-defaults.conf.template spark-defaults.conf
添加如下:
spark.master yarn #指定使用yarn
spark.driver.memory 1g #指定driver使用的内存
spark.executor.memory 512m #指定executor使用的内存

选填:
spark.executor.extraClassPath /data/hadoop/hadoop/hadoop-2.4.1/share/hadoop/common/lib/hadoop-lzo-0.4.20.jar
spark.driver.extraClassPath /data/hadoop/hadoop/hadoop-2.4.1/share/hadoop/common/lib/*
spark.kryoserializer.buffer.max 256m

另外也可以设置一下Spark的log4j配置文件,使得屏幕中不打印额外的INFO信息:
cp log4j.properties.template log4j.properties
修改一行
log4j.rootCategory=WARN, console

启动一个spark应用

执行 ./bin/spark-shell

输出将包括如下所示

浏览器访问当前机器的8088端口,将可以看到当前启动的driver的web界面,如下:

点击’Environment’标签,将可以看到相关环境变量和属性的值.

浏览器访问YARN的管理页面,可以看到有一个SPARK应用正在运行(如下),至此spark就可以跑在YARN上了.

3.运行模式

Spark on YARN有两种运行模式cluster和client,spark-shell和spark-sql交互式的应用只支持client模式.
两种模式区别如下:

从广义上讲,yarn-cluster适用于生产环境;而yarn-client适用于交互和调试,也就是希望快速地看到application的输出。

可以参考这篇博客:Spark:Yarn-cluster和Yarn-client区别与联系(http://www.iteblog.com/archives/1223).

4.参考文献:

Running Spark on YARN
http://spark.apache.org/docs/latest/running-on-yarn.html