概述
Spark 可以直接连接 Yarn ,不需要额外构建Spark 集群。有 yarn-client 和 yarn-cluster 两种模式,主要区别在于:Driver 程序的运行节点。
- yarn-client:Driver 程序运行在客户端,适用于交互、调试,希望立即看到 app 的输出
- yarn-cluster(集群):Driver 程序运行在RM(ResourceManager)启动的AP(APPmaster) 适用于生成环境。
配置
修改 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>
修改 Spark/conf 下的 spark-env.sh,添加 Hadoop 的 etc/hadoop ,修改完记得 source
YARN_CONF_DIR=/usr/local/src/hadoop/hadoop-2.6.0/etc/hadoop
配置集群就分发,不是集群就不用分发
// 分发 spark-env.sh
scp spark-env.sh slave1:/usr/local/src/spark/spark-2.0.0-bin-hadoop2.6/conf/
scp spark-env.sh slave2:/usr/local/src/spark/spark-2.0.0-bin-hadoop2.6/conf/
// 分发 yarn-site.xml
scp yarn-site.xml slave1:/usr/local/src/hadoop/hadoop-2.6.0/etc/hadoop/
scp yarn-site.xml slave2:/usr/local/src/hadoop/hadoop-2.6.0/etc/hadoop/
提交一个例子测试(注意启动Hadoop 和 Yarn)
bin/spark-submit \ --class org.apache.spark.examples.SparkPi \ --master yarn \ --deploy-mode client \ ./examples/jars/spark-examples_2.11-2.0.0.jar \ 100
日志查看
因为在Spark 计算,Yarn 调度资源,Yarn不能获取到 Spark的执行日志,所以需要配置一下
修改配置文件 Spark/conf下的 spark-defaults.conf
如下
首先创建好存放目录hadoop fs -mkdir /historyserverforSpark
park.yarn.historyServer.address=master:18080 spark.history.ui.port=18080 spark.eventLog.enabled=true spark.eventLog.dir=hdfs://master:9000/historyserverforSpark spark.history.fs.logDirectory=hdfs://master:9000/historyserverforSpark
重启spark历史服务
// 关闭
sbin/stop-history-server.sh
// 开启
sbin/start-history-server.sh
提交任务到Yarn执行
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode client \
./examples/jars/spark-examples_2.11-2.0.0.jar \
100
Web页面查看日志
版权声明:《 Spark Yarn 运行模式 》为明妃原创文章,转载请注明出处!
最后编辑:2020-2-13 05:02:53