天天看點

大資料Hadoop入門需要填的坑

1、Hadoop生态概況

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

高可靠性:提供按位處理的存儲和計算能力值得使用者信賴。

高擴充性:可以輕松地從小量叢集擴充到數以千計的節點中。

高效性:提供并發的分布式計算架構,處理速度非常快。

高容錯性:即使在少量節點當機的情況下,也能自動完成任務。

Hadoop的核心是YARN,HDFS,Mapreduce。

2、HDFS

源自谷歌的GFS論文,發表于2013年10月,HDFS是GFS的克隆版,HDFS是Hadoop體系中資料存儲管理的基礎,它是一個高度容錯的系統,能檢測和應對硬體故障。

HDFS簡化了檔案一緻性模型,通過流式資料通路,提供高吞吐量應用程式資料通路功能,适合帶有大型資料集的應用程式,它提供了一次寫入多次讀取的機制,資料以塊的形式,同時分布在叢集不同實體機器。

3、Mapreduce

源自于谷歌的MapReduce論文,"Hadoop Map/Reduce是一個使用簡易的軟體架構,基于它寫出來的應用程式能夠運作在由上千個商用機器組成的大型叢集上,并以一種可靠容錯的方式并行處理上T級别的資料集。"Hadoop将MapReduce高度抽象為兩個階段:Map階段和Reduce階段,每個階段都以Key/Value對作為過程的輸入和輸出,并可以由程式員自己選擇他們的類型。

4、HBASE(分布式列存資料庫)

源自谷歌的Bigtable論文,是一個建立在HDFS之上,面向列的針對結構化的資料可伸縮,高可靠,高性能分布式和面向列的動态模式資料庫。HBase是一個分布式的、面向列的開源資料庫,該技術來源于 Fay Chang 所撰寫的Google論文“Bigtable:一個結構化資料的分布式存儲系統”。就像Bigtable利用了Google檔案系統(File System)所提供的分布式資料存儲一樣,HBase在Hadoop之上提供了類似于Bigtable的能力。HBase是Apache的Hadoop項目的子項目。HBase不同于一般的關系資料庫,它是一個适合于非結構化資料存儲的資料庫。另一個不同的是HBase基于列的而不是基于行的模式。

5、ZooKeeper

ZooKeeper是一個分布式的,開放源碼的分布式應用程式協調服務,是Google的Chubby一個開源的實作,它是叢集的管理者,監視着叢集中各個節點的狀态根據節點送出的回報進行下一步合理操作。最終,将簡單易用的接口和性能高效、功能穩定的系統提供給使用者。ZooKeeper為其提供:檔案系統與通知機制。

6、HIVE

Hive是基于Hadoop的一個資料倉庫,可以将結構化的資料檔案映射為一張表,并提供類sql查詢功能,Hive底層将sql語句轉化為mapreduce任務運作。相對于用java代碼編寫mapreduce來說,Hive的優勢明顯:快速開發,人員成本低,可擴充性(自由擴充叢集規模),延展性(支援自定義函數)。

7、Flume

Flume是Cloudera提供的一個高可用的,高可靠的,分布式的海量日志采集、聚合和傳輸的系統,Flume支援在日志系統中定制各類資料發送方,用于收集資料;同時,Flume提供對資料進行簡單處理,并寫到各種資料接受方(可定制)的能力。

目前Flume有兩個版本Flume 0.9X版本的統稱Flume-og,Flume1.X版本的統稱Flume-ng。由于Flume-ng經過重大重構,與Flume-og有很大不同,使用時請注意區分。

8、Yarn分布式資料總管

YARN(Yet Another Resource Negotiator, a framework for job scheduling and cluster resource management),Yarn是下一代mapreduce,主要解決原始的Hadoop擴充性較差,不支援多種計算架構而提出的,YARN的優秀點是什麼,踐行分布式架構設計和并行化開發時有什麼啟發。希望這能加深Hadoop了解和算法開發思路擴充,如TensorFlow的多核任務配置設定機制、分布式任務配置設定機制等。

9、spark

Spark是一個用來實作快速而通用的叢集計算的平台。擴充了廣泛使用的MapReduce計算模型,而且高效地支援更多的計算模式,包括互動式查詢和流處理。在處理大規模資料集的時候,速度是非常重要的。Spark的一個重要特點就是能夠在記憶體中計算,因而更快。即使在磁盤上進行的複雜計算,Spark依然比MapReduce更加高效。

10、Kafka

Kafka is a distributed,partitioned,replicated commit logservice。它提供了類似于JMS的特性,但是在設計實作上完全不同,此外它并不是JMS規範的實作。kafka對消息儲存時根據Topic進行歸類,發送消息者成為Producer,消息接受者成為Consumer,此外kafka叢集有多個kafka執行個體組成,每個執行個體(server)成為broker。無論是kafka叢集,還是producer和consumer都依賴于zookeeper來保證系統可用性叢集儲存一些meta資訊。

11、Hadoop僞分布式部署

目前而言,不收費的Hadoop版本主要有三個,都是國外廠商,分别是

1、Apache原始版本

2、CDH版本,對于國内使用者而言,絕大多數選擇該版本

3、HDP版本