使用yarn部署hadoop和spark
使用Yarn本地部署Hadoop
修改配置文件
首先修改mapred-sit.xml
文件:
cd /usr/local/hadoop/etc/hadoop
mv mapred-site.xml.template mapred-site.xml
修改为:
<configuration><property><name>mapreduce.framework.namename><value>yarnvalue>property>
configuration>
修改配置文件yarn-site.xml
&#xff1a;
<configuration><property><name>yarn.nodemanager.aux-servicesname><value>mapreduce_shufflevalue>property>
configuration>
重新启动
start-dfs.sh
和 start-yarn.sh
命令启动hadoop和yarn&#xff1a;
开启历史服务器&#xff0c;才能在Web中查看任务运行情况&#xff1a;
mr-jobhistory-daemon.sh start historyserver
再查看进程&#xff0c;多出NodeManager和ResourceManager两个进程&#xff1a;
如果以后在伪分布式模式下启动Hadoop的时候不想启动Yarn&#xff0c;务必把配置文件mapred-site.xml
重命名为mapred-site.xml.template
使用Yarn本地部署Spark
修改配置文件
cd /usr/local/spark/conf
vim spark-env.sh
添加&#xff1a;
export HADOOP_CONF_DIR&#61;/usr/local/hadoop/etc/hadoop
这样Spark就可以跑在YARN上了&#xff0c;也没必要启动spark的master和slaves服务&#xff0c;因为是靠yarn进行任务调度&#xff0c;所以直接提交任务即可&#xff1a;
spark-shell --master yarn-client
提示ERROR&#xff0c;这是由于JAVA8的问题&#xff0c;具体参考这里。
首先需要关闭hadoop和yarn&#xff1a;
stop-dfs.sh
stop-yarn.sh
在/usr/local/hadoop/etc/hadoop/
目录下修改yarn-site.xml
文件&#xff1a;
<property><name>yarn.nodemanager.pmem-check-enabledname><value>falsevalue>
property><property><name>yarn.nodemanager.vmem-check-enabledname><value>falsevalue>
property>
再次启动&#xff0c;成功&#xff1a;
在shell中运行例子&#xff1a;
val textFile &#61; sc.textFile("hdfs://localhost:9000/user/hadoop/input/k-means.dat")
textFile.first()
成功&#xff01;
使用yarn查看作业
在浏览器中查看
在浏览器中输入lcoalhost:8088
&#xff0c;在yarn中查看任务&#xff1a;
会发现spark的任务会提交到yarn&#xff0c;而无需启动master和slave节点。
使用hadoop提交
cd /usr/local/hadoop
hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar grep input output/yarn ‘dfs[a-z.]&#43;’
作业运行成功&#xff0c;在yarn中查看任务&#xff1a;
但是&#xff0c;无论该任务是否成功&#xff0c;在yarn中查看&#xff0c;只能知道这个container是否运行完&#xff0c;因此&#xff0c;需要通过logs进行查看任务的具体运行情况。
使用spark提交
只需要在master节点中添加master即可&#xff0c;例如&#xff1a;
spark-submit --class StuScore --master yarn StuScore-1.0.jar
注意&#xff1a;如果是自己编写的程序&#xff0c;不要在程序中将sparkcontext指定为local
查看yarn logs
在yarn-env.sh
中查看log的目录&#xff1a;
默认目录在/usr/local/hadoop/logs
里面&#xff1a;
可以发现application的log都存放在里面&#xff0c;现在可以根据web上展示的applicationID选择需要查看的log
关于yarn的log&#xff0c;可参考这里。