Hadoop與Spark的比較
Hadoop框架的主要模組包括如下:
雖然上述四個模組構成了Hadoop的核心,不過還有其他幾個模組。這些模組包括:Ambari、Avro、Cassandra、Hive、 Pig、Oozie、Flume和Sqoop,它們進一步增強和擴充套件了Hadoop的功能。
Spark確實速度很快(最多比Hadoop MapReduce快100倍)。Spark還可以執行批次處理,然而它真正擅長的是處理流工作負載、互動式查詢和機器學習。
相比MapReduce基於磁碟的批次處理引擎,Spark賴以成名之處是其資料實時處理功能。Spark與Hadoop及其模組相容。實際上,在Hadoop的專案頁面上,Spark就被列為是一個模組。
Spark有自己的頁面,因為雖然它可以透過YARN(另一種資源協調者)在Hadoop叢集中執行,但是它也有一種獨立模式。它可以作為 Hadoop模組來執行,也可以作為獨立解決方案來執行。
MapReduce和Spark的主要區別在於,MapReduce使用持久儲存,而Spark使用彈性分散式資料集(RDDS)。
效能
Spark之所以如此快速,原因在於它在記憶體中處理一切資料。沒錯,它還可以使用磁碟來處理未全部裝入到記憶體中的資料。
Spark的記憶體處理為來自多個來源的資料提供了近乎實時分析的功能:營銷活動、機器學習、物聯網感測器、日誌監控、安全分析和社交媒體網站。另 外,MapReduce使用批次處理,其實從來就不是為驚人的速度設計的。它的初衷是不斷收集來自網站的資訊,不需要這些資料具有實時性或近乎實時性。
易用性
支援Scala(原生語言)、Java、Python和Spark SQL。Spark SQL非常類似於SQL 92,所以幾乎不需要經歷一番學習,馬上可以上手。
Spark還有一種互動模式,那樣開發人員和使用者都可以獲得查詢和其他操作的即時反饋。MapReduce沒有互動模式,不過有了Hive和Pig等附加模組,採用者使用MapReduce來得容易一點。
成本
“Spark已證明在資料多達PB的情況下也輕鬆自如。它被用於在數量只有十分之一的機器上,對100TB資料進行排序的速度比Hadoop MapReduce快3倍。”這一成績讓Spark成為2014年Daytona GraySort基準。
相容性
MapReduce和Spark相互相容;MapReduce透過JDBC和ODC相容諸多資料來源、檔案格式和商業智慧工具,Spark具有與MapReduce同樣的相容性。
資料處理
MapReduce是一種批次處理引擎。MapReduce以順序步驟來操作,先從叢集讀取資料,然後對資料執行操作,將結果寫回到叢集,從叢集讀 取更新後的資料,執行下一個資料操作,將那些結果寫回到結果,依次類推。Spark執行類似的操作,不過是在記憶體中一步執行。它從叢集讀取資料後,對資料 執行操作,然後寫回到叢集。
Spark還包括自己的圖形計算庫GraphX。GraphX讓使用者可以檢視與圖形和集合同樣的資料。使用者還可以使用彈性分散式資料集(RDD),改變和聯合圖形,容錯部分作了討論。
容錯
至於容錯,MapReduce和Spark從兩個不同的方向來解決問題。MapReduce使用TaskTracker節點,它為 JobTracker節點提供了心跳(heartbeat)。如果沒有心跳,那麼JobTracker節點重新排程所有將執行的操作和正在進行的操作,交 給另一個TaskTracker節點。這種方法在提供容錯性方面很有效,可是會大大延長某些操作(即便只有一個故障)的完成時間。
Spark使用彈性分散式資料集(RDD),它們是容錯集合,裡面的資料元素可執行並行操作。RDD可以引用外部儲存系統中的資料集,比如共享式檔案系統、HDFS、HBase,或者提供Hadoop InputFormat的任何資料來源。Spark可以用Hadoop支援的任何儲存源建立RDD,包括本地檔案系統,或前面所列的其中一種檔案系統。
RDD擁有五個主要屬性:
RDD可能具有永續性,以便將資料集快取在記憶體中。這樣一來,以後的操作大大加快,最多達10倍。Spark的快取具有容錯性,原因在於如果RDD的任何分割槽丟失,就會使用原始轉換,自動重新計算。
可擴充套件性
按照定義,MapReduce和Spark都可以使用HDFS來擴充套件。那麼,Hadoop叢集能變得多大呢?
據稱雅虎有一套42000個節點組成的Hadoop叢集,可以說擴充套件無極限。最大的已知Spark叢集是8000個節點,不過隨著大資料增多,預計叢集規模也會隨之變大,以便繼續滿足吞吐量方面的預期。
安全
Hadoop支援Kerberos身份驗證,這管理起來有麻煩。然而,第三方廠商讓企業組織能夠充分利用活動目錄Kerberos和LDAP用於身份驗證。同樣那些第三方廠商還為傳輸中資料和靜態資料提供資料加密。
Hadoop分散式檔案系統支援訪問控制列表(ACL)和傳統的檔案許可權模式。Hadoop為任務提交中的使用者控制提供了服務級授權(Service Level Authorization),這確保客戶擁有正確的許可權。
Spark的安全性弱一點,目前只支援透過共享金鑰(密碼驗證)的身份驗證。Spark在安全方面帶來的好處是,如果你在HDFS上執行Spark,它可以使用HDFS ACL和檔案級許可權。此外,Spark可以在YARN上執行,因而能夠使用Kerberos身份驗證。
總結
Spark與MapReduce是一種相互共生的關係。Hadoop提供了Spark所沒有的功能特性,比如分散式檔案系統,而Spark 為需要它的那些資料集提供了實時記憶體處理。完美的大資料場景正是設計人員當初預想的那樣:讓Hadoop和Spark在同一個團隊裡面協同執行。
- Hadoop Common
- Hadoop分散式檔案系統(HDFS)
- Hadoop YARN
- Hadoop MapReduce
雖然上述四個模組構成了Hadoop的核心,不過還有其他幾個模組。這些模組包括:Ambari、Avro、Cassandra、Hive、 Pig、Oozie、Flume和Sqoop,它們進一步增強和擴充套件了Hadoop的功能。
Spark確實速度很快(最多比Hadoop MapReduce快100倍)。Spark還可以執行批次處理,然而它真正擅長的是處理流工作負載、互動式查詢和機器學習。
相比MapReduce基於磁碟的批次處理引擎,Spark賴以成名之處是其資料實時處理功能。Spark與Hadoop及其模組相容。實際上,在Hadoop的專案頁面上,Spark就被列為是一個模組。
Spark有自己的頁面,因為雖然它可以透過YARN(另一種資源協調者)在Hadoop叢集中執行,但是它也有一種獨立模式。它可以作為 Hadoop模組來執行,也可以作為獨立解決方案來執行。
MapReduce和Spark的主要區別在於,MapReduce使用持久儲存,而Spark使用彈性分散式資料集(RDDS)。
效能
Spark之所以如此快速,原因在於它在記憶體中處理一切資料。沒錯,它還可以使用磁碟來處理未全部裝入到記憶體中的資料。
Spark的記憶體處理為來自多個來源的資料提供了近乎實時分析的功能:營銷活動、機器學習、物聯網感測器、日誌監控、安全分析和社交媒體網站。另 外,MapReduce使用批次處理,其實從來就不是為驚人的速度設計的。它的初衷是不斷收集來自網站的資訊,不需要這些資料具有實時性或近乎實時性。
易用性
支援Scala(原生語言)、Java、Python和Spark SQL。Spark SQL非常類似於SQL 92,所以幾乎不需要經歷一番學習,馬上可以上手。
Spark還有一種互動模式,那樣開發人員和使用者都可以獲得查詢和其他操作的即時反饋。MapReduce沒有互動模式,不過有了Hive和Pig等附加模組,採用者使用MapReduce來得容易一點。
成本
“Spark已證明在資料多達PB的情況下也輕鬆自如。它被用於在數量只有十分之一的機器上,對100TB資料進行排序的速度比Hadoop MapReduce快3倍。”這一成績讓Spark成為2014年Daytona GraySort基準。
相容性
MapReduce和Spark相互相容;MapReduce透過JDBC和ODC相容諸多資料來源、檔案格式和商業智慧工具,Spark具有與MapReduce同樣的相容性。
資料處理
MapReduce是一種批次處理引擎。MapReduce以順序步驟來操作,先從叢集讀取資料,然後對資料執行操作,將結果寫回到叢集,從叢集讀 取更新後的資料,執行下一個資料操作,將那些結果寫回到結果,依次類推。Spark執行類似的操作,不過是在記憶體中一步執行。它從叢集讀取資料後,對資料 執行操作,然後寫回到叢集。
Spark還包括自己的圖形計算庫GraphX。GraphX讓使用者可以檢視與圖形和集合同樣的資料。使用者還可以使用彈性分散式資料集(RDD),改變和聯合圖形,容錯部分作了討論。
容錯
至於容錯,MapReduce和Spark從兩個不同的方向來解決問題。MapReduce使用TaskTracker節點,它為 JobTracker節點提供了心跳(heartbeat)。如果沒有心跳,那麼JobTracker節點重新排程所有將執行的操作和正在進行的操作,交 給另一個TaskTracker節點。這種方法在提供容錯性方面很有效,可是會大大延長某些操作(即便只有一個故障)的完成時間。
Spark使用彈性分散式資料集(RDD),它們是容錯集合,裡面的資料元素可執行並行操作。RDD可以引用外部儲存系統中的資料集,比如共享式檔案系統、HDFS、HBase,或者提供Hadoop InputFormat的任何資料來源。Spark可以用Hadoop支援的任何儲存源建立RDD,包括本地檔案系統,或前面所列的其中一種檔案系統。
RDD擁有五個主要屬性:
- 分割槽列表
- 計算每個分片的函式
- 依賴其他RDD的專案列表
- 面向鍵值RDD的分割槽程式(比如說RDD是雜湊分割槽),這是可選屬性
- 計算每個分片的首選位置的列表(比如HDFS檔案的資料塊位置),這是可選屬性
RDD可能具有永續性,以便將資料集快取在記憶體中。這樣一來,以後的操作大大加快,最多達10倍。Spark的快取具有容錯性,原因在於如果RDD的任何分割槽丟失,就會使用原始轉換,自動重新計算。
可擴充套件性
按照定義,MapReduce和Spark都可以使用HDFS來擴充套件。那麼,Hadoop叢集能變得多大呢?
據稱雅虎有一套42000個節點組成的Hadoop叢集,可以說擴充套件無極限。最大的已知Spark叢集是8000個節點,不過隨著大資料增多,預計叢集規模也會隨之變大,以便繼續滿足吞吐量方面的預期。
安全
Hadoop支援Kerberos身份驗證,這管理起來有麻煩。然而,第三方廠商讓企業組織能夠充分利用活動目錄Kerberos和LDAP用於身份驗證。同樣那些第三方廠商還為傳輸中資料和靜態資料提供資料加密。
Hadoop分散式檔案系統支援訪問控制列表(ACL)和傳統的檔案許可權模式。Hadoop為任務提交中的使用者控制提供了服務級授權(Service Level Authorization),這確保客戶擁有正確的許可權。
Spark的安全性弱一點,目前只支援透過共享金鑰(密碼驗證)的身份驗證。Spark在安全方面帶來的好處是,如果你在HDFS上執行Spark,它可以使用HDFS ACL和檔案級許可權。此外,Spark可以在YARN上執行,因而能夠使用Kerberos身份驗證。
總結
Spark與MapReduce是一種相互共生的關係。Hadoop提供了Spark所沒有的功能特性,比如分散式檔案系統,而Spark 為需要它的那些資料集提供了實時記憶體處理。完美的大資料場景正是設計人員當初預想的那樣:讓Hadoop和Spark在同一個團隊裡面協同執行。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15498/viewspace-2134362/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 大資料入門課程:Hadoop和spark的效能比較大資料HadoopSpark
- 好程式設計師技術解析Hadoop和spark的效能比較程式設計師HadoopSpark
- Apache Hadoop Yarn與Kubernetes比較選擇 - codehunterApacheHadoopYarn
- Hadoop與Spark關係HadoopSpark
- 好程式設計師分享大資料入門教程:Hadoop和spark的效能比較程式設計師大資料HadoopSpark
- 大資料框架對比 - Hadoop、Spark、Storm、Samza、Spark、Flink大資料框架HadoopSparkORM
- volatile與Atomic的比較
- ==與equals比較
- 比較 Apache Hadoop 資料儲存格式 - techwellApacheHadoop
- hadoop:spark-project專案的hadoop配置HadoopSparkProject
- Spark與MapReduce的對比(區別)Spark
- XTask與RxJava的使用比較RxJava
- Flutter與React Native的比較FlutterReact Native
- PostgreSQL與MySQL的比較 - hackrMySql
- MVVM與MVC模式的比較MVVMMVC模式
- hadoop和spark的區別HadoopSpark
- Go 與 C++ 的對比和比較GoC++
- Vuex與Redux比較VueRedux
- Hibernate與mybatis比較MyBatis
- yarn 與 npm 比較YarnNPM
- Vue與React比較VueReact
- RecyclerView與ListView比較View
- React與Vue模板使用比較(一、vue模板與React JSX比較)ReactVueJS
- Querydsl與JPA標準的比較
- Go與C#的比較 - RedditGoC#
- OSI模型 與 DOD模型的比較模型
- Docker 與 Podman 容器管理的比較Docker
- Goland與vscode比較 - redditGoLandVSCode
- Python與Excel VBA比較PythonExcel
- Flutter與Swift比較 - evroneFlutterSwiftVR
- Kanban與Scrum比較 - modernanalystScrumNaN
- Flutter 與 iOS 功能比較FlutteriOS
- Spring Boot與Micronaut比較Spring Boot
- SOA 、MSA與CNA比較
- 【hadoop/Spark】相關命令HadoopSpark
- Java中CompletableFuture的thenApply與thenApplyAsync比較JavaAPP
- OceanBase簡介及其與MySQL的比較MySql
- PostgreSQL、Redis與Memcached的效能比較 - CYBERTECSQLRedis
- PostgreSQL與Rust的聚合實現比較SQLRust