Spark HistoryServer服务迁移

  由于目前spark的历史服务所在的机器内存不太够,导致spark的hisstory server经常卡死。所以决定将该服务迁移到一台内存稍微多点的机器上,并将historyserver内存由原来的3g调整为8g,下面开始记录一下本次操作过程的步骤,方便以后进行查阅. 我们的生产环境采用的是spark on yarn的模式.

      1. 首先查看一下原本historyserver的启动用户:启动用户为hadoop, 所以后续的进程启动也应该是hadoop用户,这点绝对不能错

      2. 将spark文件夹copy到hadoop2-client机器,修改权限为chown -R hadoop:hadoop spark-2.1.0-bin-hadoop2.7/ , 后续切换到hadoop账号进行操作

      3. 开始修改spark的配置文件:

    配置spark-defaults.conf:

      spark.eventLog.enabled=true

      spark.eventLog.compress=true

      spark.eventLog.dir=hdfs://xxx/sparklogs ##sparklogs目录要提前创建

      spark.yarn.historyServer.address=hadoop2-client:18080

      ##hadoop2-client:18080指的是historyserver的地址,所以要在hadoop2-client上启动historyserver

    注:在conf/spark-defaults.conf配置文件中,每行是key-value对,中间可以是用空格进行分割,也可以直接用等号进行分割;

 

    配置spark-env.sh

      export SPARK_DAEMON_MEMORY=8g ##设置histroyserver的内存

      export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=18080 -Dspark.history.retainedApplications=50 -Dspark.history.fs.logDirectory=hdfs://xxx/sparklogs"

    注:以spark.history开头的需要配置在spark-env.sh中的SPARK_HISTORY_OPTS,以spark.eventLog开头的配置在spark-defaults.conf;

 

    4.停止原来的historyserver,然后将修改完成之后将这两个配置文件copy到其它机器的spark配置中

 

    5.在新的机器上启动Historyserver:

      启动:在hadoop2-client上执行:sbin/start-history-server.sh ###进程名为HistoryServer

 

一个问题:spark.history.fs.logDirectory和spark.eventLog.dir指定目录有啥区别?

     spark.eventLog.dir:Application在运行过程中所有的信息均记录在该属性指定的路径下;

     spark.history.fs.logDirectory:Spark History Server页面只展示该指定路径下的信息;

参考:
http://blog.csdn.net/guanjunjian59/article/details/51427044
http://blog.csdn.net/oufuji/article/details/50370490

原文地址:https://www.cnblogs.com/wuxilc/p/9219069.html