1、Hadoop生態(tài)概況
Hadoop是一個(gè)由Apache基金會(huì)所開(kāi)發(fā)的分布式系統(tǒng)集成架構(gòu),用戶可以在不了解分布式底層細(xì)節(jié)情況下,開(kāi)發(fā)分布式程序,充分利用集群的威力來(lái)進(jìn)行高速運(yùn)算與存儲(chǔ),具有可靠、高效、可伸縮的特點(diǎn):
• 高可靠性:提供按位處理的存儲(chǔ)和計(jì)算能力值得用戶信賴。
• 高擴(kuò)展性:可以輕松地從小量集群擴(kuò)展到數(shù)以千計(jì)的節(jié)點(diǎn)中。
• 高效性:提供并發(fā)的分布式計(jì)算框架,處理速度非常快。
• 高容錯(cuò)性:即使在少量節(jié)點(diǎn)宕機(jī)的情況下,也能自動(dòng)完成任務(wù)。
Hadoop的核心是YARN,HDFS,Mapreduce。
2、HDFS
源自谷歌的GFS論文,發(fā)表于2013年10月,HDFS是GFS的克隆版,HDFS是Hadoop體系中數(shù)據(jù)存儲(chǔ)管理的基礎(chǔ),它是一個(gè)高度容錯(cuò)的系統(tǒng),能檢測(cè)和應(yīng)對(duì)硬件故障。
HDFS簡(jiǎn)化了文件一致性模型,通過(guò)流式數(shù)據(jù)訪問(wèn),提供高吞吐量應(yīng)用程序數(shù)據(jù)訪問(wèn)功能,適合帶有大型數(shù)據(jù)集的應(yīng)用程序,它提供了一次寫(xiě)入多次讀取的機(jī)制,數(shù)據(jù)以塊的形式,同時(shí)分布在集群不同物理機(jī)器。
3、Mapreduce
源自于谷歌的MapReduce論文,"Hadoop Map/Reduce是一個(gè)使用簡(jiǎn)易的軟件框架,基于它寫(xiě)出來(lái)的應(yīng)用程序能夠運(yùn)行在由上千個(gè)商用機(jī)器組成的大型集群上,并以一種可靠容錯(cuò)的方式并行處理上T級(jí)別的數(shù)據(jù)集。"Hadoop將MapReduce高度抽象為兩個(gè)階段:Map階段和Reduce階段,每個(gè)階段都以Key/Value對(duì)作為過(guò)程的輸入和輸出,并可以由程序員自己選擇他們的類型。
4、HBASE(分布式列存數(shù)據(jù)庫(kù))
源自谷歌的Bigtable論文,美國(guó)站群服務(wù)器 亞洲服務(wù)器,是一個(gè)建立在HDFS之上,面向列的針對(duì)結(jié)構(gòu)化的數(shù)據(jù)可伸縮,高可靠,高性能分布式和面向列的動(dòng)態(tài)模式數(shù)據(jù)庫(kù)。HBase是一個(gè)分布式的、面向列的開(kāi)源數(shù)據(jù)庫(kù),該技術(shù)來(lái)源于 Fay Chang 所撰寫(xiě)的Google論文“Bigtable:一個(gè)結(jié)構(gòu)化數(shù)據(jù)的分布式存儲(chǔ)系統(tǒng)”。就像Bigtable利用了Google文件系統(tǒng)(File System)所提供的分布式數(shù)據(jù)存儲(chǔ)一樣,HBase在Hadoop之上提供了類似于Bigtable的能力。HBase是Apache的Hadoop項(xiàng)目的子項(xiàng)目。HBase不同于一般的關(guān)系數(shù)據(jù)庫(kù),它是一個(gè)適合于非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)的數(shù)據(jù)庫(kù)。另一個(gè)不同的是HBase基于列的而不是基于行的模式。
5、ZooKeeper
ZooKeeper是一個(gè)分布式的,開(kāi)放源碼的分布式應(yīng)用程序協(xié)調(diào)服務(wù),是Google的Chubby一個(gè)開(kāi)源的實(shí)現(xiàn),它是集群的管理者,監(jiān)視著集群中各個(gè)節(jié)點(diǎn)的狀態(tài)根據(jù)節(jié)點(diǎn)提交的反饋進(jìn)行下一步合理操作。最終,將簡(jiǎn)單易用的接口和性能高效、功能穩(wěn)定的系統(tǒng)提供給用戶。ZooKeeper為其提供:文件系統(tǒng)與通知機(jī)制。
6、HIVE
Hive是基于Hadoop的一個(gè)數(shù)據(jù)倉(cāng)庫(kù),可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張表,并提供類sql查詢功能,Hive底層將sql語(yǔ)句轉(zhuǎn)化為mapreduce任務(wù)運(yùn)行。相對(duì)于用java代碼編寫(xiě)mapreduce來(lái)說(shuō),Hive的優(yōu)勢(shì)明顯:快速開(kāi)發(fā),人員成本低,可擴(kuò)展性(自由擴(kuò)展集群規(guī)模),延展性(支持自定義函數(shù))。
7、Flume
Flume是Cloudera提供的一個(gè)高可用的,高可靠的,分布式的海量日志采集、聚合和傳輸?shù)南到y(tǒng),F(xiàn)lume支持在日志系統(tǒng)中定制各類數(shù)據(jù)發(fā)送方,用于收集數(shù)據(jù);同時(shí),F(xiàn)lume提供對(duì)數(shù)據(jù)進(jìn)行簡(jiǎn)單處理,并寫(xiě)到各種數(shù)據(jù)接受方(可定制)的能力。
當(dāng)前Flume有兩個(gè)版本Flume 0.9X版本的統(tǒng)稱Flume-og,F(xiàn)lume1.X版本的統(tǒng)稱Flume-ng。由于Flume-ng經(jīng)過(guò)重大重構(gòu),與Flume-og有很大不同,云主機(jī),使用時(shí)請(qǐng)注意區(qū)分。
8、Yarn分布式資源管理器
YARN(Yet Another Resource Negotiator, a framework for job scheduling and cluster resource management),Yarn是下一代mapreduce,主要解決原始的Hadoop擴(kuò)展性較差,不支持多種計(jì)算框架而提出的,YARN的優(yōu)秀點(diǎn)是什么,踐行分布式框架設(shè)計(jì)和并行化開(kāi)發(fā)時(shí)有什么啟發(fā)。希望這能加深Hadoop理解和算法開(kāi)發(fā)思路擴(kuò)展,如TensorFlow的多核任務(wù)分配機(jī)制、分布式任務(wù)分配機(jī)制等。
9、spark
Spark是一個(gè)用來(lái)實(shí)現(xiàn)快速而通用的集群計(jì)算的平臺(tái)。擴(kuò)展了廣泛使用的MapReduce計(jì)算模型,而且高效地支持更多的計(jì)算模式,包括交互式查詢和流處理。在處理大規(guī)模數(shù)據(jù)集的時(shí)候,速度是非常重要的。Spark的一個(gè)重要特點(diǎn)就是能夠在內(nèi)存中計(jì)算,因而更快。即使在磁盤(pán)上進(jìn)行的復(fù)雜計(jì)算,Spark依然比MapReduce更加高效。
10、Kafka
Kafka is a distributed,partitioned,replicated commit logservice。它提供了類似于JMS的特性,但是在設(shè)計(jì)實(shí)現(xiàn)上完全不同,此外它并不是JMS規(guī)范的實(shí)現(xiàn)。kafka對(duì)消息保存時(shí)根據(jù)Topic進(jìn)行歸類,發(fā)送消息者成為Producer,消息接受者成為Consumer,此外kafka集群有多個(gè)kafka實(shí)例組成,每個(gè)實(shí)例(server)成為broker。無(wú)論是kafka集群,還是producer和consumer都依賴于zookeeper來(lái)保證系統(tǒng)可用性集群保存一些meta信息。
11、Hadoop偽分布式部署
目前而言,不收費(fèi)的Hadoop版本主要有三個(gè),都是國(guó)外廠商,分別是
1、Apache原始版本
2、CDH版本,對(duì)于國(guó)內(nèi)用戶而言,絕大多數(shù)選擇該版本