提到大數(shù)據(jù),我們就離不開數(shù)據(jù)的收集整理,其中ETL是我們經(jīng)常使用的用于構(gòu)建數(shù)據(jù)倉庫, 構(gòu)建大數(shù)據(jù)的方法。
大數(shù)據(jù)處理階段
此階段的目標(biāo)是使用單個(gè)模式來清理,規(guī)范化,處理和保存數(shù)據(jù)。最終結(jié)果是具有定義良好的架構(gòu)的可信數(shù)據(jù)集。例如Spark之類的處理框架用于在機(jī)器集群中并行處理數(shù)據(jù)。在這里我們需要進(jìn)行數(shù)據(jù)的驗(yàn)證,隔離掉不合法的數(shù)據(jù),我們需要對不良數(shù)據(jù)進(jìn)行篩選過濾。對于不規(guī)范的數(shù)據(jù),我們需要有整理和清潔功能,我們要能夠?qū)⒁恍┑托У母袷饺雑son進(jìn)行轉(zhuǎn)換。同時(shí)我們可能還需要一些標(biāo)準(zhǔn)化的操作,比如對一些數(shù)值進(jìn)行小數(shù)點(diǎn)位的精度轉(zhuǎn)化。
大數(shù)據(jù)處理的最終目的就是創(chuàng)建一個(gè)可信數(shù)據(jù)集,然后下游系統(tǒng)可以依賴此數(shù)據(jù)源進(jìn)行業(yè)務(wù)分析和數(shù)據(jù)計(jì)算。
對于大數(shù)據(jù)的處理,主要有下面的幾個(gè)工具引擎。
Apache Hive
它是將SQL請求轉(zhuǎn)換為MapReduce任務(wù)鏈的引擎。它主要實(shí)現(xiàn)的功能是對傳入的SQL進(jìn)行排序然后優(yōu)化排序結(jié)果,最終得到高效率的請求結(jié)果。2018年它將MapReduce替換為Tez作為搜索引擎。它具有機(jī)器學(xué)習(xí)功能,并且在和其他流行的大數(shù)據(jù)框架進(jìn)行集成。
Apache Spark
這是最著名的批處理框架。它是Hadoop生態(tài)系統(tǒng)的一部分,是一個(gè)托管集群,可提供強(qiáng)大的并性,有著精準(zhǔn)的監(jiān)控和出色的UI。它還支持流處理(結(jié)構(gòu)化流)?;旧?,Spark在內(nèi)存中運(yùn)行MapReduce作業(yè),其性能是常規(guī)MapReduce性能的100倍。它與Hive集成以支持SQL,并可用于創(chuàng)建Hive表,視圖或查詢數(shù)據(jù)。它具有很多集成,支持多種格式,并且擁有龐大的社區(qū)。所有云提供商都支持它。它可以在YARN上運(yùn)行作為Hadoop集群的一部分,還可以在Kubernetes和其他平臺(tái)中使用。它具有許多的第三方庫可以使用。
Apache Flink
第一個(gè)統(tǒng)一批處理和流傳輸?shù)囊?,它可以用作像Kafka這樣的微服務(wù)的主干。它可以作為Hadoop集群的一部分在YARN上運(yùn)行,它還針對其他平臺(tái)(如Kubernetes或Mesos)進(jìn)行了優(yōu)化。它非???,并且提供實(shí)時(shí)流傳輸,使其成為針對低延遲流處理(尤其是有狀態(tài)流)的一個(gè)比Spark更好的選擇。它還具有用于SQL,機(jī)器學(xué)習(xí)等的庫。它比Spark更快,是數(shù)據(jù)流的更好選擇。
Apache Storm
是一個(gè)免費(fèi)和開源的分布式實(shí)時(shí)計(jì)算系統(tǒng),它專注于流傳輸,是Hadoop生態(tài)系統(tǒng)的托管解決方案部分。它具有可擴(kuò)展性,容錯(cuò)性,可確保您的數(shù)據(jù)將得到處理,并且易于設(shè)置和操作。
Apache Samza
一個(gè)出色的有狀態(tài)流處理引擎。Samza允許您構(gòu)建有狀態(tài)的應(yīng)用程序,它可以從多個(gè)來源實(shí)時(shí)處理數(shù)據(jù)。它不僅可以在YARN集群上運(yùn)行,也可以作為獨(dú)立庫單獨(dú)運(yùn)行。
Apache Beam
它本身不是引擎,而是將所有其他引擎結(jié)合在一起的統(tǒng)一編程模型的規(guī)范。它提供了可以與不同語言一起使用的編程模型,因此開發(fā)人員在處理大數(shù)據(jù)管道時(shí)不必學(xué)習(xí)新的語言。然后,它為可以在云或本地運(yùn)行的處理步驟插入了不同的后端。Beam支持前面提到的所有引擎,您可以在它們之間輕松切換并在任何平臺(tái)上運(yùn)行它們:云,YARN,Mesos,Kubernetes。如果您要開始一個(gè)新項(xiàng)目,那么建議您從Beam開始,因?yàn)锽eam是面向未來的。
Presto
Presto是一個(gè)開放源代碼的分布式SQL查詢引擎,適合于對各種大小,各種數(shù)據(jù)源進(jìn)行交互式分析查詢。
Presto是專為交互式分析而設(shè)計(jì)和編寫的,當(dāng)它的規(guī)模擴(kuò)展到一定的規(guī)模的時(shí)候,它也可以實(shí)現(xiàn)商業(yè)數(shù)據(jù)倉庫的處理速度。
Presto允許查詢數(shù)據(jù)存在多個(gè)地方,包括Hive,Cassandra,關(guān)系數(shù)據(jù)庫甚至專有數(shù)據(jù)存儲(chǔ)。一個(gè)Presto查詢可以合并來自多個(gè)來源的數(shù)據(jù),從而可以在整個(gè)組織中進(jìn)行分析。
Presto適用于期望響應(yīng)時(shí)間從亞秒到數(shù)分鐘不等的分析師。Presto打破了使用昂貴的商業(yè)解決方案進(jìn)行快速分析或使用需要大量硬件的慢速“免費(fèi)”解決方案之間的錯(cuò)誤選擇。
總結(jié)
處理引擎是當(dāng)前在大數(shù)據(jù)詞中使用的很著名的工具。作為大數(shù)據(jù)工程師,您將經(jīng)常使用這些引擎。了解這些引擎的分布式特性并知道如何優(yōu)化它們,保護(hù)它們并監(jiān)視它們至關(guān)重要。
請記住,還有一些OLAP引擎提供了一種查詢大量數(shù)據(jù)的單一解決方案,而無需編寫復(fù)雜的轉(zhuǎn)換,而是通過以一種特定的格式加載數(shù)據(jù)來提高查詢的性能。
對于一個(gè)新項(xiàng)目,建議您研究Apache Beam,因?yàn)樗谒衅渌娴幕A(chǔ)上提供了一個(gè)抽象,使您無需更改代碼即可更改處理引擎。
對于流處理,特別是有狀態(tài)流處理,請考慮Flink或Samza。對于批處理,請使用Spark。
責(zé)任編輯:YYX
-
大數(shù)據(jù)
+關(guān)注
關(guān)注
64文章
8855瀏覽量
137217
發(fā)布評論請先 登錄
相關(guān)推薦
評論