2018-07-28-初入Hadoop生態(tài)系統(tǒng)

前言

說(shuō)起Hadoop,知道它是一個(gè)開(kāi)源的、可運(yùn)行于大規(guī)模集群上的分布式計(jì)算平臺(tái)碌宴,實(shí)現(xiàn)了MapReduce計(jì)算模型和分布式文件系統(tǒng)HDFS等功能;但對(duì)Hadoop整個(gè)的生態(tài)不夠了解蒙畴,本著愛(ài)學(xué)習(xí)的態(tài)度贰镣,一塊來(lái)探探hadoop的生態(tài)圈。

關(guān)于Hadoop

日常生活中我們一看到大數(shù)據(jù)和大數(shù)據(jù)相關(guān)的信息就會(huì)想到了hadoop膳凝,但要說(shuō)具體點(diǎn)碑隆,又不知從何說(shuō)起。
hadoop是基于Java開(kāi)發(fā)的蹬音,所以在跨平臺(tái)上有很大的優(yōu)勢(shì)上煤,并且可以部署在廉價(jià)的計(jì)算機(jī)集群中,所以導(dǎo)致hadoop的火熱程度著淆。hadoop的核心是HDFS和MapReduce劫狠,HDFS是針對(duì)谷歌文件系統(tǒng)(GFS)的開(kāi)源實(shí)現(xiàn)拴疤,具有較高的讀寫(xiě)速度、容錯(cuò)性独泞、可伸縮性呐矾,采用MapReduce的整合,可以在不了解分布式系統(tǒng)底層細(xì)節(jié)的情況下開(kāi)發(fā)懦砂。這樣就可以輕松的完成海量數(shù)據(jù)的存儲(chǔ)和計(jì)算蜒犯。

Hadoop的特性

  • 高可靠:采用冗余數(shù)據(jù)存儲(chǔ)方式,這個(gè)即使一個(gè)副本發(fā)生故障荞膘,還有其它的副本保證正常對(duì)外服務(wù)罚随。
  • 高效:采用了分布式存儲(chǔ)和分布式處理兩大核心,能夠很高效的處理大量的數(shù)據(jù)羽资。
  • 高可擴(kuò)展:前面說(shuō)了部署在廉價(jià)的計(jì)算機(jī)集群上毫炉,擴(kuò)展起來(lái)很方便。
  • 成本低:參考高可擴(kuò)展削罩。
  • 高容錯(cuò):參考高可靠,能夠自動(dòng)將失敗任務(wù)重新分配费奸。
  • 平臺(tái):運(yùn)行在Linux上弥激,基于java開(kāi)發(fā)的hadoop跨平臺(tái)優(yōu)勢(shì)可以很好完成。
  • 支持多種語(yǔ)言編程

Hadoop生態(tài)系統(tǒng)

hadoop除了HDFS和MapReduce外愿阐,還還包括了其它很多的功能組件微服。例如:經(jīng)常聽(tīng)到的zookeeper、hbase缨历、hive以蕴、pig、mahout辛孵、sqoop丛肮、flume、ambari等功能組件魄缚。


hadoop生態(tài)系統(tǒng)

下面對(duì)各個(gè)組件做一個(gè)簡(jiǎn)單的概述宝与,比較常用的著重描述。

  • Ambari:一種基于web的工具冶匹,就作用來(lái)說(shuō)习劫,就是創(chuàng)建、管理嚼隘、監(jiān)視Hadoop生態(tài)圈的集群诽里;就是為了讓 Hadoop 以及相關(guān)的大數(shù)據(jù)軟件更容易使用的一個(gè)工具。

    Ambari的Dashboard頁(yè)面

  • Zookeeper:為分布式系統(tǒng)提供一致性協(xié)同服務(wù)飞蛹,像配置服務(wù)谤狡、命名服務(wù)灸眼、分布式同步等,前面服務(wù)發(fā)現(xiàn)這篇文章中也講到了為什么Zookeeper不適合做發(fā)現(xiàn)服務(wù)豌汇,感興趣的可以去了解下幢炸,還有消息中間件里面也講到了Kafka使用Zookeeper來(lái)維護(hù)集群信息。
    下面講講Zookeeper特性

    1. 最終一致性:最重要的性能拒贱,client不論連接到哪個(gè)server宛徊,展示都是同一個(gè)視圖。
    2. 可靠性:具有簡(jiǎn)單逻澳、健壯闸天、良好性能,如果消息被一臺(tái)server接受斜做,它將被所有server接受苞氮。
    3. 實(shí)時(shí)性:保證client在一個(gè)時(shí)間間隔范圍內(nèi)獲得server的更新信息/失效信息,但存在網(wǎng)絡(luò)延時(shí)等原因瓤逼,不能保證所有client同時(shí)得到笼吟,應(yīng)該在讀數(shù)據(jù)之前調(diào)用sync接口同步。
    4. 等待無(wú)關(guān):互不相關(guān)霸旗,慢的或者失效的client不得干涉快的client的請(qǐng)求贷帮。
    5. 原子性:只有成功或者失敗,沒(méi)有中間狀態(tài)诱告。
    6. 順序性:從同一客戶端發(fā)起的事務(wù)請(qǐng)求撵枢,都會(huì)最終被嚴(yán)格的按照其發(fā)送順序被應(yīng)用到zk中,包括全局有序和偏序兩種精居,全局有序好理解锄禽,就是所有的server的發(fā)布消息順序一樣;偏序存在無(wú)法比較的現(xiàn)象靴姿,如果一個(gè)消息B在消息A后被同一個(gè)發(fā)布者發(fā)布沃但,A必將排在B前面。
      Zookeeper的核心是原子廣播佛吓,這個(gè)機(jī)制保證了各個(gè)server之間的同步绽慈,leader崩潰,由server發(fā)起選舉辈毯。
      典型的應(yīng)用場(chǎng)景(配置文件管理坝疼、集群管理、同步鎖谆沃、leader選舉钝凶、隊(duì)列管理等)
      最典型集群模式: Master/Slave 模式(主備模式),Master負(fù)責(zé)寫(xiě),Slave負(fù)責(zé)讀耕陷,但Zookeeper沒(méi)有使這種模式掂名,采用了三種角色。
      Zookeeper中三種角色
    • 領(lǐng)導(dǎo)者(leader):負(fù)責(zé)進(jìn)行發(fā)起投票和決議哟沫,更新系統(tǒng)狀態(tài)饺蔑。
    • 學(xué)習(xí)者:分為跟隨著(follower)和觀察者(observer),前者用于接收客戶請(qǐng)求并向客戶端返回結(jié)果嗜诀,參與投票猾警;后者接收客戶端寫(xiě)請(qǐng)求,轉(zhuǎn)發(fā)給領(lǐng)導(dǎo)者隆敢,不參與投票发皿,只同步領(lǐng)導(dǎo)者的狀態(tài)。
    • 客戶端:請(qǐng)求發(fā)起方拂蝎。
      zookeeper
  • Hbase:一個(gè)實(shí)時(shí)讀寫(xiě)穴墅、分布式的列式數(shù)據(jù)庫(kù),主要是為了彌補(bǔ)Hadoop對(duì)實(shí)時(shí)操作的缺陷温自。和傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)有一個(gè)很重要的區(qū)別是玄货,一個(gè)是基于行,一個(gè)是基于列悼泌∮幔可以說(shuō)它是鍵值存儲(chǔ),也可以說(shuō)它是多時(shí)間版本映射的數(shù)據(jù)庫(kù)券躁。
    四個(gè)描述

    • 行鍵(rowkey):可以理解它為唯一ID,唯一標(biāo)識(shí)掉盅,Hbase是不允許跨行的事務(wù)也拜,所有rowkey和列族的設(shè)計(jì)就尤為重要和取巧。
    • 列族/列鍵(column family):一個(gè)表中必須至少有一個(gè)列族趾痘,列族是由多個(gè)列組成的慢哈,列族是能影響數(shù)據(jù)存儲(chǔ)的物理特性。
    • 列限定符(column key):可以理解為列永票。列族里的數(shù)據(jù)是通過(guò)列限定符來(lái)定位卵贱。列限定符不需要事前定義,這也是和關(guān)系型數(shù)據(jù)庫(kù)的區(qū)別侣集,支持任意擴(kuò)展键俱。
    • 時(shí)間戳(timestamp):可以理解為行鍵、列族世分、列限定符組成了一個(gè)單元(cell),cell是有時(shí)間版本编振,用時(shí)間戳標(biāo)識(shí),默認(rèn)是3個(gè)臭埋。
  • Hive:sql轉(zhuǎn)換MapReduce程序語(yǔ)言踪央,可以減少M(fèi)apReduce jobs編寫(xiě)工作臀玄,Hive提供了類似sql語(yǔ)言的查詢語(yǔ)言-Hive QL,可以通過(guò)Hive QL語(yǔ)句快速實(shí)現(xiàn)簡(jiǎn)單的MapReduce統(tǒng)計(jì),十分適合做數(shù)據(jù)倉(cāng)庫(kù)的統(tǒng)計(jì)分析畅蹂。

  • Pig:在MapReduce上創(chuàng)建了更簡(jiǎn)單的過(guò)程語(yǔ)言抽象健无,提供了一種更接近結(jié)構(gòu)化查詢語(yǔ)言(SQL)的接口,可以理解為Pig最大的作用就是對(duì)MapReduce算法(框架)實(shí)現(xiàn)了一套shell腳本 液斜,稱之為:Pig Latin累贤。

  • Mahout:用于機(jī)器學(xué)習(xí)的一個(gè)框架,旨在幫助更方便快捷創(chuàng)建智能應(yīng)用程序旗唁,包含許多實(shí)現(xiàn)畦浓,聚類、分類检疫、推薦過(guò)濾讶请、頻繁子項(xiàng)挖掘等。

  • MapReduce:一種離線計(jì)算框架屎媳,用于大規(guī)模數(shù)據(jù)集的平行運(yùn)算夺溢,將并行計(jì)算過(guò)程高度抽象到了兩個(gè)函數(shù),Map和Reduce烛谊;這樣就可以在不了解分布式系統(tǒng)底層細(xì)節(jié)的情況下進(jìn)行平行應(yīng)用開(kāi)發(fā)风响,核心思想是:“分而治之”,把輸入的數(shù)據(jù)集切分為若干獨(dú)立的數(shù)據(jù)庫(kù)丹禀,分發(fā)給各個(gè)分節(jié)點(diǎn)共同平行完成状勤,最后聚合結(jié)果得到最終結(jié)果。

  • YARN:調(diào)度系統(tǒng)双泪,資源管理器持搜,最初是為了修復(fù)MapReduce實(shí)現(xiàn)的不足,因?yàn)镸apReduce是采用了Master/Slave 模式焙矛,一個(gè)JobTracker負(fù)責(zé)作業(yè)調(diào)度和資源管理葫盼,多個(gè)TaskTracker負(fù)責(zé)執(zhí)行被指派的具體任務(wù),所以會(huì)存在單點(diǎn)故障村斟、任務(wù)過(guò)重贫导、內(nèi)存溢出、資源劃分不合理等缺陷蟆盹。

  • HDFS:Hadoop分布式文件系統(tǒng)孩灯,是針對(duì)谷歌文件系統(tǒng)GFS的開(kāi)源實(shí)現(xiàn),具有處理超大數(shù)據(jù)逾滥、流式處理钱反、可以運(yùn)行在廉價(jià)商用服務(wù)器上等有點(diǎn)。

  • Flume:分布式的海量日志采集,聚合和傳輸?shù)南到y(tǒng)面哥,F(xiàn)lume具有高可用哎壳,分布式,配置工具尚卫,其設(shè)計(jì)的原理也是基于將數(shù)據(jù)流归榕,如日志數(shù)據(jù)從各種網(wǎng)站服務(wù)器上匯集起來(lái)存儲(chǔ)到HDFS,HBase等集中存儲(chǔ)器中吱涉。

  • Sqoop:SQL-to-Hadoop的縮寫(xiě)刹泄,主要用來(lái)在Hadoop和關(guān)系數(shù)據(jù)庫(kù)之間交換數(shù)據(jù),通過(guò)Sqoop可以方便的將數(shù)據(jù)從關(guān)系數(shù)據(jù)庫(kù)中導(dǎo)入Hadoop怎爵,或者將數(shù)據(jù)從Hadoop導(dǎo)出到關(guān)系數(shù)據(jù)庫(kù)特石,Sqoop主要通過(guò)JDBC和關(guān)系數(shù)據(jù)庫(kù)進(jìn)行交互。

附加幾個(gè)其它的功能組件

  • Storm:Storm是Twitter開(kāi)源的分布式實(shí)時(shí)大數(shù)據(jù)處理框架鳖链,流計(jì)算平臺(tái)姆蘸,優(yōu)點(diǎn)是無(wú)延遲,缺點(diǎn)是不夠靈活芙委,想要統(tǒng)計(jì)的東西必須預(yù)知道逞敷;要達(dá)到更新實(shí)時(shí),在數(shù)據(jù)流進(jìn)來(lái)的時(shí)候就開(kāi)始處理灌侣,比如廣告點(diǎn)擊計(jì)算推捐,它的實(shí)時(shí)性要遠(yuǎn)遠(yuǎn)好于MapReduce計(jì)算框架。

  • Spark:MapReduce計(jì)算框架不適合迭代計(jì)算和交互計(jì)算侧啼,MapReduce是一種磁盤計(jì)算框架牛柒,而Spark則是一種內(nèi)存計(jì)算框架,它將數(shù)據(jù)盡可能放到內(nèi)存中提高迭代應(yīng)用和交互式應(yīng)用的計(jì)算效率痊乾。

  • Pregel:Pregel是Google提出的大規(guī)模分布式圖計(jì)算平臺(tái)皮壁,專門用來(lái)解決網(wǎng)頁(yè)鏈接分析、社交數(shù)據(jù)挖掘等實(shí)際應(yīng)用中涉及的大規(guī)模分布式圖計(jì)算問(wèn)題符喝,Pregel作為分布式圖計(jì)算的計(jì)算框架,主要用于圖遍歷甜孤、最短路徑协饲、PageRank計(jì)算等。

針對(duì)Hadoop的改進(jìn)和提升
Hadoop框架自身的改進(jìn)缴川,從1.0到2.0

組件 Hadoop1.0的問(wèn)題 Hadoop2.0的改進(jìn)
HDFS 單一名稱節(jié)點(diǎn)茉稠,存在單點(diǎn)失效問(wèn)題 設(shè)計(jì)了HDFS HA,提供名稱節(jié)點(diǎn)熱備份機(jī)制
單一命名空間把夸,無(wú)法實(shí)現(xiàn)資源隔離 設(shè)計(jì)了HDFS聯(lián)邦而线,管理多個(gè)命名空間
MapReduce 資源管理效率底 設(shè)計(jì)了新的資源管理框架YARN

不斷完善的Hadoop生態(tài)系統(tǒng)

組件 功能 解決Hadoop中存在的問(wèn)題
Pig 處理大規(guī)模數(shù)據(jù)的腳本語(yǔ)言,用戶只要編寫(xiě)幾條簡(jiǎn)單的語(yǔ)句,系統(tǒng)會(huì)自動(dòng)轉(zhuǎn)換為MapReduce作業(yè) 抽象層次低膀篮,需要手工編寫(xiě)大量代碼
Oozie 工作流和協(xié)作服務(wù)引擎嘹狞,協(xié)調(diào)Hadoop上運(yùn)行的不同任務(wù) 沒(méi)有提供作業(yè)依賴關(guān)系管理機(jī)制,需要用戶自己處理作業(yè)之間的依賴關(guān)系
Tez 支持DAG作業(yè)的計(jì)算框架誓竿,對(duì)作業(yè)的操作進(jìn)行重新分解和組合磅网,形成一個(gè)搭的DAG作業(yè),減少不必要操作 不同的MapReduce任務(wù)之間存在重復(fù)操作筷屡,降低了效率
Kafka 分布式發(fā)布訂閱消息系統(tǒng)涧偷,不同類型的分布式系統(tǒng)可以統(tǒng)一接入到Kafka,實(shí)現(xiàn)和Hadoop各個(gè)組件之間的不同類型數(shù)據(jù)的實(shí)時(shí)高效交換 Hadoop生態(tài)系統(tǒng)中各個(gè)組件和其它產(chǎn)品之間缺乏統(tǒng)一的毙死、高效的數(shù)據(jù)交換中介

結(jié)語(yǔ)

這里主要是對(duì)Hadoop生態(tài)系統(tǒng)的一些功能組件做一個(gè)簡(jiǎn)單的歸類描述燎潮,不涉及到具體的實(shí)現(xiàn)。
感興趣的可以看看個(gè)別組件功能的詳細(xì)實(shí)戰(zhàn)扼倘。
淺談Hbase與中間的一些設(shè)計(jì)策略
個(gè)人博客~
簡(jiǎn)書(shū)~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末确封,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子唉锌,更是在濱河造成了極大的恐慌隅肥,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,544評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件袄简,死亡現(xiàn)場(chǎng)離奇詭異腥放,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)绿语,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門秃症,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人吕粹,你說(shuō)我怎么就攤上這事种柑。” “怎么了匹耕?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,764評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵聚请,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我稳其,道長(zhǎng)驶赏,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,193評(píng)論 1 292
  • 正文 為了忘掉前任既鞠,我火速辦了婚禮煤傍,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘嘱蛋。我一直安慰自己蚯姆,他們只是感情好五续,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著龄恋,像睡著了一般疙驾。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上篙挽,一...
    開(kāi)封第一講書(shū)人閱讀 51,182評(píng)論 1 299
  • 那天荆萤,我揣著相機(jī)與錄音,去河邊找鬼铣卡。 笑死链韭,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的煮落。 我是一名探鬼主播敞峭,決...
    沈念sama閱讀 40,063評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼蝉仇!你這毒婦竟也來(lái)了旋讹?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,917評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤轿衔,失蹤者是張志新(化名)和其女友劉穎沉迹,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體害驹,經(jīng)...
    沈念sama閱讀 45,329評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鞭呕,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了宛官。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片葫松。...
    茶點(diǎn)故事閱讀 39,722評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖底洗,靈堂內(nèi)的尸體忽然破棺而出腋么,到底是詐尸還是另有隱情,我是刑警寧澤亥揖,帶...
    沈念sama閱讀 35,425評(píng)論 5 343
  • 正文 年R本政府宣布珊擂,位于F島的核電站,受9級(jí)特大地震影響费变,放射性物質(zhì)發(fā)生泄漏摧扇。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評(píng)論 3 326
  • 文/蒙蒙 一胡控、第九天 我趴在偏房一處隱蔽的房頂上張望扳剿。 院中可真熱鬧旁趟,春花似錦昼激、人聲如沸庇绽。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,671評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)瞧掺。三九已至,卻和暖如春凡傅,著一層夾襖步出監(jiān)牢的瞬間辟狈,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,825評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工夏跷, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留哼转,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,729評(píng)論 2 368
  • 正文 我出身青樓槽华,卻偏偏與公主長(zhǎng)得像壹蔓,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子猫态,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評(píng)論 2 353

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

  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 31,928評(píng)論 2 89
  • Zookeeper用于集群主備切換佣蓉。 YARN讓集群具備更好的擴(kuò)展性。 Spark沒(méi)有存儲(chǔ)能力亲雪。 Spark的Ma...
    Yobhel閱讀 7,267評(píng)論 0 34
  • 終極算法 關(guān)注微信號(hào)每天收聽(tīng)我們的消息終極算法為您推送精品閱讀 前言 Hadoop 在大數(shù)據(jù)技術(shù)體系中的地位至關(guān)...
    Yespon閱讀 129,861評(píng)論 12 168
  • 【什么是大數(shù)據(jù)勇凭、大數(shù)據(jù)技術(shù)】 大數(shù)據(jù),又稱巨量資料义辕,指的是所涉及的數(shù)據(jù)資料量規(guī)模巨大到無(wú)法在合理時(shí)間內(nèi)通過(guò)傳統(tǒng)的應(yīng)...
    kimibob閱讀 2,743評(píng)論 0 51
  • 想去轉(zhuǎn)山的緣起 五月之后终息,身體就像一個(gè)老房子被蛀蟲(chóng)啃噬夺巩,開(kāi)始不動(dòng)聲色的全面腐朽,已經(jīng)影響到我的日常聞思功課和為社會(huì)...
    倪銘憶閱讀 2,347評(píng)論 2 2