2.4 Yarn 模式
2.4.1 Yarn 模式概述
Spark 客户端可以直接连接 Yarn,不需要额外构建Spark集群。
有 yarn-client
和 yarn-cluster
两种模式,主要区别在于:Driver 程序的运行节点不同。
yarn-client:
Driver程序运行在客户端,适用于交互、调试,希望立即看到app的输出yarn-cluster:
Driver程序运行在由 RM(ResourceManager)启动的 AM(AplicationMaster)上, 适用于生产环境。
工作模式介绍:
2.4.2 Yarn 模式配置
步骤1: 修改 hadoop 配置文件 yarn-site.xml, 添加如下内容:
由于咱们的测试环境的虚拟机内存太少, 防止将来任务被意外杀死, 配置所以做如下配置.
<!--是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认是true -->
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<!--是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是true -->
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
修改后分发配置文件.
步骤2: 复制 spark, 并命名为spark-yarn
cp -r spark-standalone spark-yarn
步骤3: 修改spark-evn.sh
文件
去掉 master 的 HA 配置, 日志服务的配置保留着.
并添加如下配置: 告诉 spark 客户端 yarn 相关配置
YARN_CONF_DIR=/opt/module/hadoop-2.7.2/etc/hadoop
步骤4: 执行一段程序
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode client \
./examples/jars/spark-examples_2.11-2.1.1.jar 100
2.4.3 日志服务
在前面的页面中点击 history 无法直接连接到 spark 的日志.
可以在spark-default.conf
中添加如下配置达到上述目的
spark.yarn.historyServer.address=hadoop201:18080
spark.history.ui.port=18080
可能碰到的问题:
如果在 yarn 日志端无法查看到具体的日志, 则在yarn-site.xml
中添加如下配置
<property>
<name>yarn.log.server.url</name>
<value>http://hadoop201:19888/jobhistory/logs</value>
</property>