編程學習網 > 編程語言 > Python > Python hadoop大數據生態圈技術教程
2023
09-14

Python hadoop大數據生態圈技術教程

Hadoop是一個由Apache基金會所開發的分布式系統基礎架構。用戶可以在不了解分布式底層細節的情況下,開發分布式程序。充分利用集群的威力進行高速運算和存儲。具有可靠、高效、可伸縮的特點。


Hadoop的核心是YARN,HDFS和Mapreduce。

官方網址:

https://hadoop.apache.org/
其常用技術架構模塊如下:


1.HDFS(Hadoop分布式文件系統)
源自于Google的GFS論文,發表于2003年10月,HDFS是GFS克隆版。

HDFS是Hadoop體系中數據存儲管理的基礎。它是一個高度容錯的系統,能檢測和應對硬件故障,用于在低成本的通用硬件上運行。

HDFS簡化了文件的一致性模型,通過流式數據訪問,提供高吞吐量應用程序數據訪問功能,適合帶有大型數據集的應用程序。它提供了一次寫入多次讀取的機制,數據以塊的形式,同時分布在集群不同物理機器上。

2.Mapreduce(分布式計算框架)離線計算
源自于google的MapReduce論文,發表于2004年12月,Hadoop MapReduce是google MapReduce 克隆版。

MapReduce是一種分布式計算模型,用以進行大數據量的計算。它屏蔽了分布式計算框架細節,將計算抽象成map和reduce兩部分,其中Map對數據集上的獨立元素進行指定的操作,生成鍵-值對形式中間結果。Reduce則對中間結果中相同“鍵”的所有“值”進行規約,以得到最終結果。

MapReduce非常適合在大量計算機組成的分布式并行環境里進行數據處理。

3.HBASE(分布式列存數據庫)
源自Google的Bigtable論文,發表于2006年11月,HBase是Google Bigtable克隆版。

HBase是一個建立在HDFS之上,面向列的針對結構化數據的可伸縮、高可靠、高性能、分布式和面向列的動態模式數據庫。

HBase采用了BigTable的數據模型:增強的稀疏排序映射表(Key/Value),其中,鍵由行關鍵字、列關鍵字和時間戳構成。

在Hbase中,列簇相當于關系型數據庫的表。而Key-Value這樣的鍵值對,相當于數據庫里面的一行。

HBase提供了對大規模數據的隨機、實時讀寫訪問,同時,HBase中保存的數據可以使用MapReduce來處理,它將數據存儲和并行計算完美地結合在一起。

4.Zookeeper(分布式協作服務)
源自Google的Chubby論文,發表于2006年11月,Zookeeper是Chubby克隆版。

解決分布式環境下的數據管理問題:統一命名,狀態同步,集群管理,配置同步等。

Hadoop的許多組件依賴于Zookeeper,它運行在計算機集群上面,用于管理Hadoop操作。

官方網站:

https://zookeeper.apache.org
5.HIVE(數據倉庫)
由facebook開源,最初用于解決海量結構化的日志數據統計問題。

Hive定義了一種類似SQL的查詢語言(HQL),將SQL轉化為MapReduce任務在Hadoop上執行。通常用于離線分析。

HQL用于運行存儲在Hadoop上的查詢語句,Hive讓不熟悉MapReduce開發人員也能編寫數據查詢語句,然后這些語句被翻譯為Hadoop上面的MapReduce任務。

官方網站:

https://hive.apache.org
6.Pig(ad-hoc腳本)
由yahoo!開源,設計動機是提供一種基于MapReduce的ad-hoc(計算在query時發生)數據分析工具。

Pig定義了一種數據流語言—Pig Latin,它是MapReduce編程的復雜性的抽象,Pig平臺包括運行環境和用于分析Hadoop數據集的腳本語言(Pig Latin)。

其編譯器將Pig Latin翻譯成MapReduce程序序列將腳本轉換為MapReduce任務在Hadoop上執行。通常用于進行離線分析。

官方網站:

https://pig.apache.org
7.Sqoop(數據ETL/同步工具)
Sqoop是SQL-to-Hadoop的縮寫,主要用于傳統數據庫和Hadoop之前傳輸數據。數據的導入和導出本質上是Mapreduce程序,充分利用了MR的并行化和容錯性。

Sqoop利用數據庫技術描述數據架構,用于在關系數據庫、數據倉庫和Hadoop之間轉移數據。

官方網站:

 https://sqoop.apache.org
8.Flume(日志收集工具)
Cloudera開源的日志收集系統,具有分布式、高可靠、高容錯、易于定制和擴展的特點。它將數據從產生、傳輸、處理并最終寫入目標的路徑的過程抽象為數據流,在具體的數據流中,數據源支持在Flume中定制數據發送方,從而支持收集各種不同協議數據。

同時,Flume數據流提供對日志數據進行簡單處理的能力,如過濾、格式轉換等。此外,Flume還具有能夠將日志寫往各種數據目標(可定制)的能力。

總的來說,Flume是一個可擴展、適合復雜環境的海量日志收集系統。當然也可以用于收集其他類型數據。

官方網站:

 https://flume.apache.org
9.Oozie(工作流調度器)
Oozie是一個基于工作流引擎的服務器,可以在上面運行Hadoop的Map Reduce和Pig任務。它其實就是一個運行在Java Servlet容器(比如Tomcat)中的Javas Web應用。

對于Oozie來說,工作流就是一系列的操作(比如Hadoop的MR,以及Pig的任務),這些操作通過有向無環圖的機制控制。這種控制依賴是說,一個操作的輸入依賴于前一個任務的輸出,只有前一個操作完全完成后,才能開始第二個。

Oozie工作流通過HPDL定義(hPDL是一種XML的流程定義語言)。工作流操作通過遠程系統啟動任務。當任務完成后,遠程系統會進行回調來通知任務已經結束,然后再開始下一個操作。

Oozie工作流包含控制流節點以及操作節點:

控制流節點定義了工作流的開始和結束(start,end以及fail的節點),并控制工作流執行路徑(decision,fork,join節點)。

操作節點是工作流觸發計算\處理任務的執行,Oozie支持不同的任務類型——hadoop map reduce任務,hdfs,Pig,SSH,eMail,Oozie子工作流等等。Oozie可以自定義擴展任務類型。

官方網站:

 https://oozie.apache.org
10.Yarn(分布式資源管理器)
YARN是下一代MapReduce,即MRv2,是在第一代MapReduce基礎上演變而來的,主要是為了解決原始Hadoop擴展性較差,不支持多計算框架而提出的。

yarn是下一代 Hadoop計算平臺,yarn是一個通用的運行框架,用戶可以編寫自己的計算框架,在該運行環境中運行。

用于自己編寫的框架作為客戶端的一個lib,在運用提交作業時打包即可。

該框架提供了以下幾個組件:

資源管理:包括應用程序管理和機器資源管理,資源雙層調度

容錯性:各個組件均有考慮容錯性

擴展性:可擴展到上萬個節點


11.Spark(內存DAG計算模型)
Spark是一個Apache項目,它被標榜為快如閃電的集群計算。它擁有一個繁榮的開源社區,并且是目前最活躍的Apache項目。最早Spark是UC Berkeley AMP lab所開源的類Hadoop MapReduce的通用的并行計算框架。

Spark,擁有Hadoop MapReduce所具有的優點;但不同于MapReduce的是——Job中間輸出結果可以保存在內存中,從而不再需要讀寫HDFS,因此Spark能更好地適用于數據挖掘與機器學習等需要迭代的MapReduce的算法。和Hadoop相比,Spark可以讓程序在內存中運行時速度提升100倍,或者在磁盤上運行時速度提升10倍。

官方網站:

 https://spark.apache.org
12.Kafka(分布式消息隊列)
Kafka是一種高吞吐量的分布式發布/訂閱消息系統,這是官方對kafka的定義,kafka是Apache組織下的一個開源系統,它的最大的特性就是可以實時的處理大量數據以滿足各種需求場景:比如基于hadoop平臺的數據分析、低時延的實時系統、storm/spark流式處理引擎等。kafka現在它已被多家大型公司作為多種類型的數據管道和消息系統使用。

官方網站:

https://kafka.apache.org

以上就是Python hadoop大數據生態圈技術教程的詳細內容,想要了解更多Python教程歡迎持續關注編程學習網。

掃碼二維碼 獲取免費視頻學習資料

Python編程學習

查 看2022高級編程視頻教程免費獲取