大數(shù)據(jù)框架,你在用哪一款?
市場(chǎng)上有許多可用的框架。其中一些更受歡迎,例如Spark,Hadoop,Hive和Storm。Presto在效用指數(shù)上得分很高,而Flink具有巨大的潛力。另外還有一些需要提及的其他內(nèi)容,例如Samza,Impala,Apache Pig等。在這里,我們將討論其中的一些。
1. Apache Hadoop

Hadoop是基于Java的平臺(tái)。這是一個(gè)開放源代碼框架,可跨集群排列的一組硬件機(jī)器提供批處理數(shù)據(jù)處理和數(shù)據(jù)存儲(chǔ)服務(wù)。Hadoop同樣適用于可靠,可擴(kuò)展和分布式的計(jì)算。但是,它也可以用作通用文件存儲(chǔ)。它可以存儲(chǔ)和處理PB的信息。Hadoop由三個(gè)主要組件組成。
- HDFS文件系統(tǒng)-負(fù)責(zé)Hadoop集群中的數(shù)據(jù)存儲(chǔ);
- MapReduce系統(tǒng)-用于處理集群中的大量數(shù)據(jù);
- YARN-它是處理資源管理的核心。
優(yōu)點(diǎn)
它提供了經(jīng)濟(jì)高效的解決方案,高吞吐量,多語言支持以及與大數(shù)據(jù)服務(wù)中大多數(shù)新興技術(shù)的兼容性。還通過出色的故障處理機(jī)制支持高可伸縮性,容錯(cuò)能力,更適合研發(fā),高可用性。
缺點(diǎn)
它包含安全漏洞的漏洞,不執(zhí)行內(nèi)存中的計(jì)算,因此會(huì)遭受處理開銷,不適用于流處理和實(shí)時(shí)處理,這是處理大量小文件的問題。
像Amazon,Adobe,AOL,阿里巴巴,EBay和Facebook這樣的組織也使用Hadoop。
2. Apache Spark

Spark框架由加利福尼亞大學(xué)伯克利分校成立。它是具有改進(jìn)的數(shù)據(jù)流處理的批處理框架。借助完整的內(nèi)存計(jì)算以及處理優(yōu)化,它保證了極其快速的集群計(jì)算系統(tǒng)。
Spark框架由五層組成。
- HDFS和HBASE:它們構(gòu)成了數(shù)據(jù)存儲(chǔ)系統(tǒng)的第一層。
- YARN和Mesos:它們形成資源管理層。
- 核心引擎:這形成了第三層。
- 庫:構(gòu)成第四層,其中包含用于流查詢處理時(shí)的SQL查詢的Spark SQL,用于處理圖形數(shù)據(jù)的GraphX和Spark R實(shí)用程序以及用于機(jī)器學(xué)習(xí)算法的MLlib。
- 第五層包含一個(gè)應(yīng)用程序接口,例如Java或Scala。
Spark可以作為獨(dú)立的集群與功能強(qiáng)大的存儲(chǔ)層一起使用,也可以與Hadoop進(jìn)行一致的集成。它也支持一些流行的語言,例如Python,R,Java和Scala。
優(yōu)點(diǎn)
- 速度
- 使用方便
- 進(jìn)階分析
- 自然動(dòng)態(tài)
- 多種語言
- Apache Spark功能強(qiáng)大
- 增加對(duì)大數(shù)據(jù)的訪問
- 對(duì)Spark開發(fā)人員的需求
- 開源社區(qū)
缺點(diǎn)
Spark帶來了一些弊端,例如設(shè)置和實(shí)現(xiàn)的復(fù)雜性,語言支持限制,而不是真正的流引擎。
3.Apache Storm

Apache Storm是另一個(gè)引人注目的解決方案,專注于處理巨大的實(shí)時(shí)數(shù)據(jù)流。Storm的主要亮點(diǎn)是可伸縮性和停機(jī)后的迅速恢復(fù)能力。您可以在Java,Python,Ruby和Fancy的幫助下使用此解決方案。Storm包含一些使其在本質(zhì)上與模擬產(chǎn)品不同的組件。第一個(gè)是Tuple,它是支持序列化的關(guān)鍵數(shù)據(jù)表示元素。然后是Stream,它在Tuple中合并了命名字段的方案。Spout從外部源獲取數(shù)據(jù),從它們中形成元組,然后將它們發(fā)送到Stream。另外還有Bolt(數(shù)據(jù)處理器)和Topology(拓?fù)?,這是一整套元素及其相關(guān)描述。將所有這些元素組合在一起,可以幫助工程師監(jiān)督大量的非結(jié)構(gòu)化數(shù)據(jù)流。
談到性能,Storm提供了比Flink和Spark更好的延遲。盡管如此,它的吞吐量卻更糟。最近,Twitter移至另一個(gè)框架Heron。Yelp,Yahoo !、阿里巴巴等大型組織尚未利用Storm。到2020年,它將擁有龐大的客戶群和支持。
4. Apache Flink

Apache Flink是一個(gè)開源框架,同樣適用于批處理和流數(shù)據(jù)處理。它最適合于集群環(huán)境。該框架基于轉(zhuǎn)換–流概念。它也是大數(shù)據(jù)的4G。它比Hadoop – Map Reduce快100倍。
Flink框架由多層組成-
- 部署層
- 運(yùn)行層
- 圖書館層
優(yōu)點(diǎn)
低延遲,高吞吐量,容錯(cuò),逐項(xiàng)輸入,批處理輕松以及流數(shù)據(jù)處理,與Hadoop的兼容性。
缺點(diǎn)
很少有可伸縮性問題。
5. Presto

Presto是最適合較小數(shù)據(jù)集的開源分布式SQL工具。Presto配備了協(xié)調(diào)員以及各種工人。當(dāng)客戶提交查詢時(shí),將對(duì)這些查詢進(jìn)行解析,分析,計(jì)劃執(zhí)行并分配給協(xié)調(diào)員在工作人員之間進(jìn)行處理。
優(yōu)點(diǎn)
- 即使并發(fā)查詢工作量增加,查詢降級(jí)最少。
- 它的查詢執(zhí)行速度比Hive快三倍。
- 易于添加圖像和嵌入鏈接。
- 高度用戶友好。
缺點(diǎn)
可靠性問題
6. Samza

Apache Samza是有狀態(tài)的流,準(zhǔn)備與Kafka共同開發(fā)的大數(shù)據(jù)系統(tǒng)。Kafka提供數(shù)據(jù)服務(wù),緩沖和容錯(cuò)能力。兩者結(jié)合起來被提議用于需要快速單級(jí)處理的地方。使用Kafka,可以以低延遲使用它。Samza還在處理過程中保存了局部狀態(tài),從而提供了更多的容錯(cuò)能力。它是為Kappa體系結(jié)構(gòu)設(shè)計(jì)的,但可以在其他體系結(jié)構(gòu)中使用。Samza使用YARN來安排資源。因此,它需要一個(gè)Hadoop集群才能工作,這意味著您可以依賴YARN提供的亮點(diǎn)。這個(gè)大數(shù)據(jù)處理框架是為L(zhǎng)inkedin開發(fā)的,也被eBay和TripAdvisor使用,以進(jìn)行欺詐發(fā)現(xiàn)。Kafka利用了相當(dāng)一部分代碼來創(chuàng)建競(jìng)爭(zhēng)的數(shù)據(jù)處理框架Kafka流。
結(jié)論
沒有一個(gè)最適合所有業(yè)務(wù)需求的框架。但是,以某些框架為特色,Storm似乎最適合流式傳輸,而Spark是批處理的贏家。對(duì)于每個(gè)組織或企業(yè),自己的數(shù)據(jù)都是最重要的。將資源投入大數(shù)據(jù)結(jié)構(gòu)包括支出。許多框架都是可自由訪問的,而有些框架則需要付費(fèi)。視項(xiàng)目需求而定,可提供初步版本。對(duì)于適當(dāng)?shù)倪x擇,請(qǐng)了解業(yè)務(wù)目標(biāo)。您可以在較小規(guī)模的項(xiàng)目上嘗試使用該框架,以更精確地了解其功能。投資于正確的框架可以使企業(yè)成功。


























