天天看點

一文講透sparkHistoryServer與yarnHistoryServer關系

1、spark history 和 yarn history 的差別?

Spark History Server 和 YARN History Server 是用于檢視和分析Spark和YARN 應用程式的執行情況的兩個不同的工具。

Spark曆史伺服器是專門用于Spark應用程式的工具,它提供了一個界面,可以檢視Spark應用程式的執行情況,包括執行時間、階段狀态、任務資訊等。

YARN曆史伺服器是一個針對YARN(Hadoop生态系統中的資料總管)應用程式的工具。它提供了一個界面,可以檢視YARN應用程式的執行情況,包括使用的資源、任務執行時間等。

是以,Spark曆史伺服器專門用于Spark應用程式,而YARN曆史伺服器專門用于YARN應用程式。如果你想要檢視和分析Spark應用程式的執行情況,則應使用Spark曆史伺服器;如果你想要檢視和分析YARN應用程式的執行情況,則應使用YARN曆史伺服器。

2、SparkHistoryServer是否可以獨立啟動?

spark history server 使用時需要先開啟 yarn history server嗎?

不需要。Spark曆史伺服器是獨立于YARN曆史伺服器運作的。你可以在不開啟YARN曆史伺服器的情況下使用Spark曆史伺服器,也可以在開啟YARN曆史伺服器的情況下使用Spark曆史伺服器。它們之間沒有直接關系。

注意:如果你使用的是Spark on YARN模式,則需要配置Spark曆史伺服器以通路YARN曆史伺服器上的日志,以便能夠檢視Spark on YARN應用程式的執行情況。

3、sparkHistoryServer中檢視executor日志為何要跳轉到MR-HistoryServer?

雖然spark和MR的模型不同,都有自己的historyserver, 但是有一個是相通的,就是都是在YARN上運作, 每個container有統一的日志存放位址;

YARN在這裡做了一個容易讓人混淆的事情,就是YARN把container日志查詢和檢視的方式,做到MR的historyserver中了.

相當于是MR的historyserver提供了一個功能: 根據containerid或者applicationid,查詢日志.

是以,YARN提供了yarn.log.server.url參數,指定查詢日志的url,就是下面的配置:

<property>
        <name>yarn.log.server.url</name>
         <value>http://localhost:19888/jobhistory/logs/</value>
     </property>
           

由于是YARN提供的,是以這個配置項放在: yarn-site.xml裡.

是以,就好了解官方文檔中如下的話了:

1 The logs are also available on the Spark Web UI under the Executors Tab. 
   這些日志也可以在Spark Web UI的Executors頁籤下找到。

2 You need to have both the Spark history server and the MapReduce history server running and configure yarn.log.server.url in yarn-site.xml properly. The log URL on the Spark history server UI will redirect you to the MapReduce history server to show the aggregated logs.
 您需要運作Spark曆史伺服器和MapReduce曆史伺服器,并在yarn-site.xml中正确配置yarn.log.server.url。Spark曆史伺服器UI上的日志URL會将您重定向到MapReduce曆史伺服器,以顯示聚合的日志。
           

如果配置了上面的參數, 在Spark的history server中的"Executors"Tab頁面, 可以幫你重定向到MapReduce history server中以及聚合的日志.

4、如何配置SparkHistoryServer?

配置spark-defualt.conf檔案

spark.eventLog.enabled           true
spark.eventLog.dir               hdfs://bigdataha/bdp/eventLog
           

注意 spark.eventLog.dir 需要我們手動建立,最好chmod一下權限

如果叢集hadoop環境需要kerberos認證,參考官網配置:https://spark.apache.org/docs/3.3.1/monitoring.html#spark-history-server-configuration-options

5、啟停spark history server 服務

sh sbin/start-history-server.sh
sh sbin/stop-history-server.sh
           

6、檢視history ui

一文講透sparkHistoryServer與yarnHistoryServer關系

7、檢視結束的spark-executor日志

8、關于spark_history_opts參數

網上經常說需要再spark-env.sh中配置spark_history_opts參數

# Configuration for the Spark History Server
# Optional: sets the URL for the Spark history server to listen on, if not set defaults to 0.0.0.0:18080
export SPARK_HISTORY_OPTS="$SPARK_HISTORY_OPTS -Dspark.history.ui.port=18080"

# Optional: sets the location of the Spark event logs that the history server reads, if not set defaults to file:/tmp/spark-events
export SPARK_HISTORY_OPTS="$SPARK_HISTORY_OPTS -Dspark.history.fs.logDirectory=hdfs://your-hdfs-cluster/spark/applicationHistory"

           

解釋:

SPARK_HISTORY_OPTS是一個環境變量,用于指定啟動Spark曆史伺服器時的選項。這些選 項将用于設定Spark曆史伺服器的記憶體大小、運作時的日志級别等。

下面是一個SPARK_HISTORY_OPTS變量的示例:

在這個示例中,我們将Spark曆史伺服器的Web UI監聽端口設定為18080,并限制保留的應用程式數量為10。

注意:SPARK_HISTORY_OPTS變量通常用于設定Spark曆史伺服器的運作時參數,而不是用于配置Spark曆史伺服器本身。

是以,不配置SPARK_HISTORY_OPTS也能檢視Spark曆史作業。SPARK_HISTORY_OPTS僅用于指定啟動Spark曆史伺服器時的選項,并不影響檢視曆史作業的功能。

在沒有配置SPARK_HISTORY_OPTS的情況下,Spark曆史伺服器将使用預設的配置啟動,你仍然可以通過浏覽器通路Spark曆史伺服器并檢視曆史作業。

9、關于曆史伺服器儲存多久的application和曆史檔案是否壓縮等配置

spark.history.updateInterval
#預設值:10,以秒為機關,更新日志相關資訊的時間間隔

spark.history.retainedApplications
#預設值:50,在記憶體中儲存Application曆史記錄的個數,如果超過這個值,舊的應用程式資訊将被删除,當再次通路已被删除的應用資訊時需要重新建構頁面。

spark.history.ui.port
#預設值:18080,HistoryServer的web端口

spark.history.ui.acls.enable
#預設值:false,授權使用者檢視應用程式資訊的時候是否檢查acl。如果啟用,隻有應用程式所有者和spark.ui.view.acls指定的使用者可以檢視應用程式資訊;否則,不做任何檢查

spark.eventLog.compress 
#預設值:false,是否壓縮記錄Spark事件,前提spark.eventLog.enabled為true,預設使用的是snappy
           

更多配置參考官網:https://spark.apache.org/docs/3.3.1/monitoring.html#viewing-after-the-fact

繼續閱讀