分享

Spark1.0.0 history server 配置

本帖最后由 xioaxu790 于 2014-8-21 17:12 编辑
问题导读
1、Spark history server的作用是什么?
2、history server的服务端,需要配置哪些环境变量?
3、为什么直接使用Spark1.0.0源代pi.py,就无法显示其应用程序?



在运行Spark应用程序的时候,driver会提供一个webUI给出应用程序的运行信息,但是该webUI随着应用程序的完成而关闭端口,也就是说,Spark应用程序运行完后,将无法查看应用程序的历史记录。Spark history server就是为了应对这种情况而产生的,通过配置,Spark应用程序在运行完应用程序之后,将应用程序的运行信息写入指定目录,而Spark history server可以将这些运行信息装载并以web的方式供用户浏览。

      要使用history server,对于提交应用程序的客户端需要配置以下参数(在conf/spark-defaults.conf中配置):
spark.eventLog.enabled    是否记录Spark事件,用于应用程序在完成后重构webUI。
spark.eventLog.dir            如果spark.eventLog.enabled为 true,该属性为记录spark事件的根目录。在此根目录中,Spark为每个应用程序创建分目录,并将应用程序的事件记录到在此目录中。用户可以将此属性设置为HDFS目录,以便history server读取历史记录文件。
spark.yarn.historyServer.address    Spark history server的地址(不要加http://)。这个地址会在Spark应用程序完成后提交给YARN RM,然后RM将信息从RM UI写到history server UI上。

      而对于history server的服务端,可以配置以下环境变量:
SPARK_DAEMON_MEMORY   分配给history server的内存大小,默认512m。
SPARK_DAEMON_JAVA_OPTS   history server的JVM选择,默认为空。
SPARK_PUBLIC_DNS   history server的公网地址,如果不设置,可以用内网地址来访问。默认为空。
SPARK_HISTORY_OPTS   history server的属性设置,属性如下面所示。默认为空。
  
属性名称
  
默认
含义
spark.history.updateInterval
10
以秒为单位,多长时间history server显示的信息进行更新。每次更新都会检查持久层事件日志的任何变化。
spark.history.retainedApplications
250
history server上显示的最大应用程序数量,如果超过这个值,旧的应用程序信息将被删除。
spark.history.ui.port
18080
history server的默认访问端口
spark.history.kerberos.enabled
false
是否使用kerberos方式登录访问history  server,对于持久层位于安全集群的HDFS上是有用的。如果设置为true,就要配置下面的两个属性。
spark.history.kerberos.principal
用于history serverkerberos主体名称
spark.history.kerberos.keytab
用于history serverkerberos keytab文件位置
spark.history.ui.acls.enable
false
授权用户查看应用程序信息的时候是否检查acl。如果启用,无论应用程序的spark.ui.acls.enable怎么设置,都要进行授权检查,只有应用程序所有者和spark.ui.view.acls指定的用户可以查看应用程序信息;如果禁用,不做任何检查。



2:实验环境
实验环境参见Spark1.0.0 开发环境快速搭建
实验代码参见使用IntelliJ IDEA开发Spark1.0.0应用程序 的SparkPi和 Spark1.0.0源代码/examples/src/main/python/pi.py 在文件结尾增加了一句sc.stop()) 。


3:实验
A:实验计划
1.png


B:集群配置并启动history server
虚拟机群:
  1. [root@hadoop1 ~]# su - hadoop
  2. [hadoop@hadoop1 ~]$ cd /app/hadoop/hadoop220
  3. [hadoop@hadoop1 hadoop220]$ sbin/start-dfs.sh
  4. [hadoop@hadoop1 hadoop220]$ bin/hdfs dfs -mkdir /sparklogs
  5. [hadoop@hadoop1 hadoop220]$ sbin/start-yarn.sh
  6. [hadoop@hadoop1 hadoop220]$ cd ../spark100/conf
  7. [hadoop@hadoop1 conf]$ cp spark-defaults.conf.template spark-defaults.conf
  8. [hadoop@hadoop1 conf]$ vi spark-defaults.conf
  9. [hadoop@hadoop1 conf]$ cat spark-defaults.conf
  10. spark.eventLog.enabled  true
  11. spark.eventLog.dir      hdfs://hadoop1:8000/sparklogs
  12. spark.yarn.historyServer.address        hadoop1:18080
  13. [hadoop@hadoop1 conf]$ cd ..
  14. [hadoop@hadoop1 spark100]$ sbin/start-all.sh
  15. [hadoop@hadoop1 spark100]$ sbin/start-history-server.sh hdfs://hadoop1:8000/sparklogs
复制代码


C:客户端配置
  1. mmicky@wyy:~$ su - hadoop
  2. hadoop@wyy:~$ cd /app/hadoop/spark100
  3. hadoop@wyy:/app/hadoop/spark100$ cd conf
  4. hadoop@wyy:/app/hadoop/spark100/conf$ cp spark-defaults.conf.template spark-defaults.conf
  5. hadoop@wyy:/app/hadoop/spark100/conf$ vi spark-defaults.conf
  6. hadoop@wyy:/app/hadoop/spark100/conf$ cat spark-defaults.conf
  7. spark.eventLog.enabled  true
  8. spark.eventLog.dir      hdfs://hadoop1:8000/sparklogs
  9. spark.yarn.historyServer.address        hadoop1:18080
  10. hadoop@wyy:/app/hadoop/spark100/conf$ cd ..
复制代码


D:客户端提交scala程序
  1. hadoop@wyy:/app/hadoop/spark100$ ./bin/spark-submit --master local[*] --class week2.SparkPi --executor-memory 2g --driver-memory 1g week2.jar
  2. hadoop@wyy:/app/hadoop/spark100$ ./bin/spark-submit --master spark://hadoop1:7077 --class week2.SparkPi --executor-memory 2g --driver-memory 1g week2.jar
  3. hadoop@wyy:/app/hadoop/spark100$ ./bin/spark-submit --master yarn-client --class week2.SparkPi --executor-memory 2g --driver-memory 1g week2.jar
  4. hadoop@wyy:/app/hadoop/spark100$ ./bin/spark-submit --master yarn-cluster --class week2.SparkPi --executor-memory 2g --driver-memory 1g week2.jar
复制代码


E:虚拟机群提交python程序
  1. [hadoop@hadoop1 spark100]$ ./bin/spark-submit --master local[*] --executor-memory 2g --driver-memory 1g pi.py
  2. [hadoop@hadoop1 spark100]$ ./bin/spark-submit --master spark://hadoop1:7077 --executor-memory 2g --driver-memory 1g pi.py
  3. [hadoop@hadoop1 spark100]$ ./bin/spark-submit --master yarn-client --executor-memory 2g --driver-memory 1g pi.py
  4. [hadoop@hadoop1 spark100]$ ./bin/spark-submit --master yarn-cluster--executor-memory 2g --driver-memory 1g pi.py
复制代码


F:检查history server工作情况
用浏览器打开hadoop1:18080
1.png

点任意应用程序,可以查看应用程序运行信息:
1.png


4:TIPS
driver在SparkContext使用stop()方法后才将完整的信息提交到指定的目录,如果不使用stop()方法,即使在指定目录中产生该应用程序的目录,history server也将不会加载该应用程序的运行信息。所以如果直接使用Spark1.0.0源代码/examples/src/main/python/pi.py,就无法显示其应用程序,在最后加上一行sc.stop()后,就可以显示。
history server增强版代码可以参看https://github.com/apache/spark/pull/718/files#r13398770


没找到任何评论,期待你打破沉寂

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条