Spark 與 Apache Hadoop 有何關係?
Spark 是一個快速且通用的處理引擎,與 Hadoop 資料相容。它可以在 Hadoop 群集透過 YARN 或 Spark 的獨立模式執行,並且可以在 HDFS、HBase、Cassandra、Hive 和任何 Hadoop InputFormat 中處理資料。它旨在執行批次處理(類似於 MapReduce)和串流、互動式查詢和機器學習等新工作負載。
誰在實際環境中使用 Spark?
截至 2016 年,調查顯示超過 1000 個組織在實際環境中使用 Spark。其中一些組織列在 技術支援頁面 和 Spark Summit。
Spark 可以擴充到多大的群集?
許多組織在數千個節點的叢集上執行 Spark。我們所知最大的叢集有 8000 個節點。在資料大小方面,Spark 已被證明可以良好處理達數 PB 的資料。它已用於將 100 TB 的資料排序,速度比 Hadoop MapReduce 快 3 倍,且僅使用十分之一的機器,贏得 2014 Daytona GraySort Benchmark,以及 排序 1 PB。多個生產工作負載 使用 Spark 對 PB 級資料執行 ETL 和資料分析。
我的資料是否需要放入記憶體才能使用 Spark?
不需要。如果資料不放入記憶體,Spark 的運算子會將資料溢位到磁碟,讓它可以在任何大小的資料上順利執行。同樣地,不放入記憶體的快取資料集會在需要時溢位到磁碟或重新計算,這由 RDD 的 儲存層級 決定。
我可以在叢集上執行 Spark 的方式為何?
您可以使用 獨立部署模式,它只需要在每個節點上安裝 Java,或使用 Mesos 和 YARN 叢集管理員。如果您想在 Amazon EC2 上執行,AMPLab 提供 EC2 腳本 以自動啟動叢集。
請注意,您也可以在沒有任何特殊設定的情況下,在本地執行 Spark(可能在多個核心上),只要將 local[N]
傳遞為主控 URL,其中 N
是您想要的平行執行緒數目。
我需要 Hadoop 才能執行 Spark 嗎?
不需要,但是如果您在叢集上執行,您將需要某種形式的共用檔案系統(例如,在每個節點上以相同路徑掛載的 NFS)。如果您有這種檔案系統,您只要在獨立模式下部署 Spark 即可。
Spark 是否需要修改版本的 Scala 或 Python?
不需要。Spark 不需要變更 Scala 或編譯器外掛程式。Python API 使用標準的 CPython 實作,並且可以呼叫 Python 的現有 C 函式庫,例如 NumPy。
Spark Streaming 和 Spark Structured Streaming 有什麼不同?我應該使用哪一個?
Spark Streaming 是 Spark 串流引擎的前一代。Spark Streaming 不再更新,並且是一個舊專案。Spark Streaming 提供一個稱為離散串流或 DStream 的高階抽象,它表示一個連續的資料串流。在內部,DStream 表示為一連串的 RDD。
Spark Structured Streaming 是 Spark 串流引擎的現行版本,功能更豐富、更易於使用且更具可擴充性。Spark Structured Streaming 建構在 Spark SQL 引擎之上,讓您可以用與對靜態資料執行批次運算相同的方式表達串流運算。
您應該使用 Spark Structured Streaming 來建構使用 Spark 的串流應用程式和管線。如果您有建構在 Spark Streaming 上的舊版應用程式和管線,您應該將它們移轉到 Spark Structured Streaming。
我在哪裡可以找到 Spark 標誌的高解析度版本?
我們在此提供版本:黑色標誌、白色標誌。請注意,Spark、Apache Spark 和 Spark 標誌是 Apache 軟體基金會的商標,在使用這些標誌時請遵循基金會的商標政策。
我可以提供基於 Spark 的商業軟體或服務嗎?
可以,只要您遵守 Apache 軟體基金會的軟體授權和商標政策。特別注意,對於第三方產品如何使用「Spark」名稱有嚴格的限制(通常不允許基於 Spark 的名稱)。請參閱我們的商標政策摘要。
我如何為 Spark 做出貢獻?
請參閱貢獻 Spark wiki以取得更多資訊。
我在哪裡可以獲得更多協助?
請發布在 StackOverflow 的apache-spark
標籤或Spark 使用者郵件清單。如需更多資訊,請參閱有問題嗎?。我們很樂意提供協助!