Spark-on-Yarn集群的搭建

Spark master/deploy mode说明

spark driver: 运⾏main函数并且新建SparkContext的程序,日志收集。对用户来说,最重要的体验就是当driver是本机时(deploy-mode=client模式),他们可以看到日志。

--deploy-mode: Whether to launch the driver program locally("client") or on one of the worker machines inside the cluster("cluster") (default:client)

--master: 资源管理选项,当选择是yarn时,由yarn管理资源。

deploy-mode模式对Spark on Yarn模式下Driver和ApplicationMaster的关系的影响:

Cluster: Driver位于ApplicationMaster进程中,我们需要通过Hadoop默认指定的8088端口来通过Web控制台查看当前Spark程序运行的信息。

Client: Driver为提交代码的机器上,此时ApplicationMaster依旧位于集群中且只负责资源的申请和launchExecutor,此时启动后的Executor并不会向ApplicationMaster进程注册,而是向Driver注册

安装步骤参考这篇文章, 非常详细: 
https://blog.csdn.net/chengyuqiang/article/details/77864246

启动语句

spark-shell --master yarn --deploy-mode client

文中提到运行后一个错误: ERROR spark.SparkContext: Error initializing SparkContext.

原因是YARN的分配给container的内存不够, 解决办法修改YARN的配置文件yarn-site.xml :

<property>        
	<name>yarn.nodemanager.vmem-check-enabled</name>        
	<value>false</value>        
	<description>Whether virtual memory limits will be enforced for containers</description>    
</property>    
<property>        
	<name>yarn.nodemanager.vmem-pmem-ratio</name>        
	<value>4</value>        
	<description>Ratio between virtual memory to physical memory when setting memory limits for containers</description>    
</property>

转者注:

1. 启动hadoop后等几分钟再启动Spark-on-yarn, 否则namenode还处于safe mode, 也可能导致错误

2. 单节点的集群, 需要额外配置一下spark-evn.sh, 加上红色的一行

HADOOP_CONF_DIR=/home/rav009/hadoop-2.8.0/etc/hadoop/
SPARK_LOCAL_IP="127.0.0.1"

posted @ 2018-06-28 14:14  爱知菜  阅读(12)  评论(0编辑  收藏  举报