spark安装教程(yarn模式)
配置环境
hadoop 版本 hadoop-2.6.0-cdh5.15.1
spark 版本 spark-2.4.8-bin-hadoop2.6
java 版本 jdk1.8.0_65
配置流程
使用yarn模式只需要在一台机器上安装spark即可,本文在namenode节点上所在机器安装spark
-
yarn配置
修改hadoop的配置文件/home/hadoop/app/hadoop-2.6.0-cdh5.15.1/etc/hadoop/yarn-site.xml,添加相关内容
因为测试环境虚拟机内存较少,防止执行过程进行被意外杀死,做如下配置,这个配置建议加上,之前没有加导致如下报错,后续加了配置之后运行完美org.apache.spark.shuffle.FetchFailedException: Failed to connect to s201/192.168.231.201:39838 org.apache.spark.shuffle.FetchFailedException: Failed to connect to s202/192.168.231.202:45209<!--是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认是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配置
-
修改/home/hadoop/app/spark-2.4.8-bin-hadoop2.6/conf/spark-env.sh,添加YARN_CONF_DIR配置
mv spark-env.sh.template spark-env.sh vi spark-env.sh <!-- spark-env.sh中写入--> YARN_CONF_DIR=/home/hadoop/app/hadoop-2.6.0-cdh5.15.1/etc/hadoop -
启动HDFS集群
cd /home/hadoop/app/hadoop-2.6.0-cdh5.15.1/sbin ./start-all.sh -
提交任务
注意如果出现报错java.lang.ClassNotFoundException的情况,一定要注意./examples/jars/spark-examples_2.11-2.1.1.jar地址是否正确,以及字符空格相关问题cd /home/hadoop/app/spark-2.4.8-bin-hadoop2.6 bin/spark-submit \ --class org.apache.spark.examples.SparkPi \ --master yarn \ ./examples/jars/spark-examples_2.11-2.4.8.jar \ 10 -
查看任务
进入yarn的webUI http://192.168.231.200:8088/ 点击history,查看历史
spark配置历史服务
- 修改spark-default.conf.template名称
cd /home/hadoop/app/spark-2.4.8-bin-hadoop2.6/conf mv spark-defaults.conf.template spark-defaults.conf <!--添加配置 --> YARN_CONF_DIR=/home/hadoop/app/hadoop-2.6.0-cdh5.15.1/etc/hadoop export SPARK_HISTORY_OPTS=" <!--webUI访问的端口号为18080 --> -Dspark.history.ui.port=18080 <!--指定历史服务器日志存储路径,需要和/home/hadoop/app/hadoop-2.6.0-cdh5.15.1/etc/hadoop/core-site.xml 中的fs.defaultFS 一致 --> -Dspark.history.fs.logDirectory=hdfs://s200:9000/spark_directory <!--指定保存Application历史记录的个数,如果超过这个值,旧的应用程序信息将被删除,这个是内存中的应用数,而不是页面上显示的应用数 --> -Dspark.history.retainedApplications=20"
Spark配置Yarn查看历史日志
由于希望从yarn的webUI中点击history,能够跳转到spark的任务管理界面,因此需要配置spark的历史服务
-
修改spark-defaults.conf配置文件
cd /home/hadoop/app/spark-2.4.8-bin-hadoop2.6/conf mv spark-defaults.conf.template spark-defaults.conf <!-- 添加如下配置--> spark.eventLog.enabled true spark.eventLog.dir hdfs://s200:9000/spark_directory spark.yarn.historyServer.address s200:18080 spark.history.ui.port 18080 -
重启Spark历史服务
sbin/stop-history-server.sh
sbin/start-history-server.sh
- 查看
yarn的 web-UI 进入yarn的webUI http://192.168.231.200:8088/ 点击history,这样就可以跳转到spark的UI的界面
Yarn的HistoryServer配置
点击Yarn-web界面的log,发现java.lang.Exception: Unknown container. Container either has not started ...Yarn日志监控
- 需要开启开启historyserver服务,配置如下
cd /home/hadoop/app/hadoop-2.6.0-cdh5.15.1/etc/hadoop
vim yarn-site.xml
<!--配置数据-->
<property>
<name>mapreduce.jobhistory.address</name>
<value>s200:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>s200:19888</value>
</property>
</configuration>
- 开启historyserver服务
cd /home/hadoop/app/hadoop-2.6.0-cdh5.15.1/sbin
./mr-jobhistory-daemon.sh start historyserver