為了方便大家梳理清楚大數(shù)據(jù)學(xué)習(xí)路線,本文從以下四個方面來介紹大數(shù)據(jù)技術(shù):
大數(shù)據(jù)技術(shù)棧
大數(shù)據(jù)發(fā)展史
大數(shù)據(jù)應(yīng)用
大數(shù)據(jù)開發(fā)崗位
之前有同事問我怎么轉(zhuǎn)大數(shù)據(jù)開發(fā),他在網(wǎng)上搜了一堆大數(shù)據(jù)相關(guān)的技術(shù),但是不知道從哪里開始入門,也不知道要學(xué)習(xí)哪些技術(shù),這些技術(shù)棧之間的關(guān)系是什么。我一開始轉(zhuǎn)大數(shù)據(jù)的時候也有點懵逼,整體接觸了一遍之后才把大數(shù)據(jù)技術(shù)棧給弄明白了。
做大數(shù)據(jù)開發(fā),無非要干四件事情,采集、存儲、查詢、計算。此外,一些開發(fā)必備的基礎(chǔ)語言能力是需要的。我按照這幾個維度,對大數(shù)據(jù)常見技術(shù)棧做了下劃分。
數(shù)據(jù)采集
一般通過filebeat,logstash,kafka,flume做日志采集。一些應(yīng)用系統(tǒng)的數(shù)據(jù),也會通過kafka或者binlog的方式同步到大數(shù)據(jù)組件做存儲。
數(shù)據(jù)存儲
這里的數(shù)據(jù)存儲引擎和傳統(tǒng)的關(guān)系型數(shù)據(jù)庫有很大的區(qū)別。常見分布式存儲文件系統(tǒng)有hdfs。此外,對于一些非結(jié)構(gòu)化的數(shù)據(jù)會通過nosql的方式做存儲,常見的nosql存儲組件有hbase,redis。
數(shù)據(jù)查詢
常見的有hive、spark sql、presto、kylin、impala、durid、clickhouse、greeplum,每個組件都有自己的查詢特性和使用場景。這里不展開篇幅詳細介紹了,后面慢慢聊。
數(shù)據(jù)計算
常見的計算方式有流計算和批處理,按實效性又分離線計算和實時計算。對應(yīng)的計算組件有storm,spark stream,flink。
其它
分布式協(xié)調(diào)器:大數(shù)據(jù)組件為了提高可靠性通常是分布式存儲的,這樣就涉及到各個組件之間的協(xié)調(diào)同步。最常見的協(xié)調(diào)器就是zookeeper。
資源管理器:為了提高計算能力,會對計算資源(CPU,內(nèi)存,磁盤)做分配,常見的組件有yarn,mesos。
調(diào)度管理器:調(diào)度管理器管理任務(wù)何時執(zhí)行,周期執(zhí)行,是否重試等。常見的有airflow,dalphine schduler,oozie,azkaban。
學(xué)習(xí)一門技術(shù),知道會用已經(jīng)夠了,至少能解決問題。但是要想走得更遠,還是需要知道一門技術(shù)的發(fā)展歷史,通過發(fā)展史可以更深刻的理解為何會產(chǎn)生這門技術(shù),它背后這樣設(shè)計的原有,它的使用場景。
大數(shù)據(jù)技術(shù)的起源
大數(shù)據(jù)最早是起源于google。大家都知道google主要是提供網(wǎng)頁檢索服務(wù),而這項服務(wù)依賴兩個能力:網(wǎng)頁的收集,索引的構(gòu)建。有了這兩個能力,我們才能通過檢索服務(wù)搜索到互聯(lián)網(wǎng)上的網(wǎng)頁。這些網(wǎng)頁和索引都需要大量的存儲和計算能力。為了提高這兩個能力,谷歌發(fā)表了三篇重要的論文。
2003年,分布式文件系統(tǒng)GFS。
2004年,大數(shù)據(jù)分布式計算框架MapReduce。
2006年,NoSql數(shù)據(jù)庫系統(tǒng)。
這三篇論文奠定了大數(shù)據(jù)技術(shù)的基礎(chǔ)。
Hadoop技術(shù)
受谷歌論文啟發(fā),2004年7月Doug和Mike Cafarella在Nutch(Nutch的設(shè)計目標是構(gòu)建一個大型的全網(wǎng)搜索引擎,包括網(wǎng)頁抓取、索引、查詢等功能)中實現(xiàn)了類似于GFS的功能,也就是HDFS的前身。2005年2月,Mike Cafarella在Nutch中實現(xiàn)了MapReduce的最初版本。GFS和MapReduce作為hadoop前身,2006年hadoop從Nutch項目中分離出來,貢獻給了Apache,至此成為Apache頂級項目。
Yahoo的Pig
2006年,為了讓MapReduce技術(shù)更好使用,雅虎對MapReduce技術(shù)做了封裝,開發(fā)了一套通過類似于SQL腳本查詢的工具Pig,使用Pig寫SQL會自動轉(zhuǎn)換成MapReduce來執(zhí)行,大大優(yōu)化了MapReduce的使用難度。
Facebook的Hive
2007年,facebook對查詢方式做了進一步優(yōu)化,開發(fā)出了一套可以直接使用SQL的工具做大數(shù)據(jù)查詢-HIVE,只要懂得SQL的開發(fā)人員都能使用這個組件。
Powerset的HBASE
2007年P(guān)owerset的工作人員,通過google的論文開發(fā)出了BigTable的java版本,即HBASE。2008年HBASE貢獻給了Apache。
Spark的產(chǎn)生
2009年,UC伯克利里面的研究員在使用MapReduce做實驗項目時,性能無法滿足需求。于是著手開始設(shè)計spark,基于內(nèi)存計算的spark性能要遠遠高于spark
風控:仿電信詐騙,黃賭毒識別,反洗錢等等。
醫(yī)療:通過用戶一些醫(yī)療信息做疾病的識別。
智慧城市:自動駕駛,智慧物流,城市交通管理等等。
基礎(chǔ)組件開發(fā):需要扎實的java或者C 語言能力,對大數(shù)據(jù)組件有獨到認知,能對大數(shù)據(jù)組件結(jié)合公司業(yè)務(wù)場景做二次封裝。
大數(shù)據(jù)應(yīng)用開發(fā):開發(fā)一些大數(shù)據(jù)工具,比如標簽管理系統(tǒng),元數(shù)據(jù)管理系統(tǒng),埋點系統(tǒng),爬蟲系統(tǒng)等。需要具備扎實的java或者python能力,能熟練使用大數(shù)據(jù)相關(guān)組件。
數(shù)倉工程師:一般都是做一些BI報表的開發(fā),數(shù)據(jù)治理。精通SQL,精通常見的數(shù)倉模型。
算法工程師:精通常見機器學(xué)習(xí)算法,能熟練使用大數(shù)據(jù)組件。結(jié)合公司的業(yè)務(wù)場景靈活的使用算法能力賦能。
聯(lián)系客服