Spark1.0.0 history server 配置

      在執行Spark應用程序的時候,driver會提供一個webUI給出應用程序的執行信息。但是該webUI隨着應用程序的完畢而關閉port,也就是說,Spark應用程序執行完後,將沒法查看應用程序的歷史記錄。Spark history server就是爲了應對這樣的狀況而產生的。經過配置,Spark應用程序在執行完應用程序以後,將應用程序的執行信息寫入指定文件夾。而Spark history server可以將這些執行信息裝載並以web的方式供用戶瀏覽。
      要使用history server,對於提交應用程序的client需要配置下面參數(在conf/spark-defaults.conf中配置):
  • spark.eventLog.enabled   是否記錄Spark事件,用於應用程序在完畢後重構webUI。
  • spark.eventLog.dir   假設spark.eventLog.enabled爲 true,該屬性爲記錄spark事件的根文件夾。在此根文件夾中,Spark爲每個應用程序建立分文件夾。並將應用程序的事件記錄到在此文件夾中。

    用戶可以將此屬性設置爲HDFS文件夾,以便history server讀取歷史記錄文件。python

  • 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的公網地址,假設不設置,可以用內網地址來訪問。

    默以爲空。git

  • SPARK_HISTORY_OPTS   history server的屬性設置。屬性如如下所看到的。默以爲空。
 屬性名稱  默認  含義
 spark.history.updateInterval  10 以秒爲單位。多長時間history server顯示的信息進行更新。

每次更新都會檢查持久層事件日誌的不論什麼變化。github

 spark.history.retainedApplications  250 在history server上顯示的最大應用程序數量,假設超過這個值,舊的應用程序信息將被刪除。
 spark.history.ui.port  18080 history server的默認訪問port
 spark.history.kerberos.enabled  false 是否使用kerberos方式登陸訪問history server,對於持久層位於安全集羣的HDFS上是實用的。

假設設置爲true,就要配置如下的兩個屬性。web

 spark.history.kerberos.principal  空 用於history server的kerberos主體名稱
 spark.history.kerberos.keytab  空 用於history server的kerberos 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:實驗計劃

 
B:集羣配置並啓動history server
虛擬機羣:
[root@hadoop1 ~]# su - hadoop
[hadoop@hadoop1 ~]$ cd /app/hadoop/hadoop220
[hadoop@hadoop1 hadoop220]$ sbin/start-dfs.sh
[hadoop@hadoop1 hadoop220]$ bin/hdfs dfs -mkdir /sparklogs
[hadoop@hadoop1 hadoop220]$ sbin/start-yarn.sh
[hadoop@hadoop1 hadoop220]$ cd ../spark100/conf
[hadoop@hadoop1 conf]$ cp spark-defaults.conf.template spark-defaults.conf
[hadoop@hadoop1 conf]$ vi spark-defaults.conf
[hadoop@hadoop1 conf]$ cat spark-defaults.conf
spark.eventLog.enabled  true
spark.eventLog.dir      hdfs://hadoop1:8000/sparklogs
spark.yarn.historyServer.address	hadoop1:18080
[hadoop@hadoop1 conf]$ cd ..
[hadoop@hadoop1 spark100]$ sbin/start-all.sh
[hadoop@hadoop1 spark100]$ sbin/start-history-server.sh hdfs://hadoop1:8000/sparklogs

C:client配置
mmicky@wyy:~$ su - hadoop
hadoop@wyy:~$ cd /app/hadoop/spark100
hadoop@wyy:/app/hadoop/spark100$ cd conf
hadoop@wyy:/app/hadoop/spark100/conf$ cp spark-defaults.conf.template spark-defaults.conf
hadoop@wyy:/app/hadoop/spark100/conf$ vi spark-defaults.conf
hadoop@wyy:/app/hadoop/spark100/conf$ cat spark-defaults.conf
spark.eventLog.enabled  true
spark.eventLog.dir      hdfs://hadoop1:8000/sparklogs
spark.yarn.historyServer.address	hadoop1:18080
hadoop@wyy:/app/hadoop/spark100/conf$ cd ..

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

E:虛擬機羣提交python程序
[hadoop@hadoop1 spark100]$ ./bin/spark-submit --master local[*] --executor-memory 2g --driver-memory 1g pi.py
[hadoop@hadoop1 spark100]$ ./bin/spark-submit --master spark://hadoop1:7077 --executor-memory 2g --driver-memory 1g pi.py
[hadoop@hadoop1 spark100]$ ./bin/spark-submit --master yarn-client --executor-memory 2g --driver-memory 1g pi.py
[hadoop@hadoop1 spark100]$ ./bin/spark-submit --master yarn-cluster--executor-memory 2g --driver-memory 1g pi.py

F:檢查history server工做狀況
用瀏覽器打開hadoop1:18080

 點隨意應用程序,可以查看應用程序執行信息:

 
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 
相關文章
相關標籤/搜索