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