[英]What are the differences between pre-built and user-provided hadoop on spark download page?
這些問題困擾了我很久:
當第一個選擇器選擇版本 2.4.4 時,第二個選擇器中有五種包類型。我對其中的 3 種感到困惑: Pre-built for Apache Hadoop 2.7
, Pre-built with user-provided Apache Hadoop
, Pre-built with scala 2.12 and user-provided Apache Hadoop
。讓我一一列出我的問題。
Pre-built for Apache Hadoop 2.7
和Pre-built with user-provided Apache Hadoop
什么區別? 這是否意味着有兩種不同的情況,我已經有一個hadoop集群,而我沒有一個hadoop集群。 如果是前者,我應該選擇Pre-built with user-provided Apache Hadoop
,如果是后者,這個包會為我安裝一個 hadoop 集群嗎?Pre-built with user-provided Apache Hadoop
和Pre-built with scala 2.12 and user-provided Apache Hadoop
什么區別? 據我所知,當我按照教程運行spark-shell
時,spark 已經安裝了 Scala,其軟件包似乎不是Pre-built with scala 2.12 and user-provided Apache Hadoop
Pre-built with user-provided Apache Hadoop
,而是Pre-built with user-provided Apache Hadoop
.(我說得對嗎?)因為我認為命令行使用 scala 顯示了一些東西:
標量> val a = 1;
那么為什么還有另一個包強調它是用scala 2.12預先構建的呢?
沒有選項會為您安裝 Hadoop。 在所有情況下,Hadoop 必須預先存在或捆綁在 Spark 下載中,如果您想以這種方式運行,您必須首先為 Spark 創建一個 HDFS 和 YARN 環境來運行它
如果您已經有一個正在運行的集群並想要添加或升級 Spark,或者您正在使用 Spark Standalone、Mesos 或 Kubernetes,則可以選擇用戶提供的 Hadoop,在這種情況下,下載中不包含 Hadoop 腳本,盡管 Spark 在內部仍然依賴於核心 Hadoop 庫來運行
Spark 也不會為您安裝 Scala(或 Java)。 它只是針對 Scala 2.12 編譯,因此嘗試針對任何其他 Scala 版本運行將導致類路徑問題
概括,
對於 Spark 3.1.1,存在以下包類型可供下載:
這個版本的 spark 運行在 Hadoop 2.7
此版本的 spark 與 Hadoop 3.2 及更高版本一起運行
這個版本的 spark 可以與任何用戶提供的 Hadoop 版本一起運行。
從上一個版本的名稱(spark-3.1.1-bin-without-hadoop.tgz)來看,我們似乎需要這個 spark 版本(即 3.)而不是其他版本(即 1. 和2.)。 然而,命名是模棱兩可的。 只有當我們想要支持 HDFS 和 YARN 時,我們才需要 Hadoop。 在獨立模式下,Spark 可以在沒有 Hadoop 的情況下在真正的分布式環境中運行(或在單台機器上運行守護進程)。
對於 1. 和 2.,您可以在不安裝 Hadoop 的情況下運行 Spark,因為一些核心 Hadoop 庫與 spark 預構建二進制文件捆綁在一起,因此spark-shell
可以正常工作而不會spark-shell
任何異常); 對於 3.,除非提供 HADOOP 安裝,否則 spark 將無法工作(因為 3. 沒有 Hadoop 運行時)。
欲了解更多信息,請參閱該從文檔
您可以下載兩種 Spark 二進制發行版的變體。 一種是使用特定版本的 Apache Hadoop 預先構建的; 這個 Spark 發行版包含內置的 Hadoop 運行時,所以我們稱之為 with-hadoop Spark 發行版。 另一個是使用用戶提供的 Hadoop 預先構建的; 由於這個 Spark 發行版不包含內置的 Hadoop 運行時,所以它更小,但用戶必須單獨提供 Hadoop 安裝。 我們稱這種變體為 no-hadoop Spark 發行版。 對於 with-hadoop Spark 發行版,由於它已經包含一個內置的 Hadoop 運行時,默認情況下,當一個作業提交到 Hadoop Yarn 集群時,為了防止 jar 沖突,它不會將 Yarn 的類路徑填充到 Spark ...
希望這能消除一些困惑!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.