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
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