[英]Spark on yarn concept understanding
我試圖了解 spark 如何在 YARN 集群/客戶端上運行。 我有以下疑問。
是否有必要在yarn集群中的所有節點上都安裝spark? 我認為應該是因為集群中的工作節點執行任務並且應該能夠解碼驅動程序發送到集群的 spark 應用程序中的代碼(spark API)?
它在文檔中說“確保HADOOP_CONF_DIR
或YARN_CONF_DIR
指向包含 Hadoop 集群(客戶端)配置文件的目錄”。 為什么客戶端節點在將作業發送到集群時必須安裝Hadoop?
添加到其他答案。
- 是否有必要在yarn集群中的所有節點上都安裝spark?
否,如果 spark 作業在 YARN( client
或cluster
模式)中調度。 許多節點只需要在獨立模式下安裝 Spark。
這些是 Spark 應用程序部署模式的可視化。
Spark 獨立集群
在cluster
模式下,驅動程序將位於 Spark Worker 節點之一,而在client
模式下,它將位於啟動作業的機器內。
YARN集群模式
YARN 客戶端模式
下表提供了這些模式之間差異的簡明列表:
- 它在文檔中說“確保 HADOOP_CONF_DIR 或 YARN_CONF_DIR 指向包含 Hadoop 集群(客戶端)配置文件的目錄”。 為什么客戶端節點在將作業發送到集群時必須安裝Hadoop?
Hadoop 安裝不是強制性的,但配置(不是全部)是!。 我們可以稱它們為網關節點。 主要有兩個原因。
HADOOP_CONF_DIR
目錄中包含的配置將分發到 YARN 集群,以便應用程序使用的所有容器都使用相同的配置。yarn-default.xml
)中獲取的。 因此, --master
參數是yarn
。Spark 2.0+不再需要用於生產部署的胖組裝 jar 。 來源
我們在 YARN 上運行 Spark 作業(我們使用 HDP 2.2)。
我們沒有在集群上安裝 spark。 我們只將 Spark 程序集 jar 添加到 HDFS。
例如運行 Pi 示例:
./bin/spark-submit \
--verbose \
--class org.apache.spark.examples.SparkPi \
--master yarn-cluster \
--conf spark.yarn.jar=hdfs://master:8020/spark/spark-assembly-1.3.1-hadoop2.6.0.jar \
--num-executors 2 \
--driver-memory 512m \
--executor-memory 512m \
--executor-cores 4 \
hdfs://master:8020/spark/spark-examples-1.3.1-hadoop2.6.0.jar 100
--conf spark.yarn.jar=hdfs://master:8020/spark/spark-assembly-1.3.1-hadoop2.6.0.jar
- 這個配置告訴紗線從是采取火花組件。 如果您不使用它,它將從您運行spark-submit
上傳 jar。
關於您的第二個問題:客戶端節點不需要安裝 Hadoop。 它只需要配置文件。 您可以將目錄從集群復制到客戶端。
1 - 如果遵循從/主架構,則 Spark。 所以在你的集群上,你必須安裝一個 spark master 和 N 個 spark slaves。 您可以在獨立模式下運行 spark。 但是使用 Yarn 架構會給你帶來一些好處。 這里有一個很好的解釋: http : //blog.cloudera.com/blog/2014/05/apache-spark-resource-management-and-yarn-app-models/
2- 例如,如果您想使用 Yarn 或 HDFS,這是必要的,但正如我之前所說,您可以在獨立模式下運行它。
讓我試着剪掉膠水,讓它變得不耐煩。
6 個組件:1. 客戶端,2. 驅動程序,3. 執行程序,4. 應用主程序,5. 工作線程,6. 資源管理器; 2種部署模式; 和2 資源(集群)管理。
這是關系:
沒什么特別的,就是提交 spark 應用程序。
沒什么特別的,一個工人擁有一個或多個執行者。
(無論是客戶端還是集群模式)
瞧!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.