由于目前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