天天看點

【大資料】yarn proxyserver 和 historyserver 講解

作者:大資料老司機

一、YARN Proxy 概述

Web應用程式代理是YARN的一部分。預設情況下,它将作為資料總管(RM)的一部分運作,但可以配置為以獨立模式運作。代理的原因是為了減少通過YARN進行基于網絡的攻擊的可能性。

  • 在YARN中,應用主機(AM)有責任提供web UI并将該連結發送到RM。這引發了許多潛在的問題。RM以受信任使用者的身份運作,通路該網址的人會将其及其提供給他們的連結視為受信任,而實際上AM是以不受信任使用者身份運作的,并且它提供給RM的連結可能指向任何惡意或其他内容。Web應用程式代理通過警告不擁有給定應用程式的使用者他們正在連接配接到不受信任的網站來減輕這種風險。
  • 除此之外,代理還試圖減少惡意AM可能對使用者造成的影響。它主要通過從使用者身上剝離cookie,并用一個提供登入使用者使用者名的cookie來替換它們。這是因為大多數基于網絡的身份驗證系統都會根據cookie來識别使用者。通過将此cookie提供給不受信任的應用程式,它打開了利用此cookie的可能性。如果cookie設計得當,那麼潛力應該相當小,但這隻是為了減少潛在的攻擊向量。

使用YARN Proxy,您可以做到以下幾點:

  • 檢視YARN叢集的基本資訊,包括作業的概述、cluster的Metrics和最近的作業曆史。
  • 檢視目前正在運作的作業清單,并對其進行管理。
  • 檢視每個NodeManager的概述,以及它們所在的機器的系統和硬體資源使用情況。
  • 檢視和搜尋叢集日志。
  • 檢視簡化的配置和狀态資訊,以及錯誤報告。
  • 使用REST API進行遠端調用和管理。

yarn proxyserver 配置參數 yarn.web-proxy.address。用于分發Resource Manager通路請求。

從Resourcemanager上點選正在執行的app,會跳轉到 yarn.web-proxy.address,這裡展現正在執行的job資訊,job執行結束後,會跳轉到historyserver上;若是沒有配置 yarn.web-proxy.address,則這個功能會內建到RM中。

【大資料】yarn proxyserver 和 historyserver 講解

官方文檔:https://hadoop.apache.org/docs/stable/hadoop-yarn/hadoop-yarn-site/WebApplicationProxy.html

二、環境準備

如果已經有了環境了,可以忽略,如果想快速部署環境進行測試可以參考我這篇文章:通過 docker-compose 快速部署 Hive 詳細教程

# 登入容器
docker exec -it hive-hiveserver2 bash
# 連接配接hive
beeline -u jdbc:hive2://hive-hiveserver2:10000  -n hadoop
           

三、Hadoop 中的 historyserver

1)MapReduce Job History

MapReduce Job History,通常簡稱為“Job History”,是Hadoop MapReduce架構的一部分,用于記錄已完成作業(job)的資訊,包括它們的輸入輸出、計數器、任務(task)嘗試次數和任務失敗原因等。By預設情況下,Job History将日志聚合到本地檔案系統,可以通過啟用HistoryServer來統一管理和監視所有作業的曆史記錄。

2)Spark History Server

Spark通過Spark History Server記錄了應用程式的曆史記錄。Spark History Server是一個可選的Web界面,用于檢視已完成的應用程式的事件和中繼資料。Spark叢集中的所有工作節點都會将應用程式的事件資訊存儲在本地磁盤上。當應用程式完成後,它們的事件資訊會被拷貝到Spark History Server節點所在的位置。

Spark History Server預設情況下會監聽 18080 端口,您可以在浏覽器中通路http://<host>:18080檢查已完成的應用程式。

Spark History Server提供了以下幾種功能:

  • 檢視已完成應用程式的摘要資訊,包括完成時間、運作時間、狀态、應用程式ID和應用程式名稱等。
  • 檢視應用程式的所有階段和任務的摘要資訊,包括階段ID、父級階段、任務ID、任務類型和任務執行時間等。
  • 檢視應用程式的計數器資訊,了解它們所使用的資源。
  • 檢視應用程式執行期間的事件資訊,例如Spark應用程式的RDD、計算圖或輸出操作,以及在記憶體、磁盤或網絡中執行的任務。

總之,Spark History Server提供了一種簡單的方法,可以檢視Spark應用程式的曆史記錄,包括成功或失敗的應用程式的事件和中繼資料,以便進行分析和性能調整。

3)Flink History Server

Flink也有類似于Spark的History Server功能來記錄應用程式的曆史記錄。Flink History Server是一個用于檢視和管理已完成的Flink應用程式的Web界面。

Flink History Server會收集已完成的應用程式的事件資訊和日志并儲存在HDFS上。Flink曆史伺服器本身本身是一個獨立的Flink應用程式,它會檢索、解析和存儲存儲在HDFS上的事件資訊和日志,使用者可以在Web界面中檢視所有已完成應用程式的詳細資訊和日志。

Flink History Server提供以下幾個功能:

  • 檢視已完成應用程式的總體摘要資訊,包括DAG、計數器、開始時間、結束時間和狀态等,可以從每個應用程式的監視視圖連結到此處。
  • 檢視已完成應用程式的詳細摘要資訊,包括自定義計數器和速率名額等,同時還提供檢視作業執行計劃、Web UI日志和單個任務的摘要資訊的連結。
  • 通過不同的方式搜尋和過濾應用程式,例如按作業ID、作業名稱、狀态、起始日期和結束日期等查詢。
  • 檢視曆史記錄詳情,可以檢視Flink任務、操作符和實體執行計劃的完整概覽,并提供任務日志和操作符跟蹤的連結。

總之,Flink History Server是一個很有用的工具,可以允許您檢視和分析Flink作業的執行情況。它提供了豐富的功能,如過濾、搜尋、摘要等,使得您可以更好地了解應用程式的執行過程。

四、相關配置

1)yarn proxyserver 配置

配置如下:

$HADOOP_HOME/etc/hadoop/yarn-site.xml

<configuration>
...
  <property>
    <name>yarn.web-proxy.address</name>
    <value>hadoop-yarn-proxyserver:9111</value>
  </property>
...
</configuration>
           

2)historyserver 配置

1、MapReduce Job History

mapreduce.jobhistory.address 和 mapreduce.jobhistory.webapp.address 都是與MapReduce作業曆史記錄(JobHistory)相關的配置屬性。它們分别指定JobHistory伺服器運作的位址(IP位址或域名)和端口号,以及Web界面的位址和端口号。

  • mapreduce.jobhistory.address 用于指定JobHistory伺服器的位址(IP位址或域名)和端口号,讓MapReduce架構知道将作業曆史記錄發送到哪個伺服器。例如:
  • mapreduce.jobhistory.webapp.address 用于指定JobHistory伺服器的Web界面位址和端口号,讓使用者可以通過Web通路作業曆史記錄。例如:

配置檔案:$HADOOP_HOME/etc/hadoop/mapred-site.xml

<configuration>
...
  <!-- MR程式曆史服務位址 -->
  <property>
    <name>mapreduce.jobhistory.address</name>
    <value>hadoop-mr-historyserver:10020</value>
  </property>

  <!-- MR程式曆史服務web端位址 -->
  <property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>hadoop-mr-historyserver:19888</value>
  </property>
...
</configuration>
           

2、Spark History Server

修改 spark-defaults.conf,添加如下内容:

spark.eventLog.enabled           true
spark.eventLog.dir               hdfs://hadoop-hdfs-nn:9000/sparkhistory
spark.driver.memory              64g
spark.eventLog.compress true
           

修改spark-env.sh,添加如下内容:

export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=7777 -Dspark.history.fs.logDirectory=hdfs://hadoop-hdfs-nn:9000/sparkhistory"
           

3、Flink History Server

Flink 提供了 history server,可以在相應的 Flink 叢集關閉之後查詢已完成作業的統計資訊。此外,它暴露了一套 REST API,該 API 接受 HTTP 請求并傳回 JSON 格式的資料。

配置項 jobmanager.archive.fs.dir 和 historyserver.archive.fs.refresh-interval 需要根據 作業存檔目錄 和 重新整理作業存檔目錄的時間間隔 進行調整。

# 監視以下目錄中已完成的作業
historyserver.archive.fs.dir: hdfs:///hadoop-hdfs-nn:9000/flinkhistory
historyserver.web.address: 0.0.0.0:8082
# 每 10 秒重新整理一次
historyserver.archive.fs.refresh-interval: 10000
           

五、yarn proxyserver 和 historyserver 啟停

1)yarn proxyserver 啟停

$HADOOP_HOME/bin/yarn --daemon start proxyserver

$HADOOP_HOME/bin/yarn --daemon stop proxyserver
           

2)historyserver 啟停

1、MapReduce Job History 啟停

$HADOOP_HOME/bin/mapred --daemon start historyserver
$HADOOP_HOME/bin/mapred --daemon stop historyserver
           

2、Spark History Server 啟停

$SPARK_HOME/sbin/start-history-server.sh
$SPARK_HOME/sbin/stop-history-server.sh
           
【溫馨提示】start-history-server.sh 腳本預設情況下啟動Spark History Server隻是将檔案存儲在/tmp/spark-events目錄下,這是本地檔案系統路徑。如果您沒有在配置檔案中指定spark.history.fs.logDirectory屬性,則Spark History Server将在該目錄下儲存事件日志和曆史記錄。對于開發和測試目的而言,這個預設的存儲路徑是足夠的。

3、Flink History Server 啟停

$FLINK_HOME/bin/historyserver.sh start
$FLINK_HOME/bin/historyserver.sh stop
           

yarn proxyserver 和 historyserver 講解就先到這裡了,有任何疑問歡迎給我留言或私信,也可關注我的公衆号【大資料與雲原生技術分享】加群交流或私信咨詢問題~

繼續閱讀