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"