哈嘍痛悯,大家好余黎,我是漢斯老師。近幾年來载萌,互聯(lián)網(wǎng)行業(yè)由于較高的薪資收入惧财,受到許多人的追捧。很多年輕的學(xué)子扭仁,或是其他行業(yè)的有志青年垮衷,都想要投身到這個行業(yè)中來。然而一方面受到“互聯(lián)網(wǎng)寒冬”的影響乖坠,最近頻頻傳出各家知名互聯(lián)網(wǎng)公司裁員縮編的消息搀突;另一方面,大量的人才涌入熊泵,又使得互聯(lián)網(wǎng)產(chǎn)業(yè)在職場上呈現(xiàn)出供過于求的特征仰迁,并最終導(dǎo)致了職場上的激烈競爭。那么互聯(lián)網(wǎng)行業(yè)未來的潛力在哪里顽分?我們又應(yīng)該在哪個方向上發(fā)力徐许,才能保證自己可以獲得一份高薪而穩(wěn)定的工作?基于多年的互聯(lián)網(wǎng)行業(yè)從業(yè)經(jīng)驗怯邪,漢斯老師在這里向大家推薦大數(shù)據(jù)方向绊寻,希望通過本人的《三分鐘入門大數(shù)據(jù)》和《十分鐘精通大數(shù)據(jù)》等系列文章,幫助所有有志了解學(xué)習(xí)大數(shù)據(jù)的朋友掌握大數(shù)據(jù)的相關(guān)知識悬秉,也歡迎所有對互聯(lián)網(wǎng)行業(yè)以及大數(shù)據(jù)領(lǐng)域感興趣的朋友前來交流。
大數(shù)據(jù)系統(tǒng)冰蘑,或者說大數(shù)據(jù)生態(tài)體系的組成和泌,是大部分大數(shù)據(jù)開發(fā)人員必須要了解和掌握的知識。那么最基本的大數(shù)據(jù)系統(tǒng)都包含什么呢祠肥?首先讓我們來看一下下面這張非常經(jīng)典的大數(shù)據(jù)系統(tǒng)組件圖吧武氓。
以上就是一個基本的大數(shù)據(jù)系統(tǒng)所包含的組件了。當(dāng)然仇箱,對于一些剛進(jìn)入這個領(lǐng)域的朋友县恕,可能對這張圖的解讀不是那么明確,以下我會用對應(yīng)的一張圖和相應(yīng)的文字來說明各個組件的作用剂桥。
HDFS: 用于存放一切信息的分布式的文件系統(tǒng)忠烛。大數(shù)據(jù)系統(tǒng)由于其涉及到的數(shù)據(jù)量較大所以往往需要仰賴于一個數(shù)據(jù)倉庫系統(tǒng),將所有的數(shù)據(jù)能夠分門別類地存儲起來权逗,而HDFS就是這樣一個倉庫美尸。需要注意一點冤议,HDFS并不是我們通常實際用來查詢或者處理數(shù)據(jù)的數(shù)據(jù)倉庫組件,其更像是倉庫本身师坎,是一個偏硬件恕酸,偏系統(tǒng)化的概念,用于將所有的信息都囊括進(jìn)去胯陋。
MapReduce:用于實際進(jìn)行計算數(shù)據(jù)的編程模型蕊温,其特質(zhì)強(qiáng)調(diào)分布式與并行《羟牵可以說义矛,MapReduce是真正實現(xiàn)對大量數(shù)據(jù)進(jìn)行操作和處理的工具。其具體的實現(xiàn)和例子按灶,我們會在之后的文章中詳細(xì)介紹症革。
ZooKeeper:負(fù)責(zé)大數(shù)據(jù)系統(tǒng)中,統(tǒng)一管理調(diào)度整個倉庫運作的工程班鸯旁。我們可以想象得到噪矛,一個復(fù)雜的系統(tǒng)想要能夠穩(wěn)定運作下去,其必須需要一個相應(yīng)的角色铺罢,專職負(fù)責(zé)統(tǒng)一調(diào)度整個系統(tǒng)的資源艇挨,發(fā)布任務(wù),協(xié)調(diào)各個組件之間的運行韭赘。ZooKeeper就是這樣一個角色缩滨,可以這樣說,ZooKeeper的存在泉瞻,使得分布式的系統(tǒng)在協(xié)調(diào)運作上得到的保證脉漏。
HBase:存放數(shù)據(jù)的架子。當(dāng)我們有了存儲和處理數(shù)據(jù)的倉庫以后袖牙,我們肯定不能將數(shù)據(jù)雜亂的堆積到倉庫中吧侧巨?HBase就是倉庫中的架子,我們在拿到數(shù)據(jù)后鞭达,會將數(shù)據(jù)放到相應(yīng)的架子中司忱,這樣以后當(dāng)我們需要使用或者處理數(shù)據(jù)時,只需要去找到相應(yīng)的架子就好了畴蹭。所以HBase具備一些數(shù)據(jù)庫的功能坦仍,然而這里要強(qiáng)調(diào)一下,HBase是一個Nosql的數(shù)據(jù)庫叨襟。稍后我們會詳細(xì)說明繁扎,Nosql數(shù)據(jù)庫與常用的數(shù)據(jù)庫之間的區(qū)別與聯(lián)系是什么。
Hive:查找數(shù)據(jù)的工具芹啥。從前面這個定義可以看出來锻离,Hive其實和HBase在功能上有很多相似的地方铺峭,它們都可以查找數(shù)據(jù),然而Hive本質(zhì)上只是查找數(shù)據(jù)的功能汽纠,其不能更新數(shù)據(jù)(但是可以寫入)卫键。而HBase中,常用的增刪改查都是支持的虱朵。
Pig:處理數(shù)據(jù)的工具莉炉。Pig是基于MapReduce的,所以當(dāng)直接使用MapReduce開發(fā)相應(yīng)的數(shù)據(jù)處理比較困難的話碴犬,Pig就是我們會想要使用的工具了絮宁。這里要說一下,在經(jīng)過多年的發(fā)展后服协,大數(shù)據(jù)各個組件其實都在擴(kuò)展其各自功能绍昂,目前能夠用來簡便開發(fā)MapReduce的工具中,Pig已經(jīng)不是首選了偿荷,然而在最初建立大數(shù)據(jù)體系時窘游,Pig是非常重要的一個組成部分。我們稍后也會講一下跳纳,究竟Pig忍饰,Hive和Hbase的區(qū)別是什么。
Mahout:機(jī)器學(xué)習(xí)的功能組件庫寺庄“叮可以這樣說,大數(shù)據(jù)系統(tǒng)想要最大化的利用數(shù)據(jù)創(chuàng)造價值斗塘,往往需要機(jī)器學(xué)習(xí)相關(guān)的功能赢织,這個時候,就是我們用到Mahout的時候了馍盟。
Flume:收集記錄數(shù)據(jù)操作日志的工具敌厘。如此復(fù)雜的大數(shù)據(jù)系統(tǒng),想要運作起來朽合,肯定需要一個完備可靠的日志系統(tǒng),用來記錄各個組件每時每刻運行的任務(wù)饱狂,運行狀況曹步,使用的資源情況,任務(wù)分發(fā)的情況等休讳,F(xiàn)lume正是為此而存在的讲婚。
Sqoop:輸送數(shù)據(jù)進(jìn)入倉庫的工具。想想看俊柔,當(dāng)我們整個數(shù)據(jù)系統(tǒng)搭建起來后筹麸,我們肯定需要有一個工具活合,能夠把原始的數(shù)據(jù),輸送到數(shù)據(jù)系統(tǒng)中吧物赶?Sqoop的工作就是這樣的白指,其可以定時抽取目標(biāo)數(shù)據(jù)庫中的相應(yīng)數(shù)據(jù),發(fā)送到我們的大數(shù)據(jù)系統(tǒng)中酵紫。
Ambari:將上面所有組件打包起來的平臺告嘲。想想看,上面那么多的組件奖地,如果一個一個都要我們手動去部署安裝橄唬,甚至要調(diào)試和設(shè)置,這個效率之低令人不寒而栗参歹。那么當(dāng)我們清楚了我們會用到的這些組件后仰楚,能不能找到一個工具,當(dāng)我們面對一個全新的環(huán)境中犬庇,可以把整個大數(shù)據(jù)系統(tǒng)快速打包部署下去僧界,這正是Ambari平臺的價值所在。此外械筛,我們在實際運作的時候捎泻,針對維護(hù)人員,需要有一個工具能夠直觀的監(jiān)控整個大數(shù)據(jù)系統(tǒng)的運作狀況埋哟,這也是如Ambari這樣的大數(shù)據(jù)平臺的作用之一笆豁。
限于篇幅的關(guān)系,以上僅僅是最基礎(chǔ)赤赊,最早期的大數(shù)據(jù)系統(tǒng)所囊括的組件體系闯狱,在接下來的文章中,筆者會逐步向一一詳細(xì)說明各個組件的作用和原理等抛计。