spark安装教程(yarn模式)

1,164 阅读2分钟

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

  1. 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配置

  1. 修改/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
    
  2. 启动HDFS集群

     cd /home/hadoop/app/hadoop-2.6.0-cdh5.15.1/sbin
     ./start-all.sh
    
  3. 提交任务
    注意如果出现报错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
    
  4. 查看任务
    进入yarn的webUI http://192.168.231.200:8088/ 点击history,查看历史

spark配置历史服务

  1. 修改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的历史服务

  1. 修改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
    
  2. 重启Spark历史服务

sbin/stop-history-server.sh
sbin/start-history-server.sh 
  1. 查看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日志监控

  1. 需要开启开启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>
  1. 开启historyserver服务
 cd /home/hadoop/app/hadoop-2.6.0-cdh5.15.1/sbin
 ./mr-jobhistory-daemon.sh start historyserver

参考文献

blog.csdn.net/dwt14154033…