我有一个4 ubuntu 14.04机器群集,我正在设置为hadoop 2.7预先构建的spark 2.1.0,以便在hadoop 2.7.3之上运行,我正在配置它以使用纱线。我得到的每个节点都运行jps:
没有纱线洗牌配置
./bin/spark-shell --master yarn --deploy-mode client
在我的node-1中调用时启动就好了。
为了配置外部随机服务,我读到了这个:http://spark.apache.org/docs/2.1.0/running-on-yarn.html#configuring-the-external-shuffle-service 我所做的是:
在yarn-site.xml中添加了以下属性:
<property>
<name>yarn.nodemanager.aux-services</name>
<value>spark_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.spark_shuffle.class</name>
<value>org.apache.spark.network.yarn.YarnShuffleService</value>
</property>
<property>
<name>yarn.application.classpath</name>
<value>/usr/local/spark/spark-2.1.0-bin-hadoop2.7/yarn/spark-2.1.0-yarn-shuffle.jar</value>
</property>
我在这个文件中有其他属性。正如我所说,让这三个属性离开,让spark-shell --master yarn --deploy-mode client
正常启动。
我的spark-default.conf是:
spark.master spark://singapura:7077
spark.executor.memory 4g
spark.driver.memory 2g
spark.eventLog.enabled true
spark.eventLog.dir hdfs://singapura:8020/spark/logs
spark.history.fs.logDirectory hdfs://singapura:8020/spark/logs
spark.history.provider org.apache.spark.deploy.history.FsHistoryProvider
spark.serializer org.apache.spark.serializer.KryoSerializer
spark.dynamicAllocation.enabled true
spark.shuffle.service.enabled true
spark.scheduler.mode FAIR
spark.yarn.stagingDir hdfs://singapura:8020/spark
spark.yarn.jars=hdfs://singapura:8020/spark/jars/*.jar
spark.yarn.am.memory 2g
spark.yarn.am.cores 4
所有节点都具有相同的路径。 singapura
是我的节点-1。它已经在/etc/hosts
中设置,nslookup获取正确的ip。这里的机器名称不是问题。
所以,我发生了什么:当我将这3个属性添加到我的yarn-site.xml并启动spark shell时,它会在没有太多输出的情况下卡住。
localuser@singapura:~$ /usr/local/spark/spark-2.1.0-bin-hadoop2.7/bin/spark-shell --master yarn --deploy-mode client
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
我等待,等待等等,打印出来的更多内容。我必须杀死它并删除暂存目录(如果我不删除它,我下次调用它时会得到WARN yarn.Client: Failed to cleanup staging dir
。