市場上有許多可用的框架。其中一些更受歡迎,例如Spark,Hadoop,Hive和Storm。Presto在效用指數上得分很高,而Flink具有巨大的潛力。另外還有一些需要提及的其他內容,例如Samza,Impala,Apache Pig等。在這里,我們將討論其中的一些。
1. Apache Hadoop
Hadoop是基于JAVA的平臺。這是一個開放源代碼框架,可跨集群排列的一組硬件機器提供批處理數據處理和數據存儲服務。Hadoop同樣適用于可靠,可擴展和分布式的計算。但是,它也可以用作通用文件存儲。它可以存儲和處理PB的信息。Hadoop由三個主要組件組成。
- HDFS文件系統-負責Hadoop集群中的數據存儲;
- MapReduce系統-用于處理集群中的大量數據;
- YARN-它是處理資源管理的核心。
- 優點
它提供了經濟高效的解決方案,高吞吐量,多語言支持以及與大數據服務中大多數新興技術的兼容性。還通過出色的故障處理機制支持高可伸縮性,容錯能力,更適合研發,高可用性。
- 缺點
它包含安全漏洞的漏洞,不執行內存中的計算,因此會遭受處理開銷,不適用于流處理和實時處理,這是處理大量小文件的問題。
像Amazon,Adobe,AOL,阿里巴巴,EBay和Facebook這樣的組織也使用Hadoop。
2. Apache Spark
Spark框架由加利福尼亞大學伯克利分校成立。它是具有改進的數據流處理的批處理框架。借助完整的內存計算以及處理優化,它保證了極其快速的集群計算系統。
Spark框架由五層組成。
- HDFS和HBASE:它們構成了數據存儲系統的第一層。
- YARN和Mesos:它們形成資源管理層。
- 核心引擎:這形成了第三層。
- 庫:構成第四層,其中包含用于流查詢處理時的SQL查詢的Spark SQL,用于處理圖形數據的GraphX和Spark R實用程序以及用于機器學習算法的MLlib。
- 第五層包含一個應用程序接口,例如Java或Scala。
Spark可以作為獨立的集群與功能強大的存儲層一起使用,也可以與Hadoop進行一致的集成。它也支持一些流行的語言,例如Python,R,Java和Scala。
- 優點
- 速度
- 使用方便
- 進階分析
- 自然動態
- 多種語言
- Apache Spark功能強大
- 增加對大數據的訪問
- 對Spark開發人員的需求
- 開源社區
- 缺點
Spark帶來了一些弊端,例如設置和實現的復雜性,語言支持限制,而不是真正的流引擎。
3.Apache Storm
Apache Storm是另一個引人注目的解決方案,專注于處理巨大的實時數據流。Storm的主要亮點是可伸縮性和停機后的迅速恢復能力。您可以在Java,Python,Ruby和Fancy的幫助下使用此解決方案。Storm包含一些使其在本質上與模擬產品不同的組件。第一個是Tuple,它是支持序列化的關鍵數據表示元素。然后是Stream,它在Tuple中合并了命名字段的方案。Spout從外部源獲取數據,從它們中形成元組,然后將它們發送到Stream。另外還有Bolt(數據處理器)和Topology(拓撲),這是一整套元素及其相關描述。將所有這些元素組合在一起,可以幫助工程師監督大量的非結構化數據流。
談到性能,Storm提供了比Flink和Spark更好的延遲。盡管如此,它的吞吐量卻更糟。最近,Twitter移至另一個框架Heron。Yelp,Yahoo !、阿里巴巴等大型組織尚未利用Storm。到2020年,它將擁有龐大的客戶群和支持。
4. Apache Flink
Apache Flink是一個開源框架,同樣適用于批處理和流數據處理。它最適合于集群環境。該框架基于轉換–流概念。它也是大數據的4G。它比Hadoop – Map Reduce快100倍。
Flink框架由多層組成-
- 部署層
- 運行層
- 圖書館層
- 優點
低延遲,高吞吐量,容錯,逐項輸入,批處理輕松以及流數據處理,與Hadoop的兼容性。
- 缺點
很少有可伸縮性問題。
5. Presto
Presto是最適合較小數據集的開源分布式SQL工具。Presto配備了協調員以及各種工人。當客戶提交查詢時,將對這些查詢進行解析,分析,計劃執行并分配給協調員在工作人員之間進行處理。
優點
- 即使并發查詢工作量增加,查詢降級最少。
- 它的查詢執行速度比Hive快三倍。
- 易于添加圖像和嵌入鏈接。
- 高度用戶友好。
缺點
- 可靠性問題
6. Samza
Apache Samza是有狀態的流,準備與Kafka共同開發的大數據系統。Kafka提供數據服務,緩沖和容錯能力。兩者結合起來被提議用于需要快速單級處理的地方。使用Kafka,可以以低延遲使用它。Samza還在處理過程中保存了局部狀態,從而提供了更多的容錯能力。它是為KAppa體系結構設計的,但可以在其他體系結構中使用。Samza使用YARN來安排資源。因此,它需要一個Hadoop集群才能工作,這意味著您可以依賴YARN提供的亮點。這個大數據處理框架是為Linkedin開發的,也被eBay和TripAdvisor使用,以進行欺詐發現。Kafka利用了相當一部分代碼來創建競爭的數據處理框架Kafka流。
結論
沒有一個最適合所有業務需求的框架。但是,以某些框架為特色,Storm似乎最適合流式傳輸,而Spark是批處理的贏家。對于每個組織或企業,自己的數據都是最重要的。將資源投入大數據結構包括支出。許多框架都是可自由訪問的,而有些框架則需要付費。視項目需求而定,可提供初步版本。對于適當的選擇,請了解業務目標。您可以在較小規模的項目上嘗試使用該框架,以更精確地了解其功能。投資于正確的框架可以使企業成功。
點擊關注,如果發現任何不正確的地方,或者想分享有關上述主題的更多信息,歡迎反饋。