Hadoop生態(tài)圈

一鹉究、 hadoop 生態(tài)概況

Hadoop是一個(gè)由Apache基金會(huì)所開(kāi)發(fā)的分布式系統(tǒng)基礎(chǔ)架構(gòu)楣责。

用戶(hù)可以在不了解分布式底層細(xì)節(jié)的情況下,開(kāi)發(fā)分布式程序档玻。充分利用集群的威力進(jìn)行高速運(yùn)算和存儲(chǔ)躏率。

具有可靠躯畴、高效、可伸縮的特點(diǎn)薇芝。

Hadoop的核心是YARN,HDFS和Mapreduce

下圖是hadoop生態(tài)系統(tǒng)蓬抄,集成spark生態(tài)圈。

二夯到、廚房里面的Hadoop

1嚷缭、大數(shù)據(jù),首先你要能存的下大數(shù)據(jù)耍贾。

傳統(tǒng)的文件系統(tǒng)是單機(jī)的阅爽,不能橫跨不同的機(jī)器。HDFS(Hadoop Distributed FileSystem)的設(shè)計(jì)本質(zhì)上是為了大量的數(shù)據(jù)能橫跨成百上千臺(tái)機(jī)器荐开,但是你看到的是一個(gè)文件系統(tǒng)而不是很多文件系統(tǒng)付翁。比如你說(shuō)我要獲取/hdfs/tmp/file1的數(shù)據(jù),你引用的是一個(gè)文件路徑晃听,但是實(shí)際的數(shù)據(jù)存放在很多不同的機(jī)器上百侧。你作為用戶(hù)砰识,不需要知道這些,就好比在單機(jī)上你不關(guān)心文件分散在什么磁道什么扇區(qū)一樣佣渴。HDFS為你管理這些數(shù)據(jù)辫狼。

2、存的下數(shù)據(jù)之后辛润,你就開(kāi)始考慮怎么處理數(shù)據(jù)膨处。

雖然HDFS可以為你整體管理不同機(jī)器上的數(shù)據(jù),但是這些數(shù)據(jù)太大了砂竖。一臺(tái)機(jī)器讀取成T上P的數(shù)據(jù)(很大的數(shù)據(jù)哦灵迫,比如整個(gè)東京熱有史以來(lái)所有高清電影的大小甚至更大),一臺(tái)機(jī)器慢慢跑也許需要好幾天甚至好幾周晦溪。對(duì)于很多公司來(lái)說(shuō),單機(jī)處理是不可忍受的挣跋,比如微博要更新24小時(shí)熱博三圆,它必須在24小時(shí)之內(nèi)跑完這些處理。那么我如果要用很多臺(tái)機(jī)器處理避咆,我就面臨了如何分配工作舟肉,如果一臺(tái)機(jī)器掛了如何重新啟動(dòng)相應(yīng)的任務(wù),機(jī)器之間如何互相通信交換數(shù)據(jù)以完成復(fù)雜的計(jì)算等等查库。這就是MapReduce / Tez / Spark的功能路媚。MapReduce是第一代計(jì)算引擎,Tez和Spark是第二代樊销。MapReduce的設(shè)計(jì)整慎,采用了很簡(jiǎn)化的計(jì)算模型,只有Map和Reduce兩個(gè)計(jì)算過(guò)程(中間用Shuffle串聯(lián))围苫,用這個(gè)模型裤园,已經(jīng)可以處理大數(shù)據(jù)領(lǐng)域很大一部分問(wèn)題了。

3剂府、那什么是Map什么是Reduce拧揽?

考慮如果你要統(tǒng)計(jì)一個(gè)巨大的文本文件存儲(chǔ)在類(lèi)似HDFS上,你想要知道這個(gè)文本里各個(gè)詞的出現(xiàn)頻率腺占。你啟動(dòng)了一個(gè)MapReduce程序淤袜。Map階段,幾百臺(tái)機(jī)器同時(shí)讀取這個(gè)文件的各個(gè)部分衰伯,分別把各自讀到的部分分別統(tǒng)計(jì)出詞頻铡羡,產(chǎn)生類(lèi)似(hello, 12100次),(world意鲸,15214次)等等這樣的Pair(我這里把Map和Combine放在一起說(shuō)以便簡(jiǎn)化)蓖墅;這幾百臺(tái)機(jī)器各自都產(chǎn)生了如上的集合库倘,然后又有幾百臺(tái)機(jī)器啟動(dòng)Reduce處理。Reducer機(jī)器A將從Mapper機(jī)器收到所有以A開(kāi)頭的統(tǒng)計(jì)結(jié)果论矾,機(jī)器B將收到B開(kāi)頭的詞匯統(tǒng)計(jì)結(jié)果(當(dāng)然實(shí)際上不會(huì)真的以字母開(kāi)頭做依據(jù)教翩,而是用函數(shù)產(chǎn)生Hash值以避免數(shù)據(jù)串化。因?yàn)轭?lèi)似X開(kāi)頭的詞肯定比其他要少得多贪壳,而你不希望數(shù)據(jù)處理各個(gè)機(jī)器的工作量相差懸殊)饱亿。然后這些Reducer將再次匯總,(hello闰靴,12100)+(hello彪笼,12311)+(hello,345881)= (hello蚂且,370292)配猫。每個(gè)Reducer都如上處理,你就得到了整個(gè)文件的詞頻結(jié)果杏死。

這看似是個(gè)很簡(jiǎn)單的模型泵肄,但很多算法都可以用這個(gè)模型描述了。

Map+Reduce的簡(jiǎn)單模型很黃很暴力淑翼,雖然好用腐巢,但是很笨重。第二代的Tez和Spark除了內(nèi)存Cache之類(lèi)的新feature玄括,本質(zhì)上來(lái)說(shuō)冯丙,是讓Map/Reduce模型更通用,讓Map和Reduce之間的界限更模糊遭京,數(shù)據(jù)交換更靈活胃惜,更少的磁盤(pán)讀寫(xiě),以便更方便地描述復(fù)雜算法哪雕,取得更高的吞吐量蛹疯。

有了MapReduce,Tez和Spark之后热监,程序員發(fā)現(xiàn)捺弦,MapReduce的程序?qū)懫饋?lái)真麻煩。他們希望簡(jiǎn)化這個(gè)過(guò)程孝扛。這就好比你有了匯編語(yǔ)言列吼,雖然你幾乎什么都能干了,但是你還是覺(jué)得繁瑣苦始。你希望有個(gè)更高層更抽象的語(yǔ)言層來(lái)描述算法和數(shù)據(jù)處理流程寞钥。于是就有了Pig和Hive。Pig是接近腳本方式去描述MapReduce陌选,Hive則用的是SQL理郑。它們把腳本和SQL語(yǔ)言翻譯成MapReduce程序蹄溉,丟給計(jì)算引擎去計(jì)算,而你就從繁瑣的MapReduce程序中解脫出來(lái)您炉,用更簡(jiǎn)單更直觀的語(yǔ)言去寫(xiě)程序了柒爵。

有了Hive之后,人們發(fā)現(xiàn)SQL對(duì)比Java有巨大的優(yōu)勢(shì)赚爵。一個(gè)是它太容易寫(xiě)了棉胀。剛才詞頻的東西,用SQL描述就只有一兩行冀膝,MapReduce寫(xiě)起來(lái)大約要幾十上百行唁奢。而更重要的是,非計(jì)算機(jī)背景的用戶(hù)終于感受到了愛(ài):我也會(huì)寫(xiě)SQL窝剖!于是數(shù)據(jù)分析人員終于從乞求工程師幫忙的窘境解脫出來(lái)麻掸,工程師也從寫(xiě)奇怪的一次性的處理程序中解脫出來(lái)。大家都開(kāi)心了赐纱。Hive逐漸成長(zhǎng)成了大數(shù)據(jù)倉(cāng)庫(kù)的核心組件脊奋。甚至很多公司的流水線作業(yè)集完全是用SQL描述,因?yàn)橐讓?xiě)易改千所,一看就懂,容易維護(hù)蒜埋。

自從數(shù)據(jù)分析人員開(kāi)始用Hive分析數(shù)據(jù)之后淫痰,它們發(fā)現(xiàn),Hive在MapReduce上跑整份,真雞巴慢待错!流水線作業(yè)集也許沒(méi)啥關(guān)系,比如24小時(shí)更新的推薦烈评,反正24小時(shí)內(nèi)跑完就算了火俄。但是數(shù)據(jù)分析,人們總是希望能跑更快一些讲冠。比如我希望看過(guò)去一個(gè)小時(shí)內(nèi)多少人在充氣娃娃頁(yè)面駐足瓜客,分別停留了多久,對(duì)于一個(gè)巨型網(wǎng)站海量數(shù)據(jù)下竿开,這個(gè)處理過(guò)程也許要花幾十分鐘甚至很多小時(shí)谱仪。而這個(gè)分析也許只是你萬(wàn)里長(zhǎng)征的第一步,你還要看多少人瀏覽了跳蛋多少人看了拉赫曼尼諾夫的CD否彩,以便跟老板匯報(bào)疯攒,我們的用戶(hù)是猥瑣男悶騷女更多還是文藝青年/少女更多。你無(wú)法忍受等待的折磨列荔,只能跟帥帥的工程師蟈蟈說(shuō)敬尺,快枚尼,快,再快一點(diǎn)砂吞!

于是Impala署恍,Presto,Drill誕生了(當(dāng)然還有無(wú)數(shù)非著名的交互SQL引擎呜舒,就不一一列舉了)锭汛。三個(gè)系統(tǒng)的核心理念是,MapReduce引擎太慢袭蝗,因?yàn)樗ㄓ没脚梗珡?qiáng)壯,太保守到腥,我們SQL需要更輕量朵逝,更激進(jìn)地獲取資源,更專(zhuān)門(mén)地對(duì)SQL做優(yōu)化乡范,而且不需要那么多容錯(cuò)性保證(因?yàn)橄到y(tǒng)出錯(cuò)了大不了重新啟動(dòng)任務(wù)配名,如果整個(gè)處理時(shí)間更短的話(huà),比如幾分鐘之內(nèi))晋辆。這些系統(tǒng)讓用戶(hù)更快速地處理SQL任務(wù)渠脉,犧牲了通用性穩(wěn)定性等特性。如果說(shuō)MapReduce是大砍刀瓶佳,砍啥都不怕芋膘,那上面三個(gè)就是剔骨刀,靈巧鋒利霸饲,但是不能搞太大太硬的東西为朋。

這些系統(tǒng),說(shuō)實(shí)話(huà)厚脉,一直沒(méi)有達(dá)到人們期望的流行度习寸。因?yàn)檫@時(shí)候又兩個(gè)異類(lèi)被造出來(lái)了。他們是Hive on Tez / Spark和SparkSQL傻工。它們的設(shè)計(jì)理念是霞溪,MapReduce慢,但是如果我用新一代通用計(jì)算引擎Tez或者Spark來(lái)跑SQL中捆,那我就能跑的更快威鹿。而且用戶(hù)不需要維護(hù)兩套系統(tǒng)。這就好比如果你廚房小轨香,人又懶忽你,對(duì)吃的精細(xì)程度要求有限,那你可以買(mǎi)個(gè)電飯煲臂容,能蒸能煲能燒科雳,省了好多廚具根蟹。

上面的介紹,基本就是一個(gè)數(shù)據(jù)倉(cāng)庫(kù)的構(gòu)架了糟秘。底層HDFS简逮,上面跑MapReduce/Tez/Spark,在上面跑Hive尿赚,Pig散庶。或者HDFS上直接跑Impala凌净,Drill悲龟,Presto。這解決了中低速數(shù)據(jù)處理的要求冰寻。

4须教、那如果我要更高速的處理呢?

如果我是一個(gè)類(lèi)似微博的公司斩芭,我希望顯示不是24小時(shí)熱博轻腺,我想看一個(gè)不斷變化的熱播榜,更新延遲在一分鐘之內(nèi)划乖,上面的手段都將無(wú)法勝任贬养。于是又一種計(jì)算模型被開(kāi)發(fā)出來(lái),這就是Streaming(流)計(jì)算琴庵。Storm是最流行的流計(jì)算平臺(tái)误算。流計(jì)算的思路是,如果要達(dá)到更實(shí)時(shí)的更新细卧,我何不在數(shù)據(jù)流進(jìn)來(lái)的時(shí)候就處理了尉桩?比如還是詞頻統(tǒng)計(jì)的例子筒占,我的數(shù)據(jù)流是一個(gè)一個(gè)的詞贪庙,我就讓他們一邊流過(guò)我就一邊開(kāi)始統(tǒng)計(jì)了。流計(jì)算很牛逼翰苫,基本無(wú)延遲止邮,但是它的短處是,不靈活奏窑,你想要統(tǒng)計(jì)的東西必須預(yù)先知道导披,畢竟數(shù)據(jù)流過(guò)就沒(méi)了,你沒(méi)算的東西就無(wú)法補(bǔ)算了埃唯。因此它是個(gè)很好的東西撩匕,但是無(wú)法替代上面數(shù)據(jù)倉(cāng)庫(kù)和批處理系統(tǒng)。

還有一個(gè)有些獨(dú)立的模塊是KV Store墨叛,比如Cassandra止毕,HBase模蜡,MongoDB以及很多很多很多很多其他的(多到無(wú)法想象)。所以KV Store就是說(shuō)扁凛,我有一堆鍵值忍疾,我能很快速滴獲取與這個(gè)Key綁定的數(shù)據(jù)。比如我用身份證號(hào)谨朝,能取到你的身份數(shù)據(jù)卤妒。這個(gè)動(dòng)作用MapReduce也能完成,但是很可能要掃描整個(gè)數(shù)據(jù)集字币。而KV Store專(zhuān)用來(lái)處理這個(gè)操作则披,所有存和取都專(zhuān)門(mén)為此優(yōu)化了。從幾個(gè)P的數(shù)據(jù)中查找一個(gè)身份證號(hào)纬朝,也許只要零點(diǎn)幾秒收叶。這讓大數(shù)據(jù)公司的一些專(zhuān)門(mén)操作被大大優(yōu)化了。比如我網(wǎng)頁(yè)上有個(gè)根據(jù)訂單號(hào)查找訂單內(nèi)容的頁(yè)面共苛,而整個(gè)網(wǎng)站的訂單數(shù)量無(wú)法單機(jī)數(shù)據(jù)庫(kù)存儲(chǔ)判没,我就會(huì)考慮用KV Store來(lái)存。KV Store的理念是隅茎,基本無(wú)法處理復(fù)雜的計(jì)算澄峰,大多沒(méi)法JOIN,也許沒(méi)法聚合辟犀,沒(méi)有強(qiáng)一致性保證(不同數(shù)據(jù)分布在不同機(jī)器上俏竞,你每次讀取也許會(huì)讀到不同的結(jié)果,也無(wú)法處理類(lèi)似銀行轉(zhuǎn)賬那樣的強(qiáng)一致性要求的操作)堂竟。但是丫就是快魂毁。極快。

每個(gè)不同的KV Store設(shè)計(jì)都有不同取舍出嘹,有些更快席楚,有些容量更高,有些可以支持更復(fù)雜的操作税稼。必有一款適合你烦秩。

除此之外,還有一些更特制的系統(tǒng)/組件郎仆,比如Mahout是分布式機(jī)器學(xué)習(xí)庫(kù)只祠,Protobuf是數(shù)據(jù)交換的編碼和庫(kù),ZooKeeper是高一致性的分布存取協(xié)同系統(tǒng)扰肌,Kafka是分布式消息隊(duì)列抛寝,它主要用于處理活躍的流式數(shù)據(jù),等等。

有了這么多亂七八糟的工具盗舰,都在同一個(gè)集群上運(yùn)轉(zhuǎn)猴凹,大家需要互相尊重有序工作。所以另外一個(gè)重要組件是岭皂,調(diào)度系統(tǒng)〗荐現(xiàn)在最流行的是Yarn。你可以把他看作中央管理爷绘,好比你媽在廚房監(jiān)工书劝,哎,你妹妹切菜切完了土至,你可以把刀拿去殺雞了购对。只要大家都服從你媽分配,那大家都能愉快滴燒菜陶因。

你可以認(rèn)為骡苞,大數(shù)據(jù)生態(tài)圈就是一個(gè)廚房工具生態(tài)圈。為了做不同的菜楷扬,中國(guó)菜解幽,日本菜,法國(guó)菜烘苹,你需要各種不同的工具躲株。而且客人的需求正在復(fù)雜化,你的廚具不斷被發(fā)明镣衡,也沒(méi)有一個(gè)萬(wàn)用的廚具可以處理所有情況霜定,因此它會(huì)變的越來(lái)越復(fù)雜。

參考文章:一文看懂大數(shù)據(jù)的技術(shù)生態(tài)圈:Hadoop hive spark都有了

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末廊鸥,一起剝皮案震驚了整個(gè)濱河市望浩,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌惰说,老刑警劉巖磨德,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異助被,居然都是意外死亡剖张,警方通過(guò)查閱死者的電腦和手機(jī)切诀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)揩环,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人幅虑,你說(shuō)我怎么就攤上這事丰滑。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵褒墨,是天一觀的道長(zhǎng)炫刷。 經(jīng)常有香客問(wèn)我,道長(zhǎng)郁妈,這世上最難降的妖魔是什么浑玛? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮噩咪,結(jié)果婚禮上顾彰,老公的妹妹穿的比我還像新娘。我一直安慰自己胃碾,他們只是感情好涨享,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著仆百,像睡著了一般厕隧。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上俄周,一...
    開(kāi)封第一講書(shū)人閱讀 51,125評(píng)論 1 297
  • 那天吁讨,我揣著相機(jī)與錄音,去河邊找鬼峦朗。 笑死挡爵,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的甚垦。 我是一名探鬼主播茶鹃,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼艰亮!你這毒婦竟也來(lái)了闭翩?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤迄埃,失蹤者是張志新(化名)和其女友劉穎疗韵,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體侄非,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蕉汪,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了逞怨。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片者疤。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖叠赦,靈堂內(nèi)的尸體忽然破棺而出驹马,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布糯累,位于F島的核電站算利,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏泳姐。R本人自食惡果不足惜效拭,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望胖秒。 院中可真熱鬧允耿,春花似錦、人聲如沸扒怖。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)盗痒。三九已至蚂蕴,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間俯邓,已是汗流浹背骡楼。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留稽鞭,地道東北人鸟整。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像朦蕴,于是被迫代替她去往敵國(guó)和親篮条。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容