1.如何開始?
人們想開始學(xué)習(xí)大數(shù)據(jù)的時(shí)候,最常問我的問題是,“我應(yīng)該學(xué)Hadoop(hadoop是一款開源軟件,主要用于分布式存儲(chǔ)和計(jì)算,他由HDFS和MapReduce計(jì)算框架組成的,他們分別是Google的GFS和MapReduce的開源實(shí)現(xiàn)。由于hadoop的易用性和可擴(kuò)展性,因此成為最近流行的海量數(shù)據(jù)處理框架。hadoop這個(gè)單詞來源于其發(fā)明者的兒子為一個(gè)玩具大象起的名字。), 分布式計(jì)算,Kafka(Kafka是由LinkedIn開發(fā)的一個(gè)分布式基于發(fā)布/訂閱的消息電銷外呼程序),NoSQL(泛指非關(guān)系型的數(shù)據(jù)庫)還是Spark(Spark 是一種與 Hadoop 相似的開源集群計(jì)算環(huán)境,但是兩者之間還存在一些不同之處)?”
而我通常只有一個(gè)答案:“這取決于你究竟想做什么?!?/p>
因此,讓我們用一種有條理的方式來解決這個(gè)問題。我們將一步步地探索這條學(xué)習(xí)之路。
2. 在大數(shù)據(jù)行業(yè)有哪些職業(yè)需求?
在大數(shù)據(jù)行業(yè)中有很多領(lǐng)域。通常來說它們可以被分為兩類:
這些領(lǐng)域互相獨(dú)立又互相關(guān)聯(lián)。
大數(shù)據(jù)工程涉及大量數(shù)據(jù)的設(shè)計(jì),部署,獲取以及維護(hù)(保存)。大數(shù)據(jù)工程師需要去設(shè)計(jì)和部署這樣一個(gè)電銷外呼程序,使相關(guān)數(shù)據(jù)能面向不同的消費(fèi)者及內(nèi)部應(yīng)用。
而大數(shù)據(jù)分析的工作則是利用大數(shù)據(jù)工程師設(shè)計(jì)的電銷外呼程序所提供的大量數(shù)據(jù)。大數(shù)據(jù)分析包括趨勢(shì)、圖樣分析以及開發(fā)不同的分類、預(yù)測(cè)預(yù)報(bào)電銷外呼程序。
因此,簡(jiǎn)而言之,大數(shù)據(jù)分析是對(duì)數(shù)據(jù)的高級(jí)計(jì)算。而大數(shù)據(jù)工程則是進(jìn)行電銷外呼程序設(shè)計(jì)、部署以及計(jì)算運(yùn)行平臺(tái)的頂層構(gòu)建。
3.你的領(lǐng)域是什么,適合什么方向?
現(xiàn)在我們已經(jīng)了解了行業(yè)中可供選擇的職業(yè)種類,讓我們想辦法來確定哪個(gè)領(lǐng)域適合你。這樣,我們才能確定你在這個(gè)行業(yè)中的位置。
通常來說,基于你的教育背景和行業(yè)經(jīng)驗(yàn)我們可以進(jìn)行如下分類:
(包括興趣,而不一定與你的大學(xué)教育有關(guān))
計(jì)算機(jī)科學(xué)
數(shù)學(xué)
因此,通過上面的分類,你可以把自己的領(lǐng)域定位如下:
例1:“我是一名計(jì)算機(jī)科學(xué)畢業(yè)生,不過沒有堅(jiān)實(shí)的數(shù)學(xué)技巧?!?/p>
你對(duì)計(jì)算機(jī)科學(xué)或者數(shù)學(xué)有興趣,但是之前沒有相關(guān)經(jīng)驗(yàn),你將被定義為一個(gè)新人。
例2:“我是一個(gè)計(jì)算機(jī)科學(xué)畢業(yè)生,目前正從事數(shù)據(jù)庫開發(fā)工作。”
你的興趣在計(jì)算機(jī)科學(xué)方向,你適合計(jì)算機(jī)工程師(數(shù)據(jù)相關(guān)工程)的角色。
例3:“我正作為數(shù)據(jù)科學(xué)家從事統(tǒng)計(jì)工作?!?/p>
你對(duì)數(shù)學(xué)領(lǐng)域有興趣,適合數(shù)據(jù)科學(xué)家的職業(yè)角色。
因此,參照著定位你的領(lǐng)域吧。
(此處定義的領(lǐng)域?qū)δ愦_定在大數(shù)據(jù)行業(yè)的學(xué)習(xí)路徑至關(guān)重要。)
4.根據(jù)領(lǐng)域規(guī)劃你的角色
現(xiàn)在你已經(jīng)確定了你的領(lǐng)域,下一步,讓我們規(guī)劃出你要努力的目標(biāo)職位吧。
如果你有卓越的編程技巧并理解計(jì)算機(jī)如何在網(wǎng)絡(luò)(基礎(chǔ))上運(yùn)作,而你對(duì)數(shù)學(xué)和統(tǒng)計(jì)學(xué)毫無興趣,在這種情況下,你應(yīng)該朝著大數(shù)據(jù)工程職位努力。
如果你擅長(zhǎng)編程同時(shí)有數(shù)學(xué)或者統(tǒng)計(jì)學(xué)的教育背景或興趣,你應(yīng)該朝著大數(shù)據(jù)分析師職位努力。
5.如何成為一名大數(shù)據(jù)工程師
讓我們先定義一下,一名受到行業(yè)承認(rèn)的大數(shù)據(jù)工程師都需要學(xué)習(xí)和了解什么。首先以及最重要的一步是確認(rèn)你的需求。你不能在不清楚個(gè)人需求的情況下直接開始學(xué)習(xí)大數(shù)據(jù)。否則,你將一直盲人摸象。
為了明確你的需求,你必須了解常用的大數(shù)據(jù)術(shù)語。所以讓我們來看一下大數(shù)據(jù)到底意味著什么?
5.1 大數(shù)據(jù)術(shù)語
大數(shù)據(jù)工程通常包括兩個(gè)方面 – 數(shù)據(jù)需求以及處理需求。
5.1.1 數(shù)據(jù)需求術(shù)語
結(jié)構(gòu):你應(yīng)該知道數(shù)據(jù)可以儲(chǔ)存在表中或者文件中。儲(chǔ)存在一個(gè)預(yù)定義的數(shù)據(jù)模型(即擁有架構(gòu))中的數(shù)據(jù)稱為結(jié)構(gòu)化數(shù)據(jù)。如果數(shù)據(jù)儲(chǔ)存在文件中且沒有預(yù)定義模型,則稱為非結(jié)構(gòu)化數(shù)據(jù)。(種類:結(jié)構(gòu)化/非結(jié)構(gòu)化)。
容量:我們用容量來定義數(shù)據(jù)的數(shù)量。(種類:S/M/L/XL/XXL/流)
Sink吞吐量:用電銷外呼程序所能接受的數(shù)據(jù)率來定義Sink吞吐量。(種類:H/M/L)
源吞吐量:定義為數(shù)據(jù)更新和轉(zhuǎn)化進(jìn)入電銷外呼程序的速度。(種類:H/M/L)
5.1.2 處理需求術(shù)語
查詢時(shí)間:電銷外呼程序查詢所需時(shí)間。(種類:長(zhǎng)/中/短)
處理時(shí)間:處理數(shù)據(jù)所需時(shí)間。(種類:長(zhǎng)/中/短)
精度:數(shù)據(jù)處理的精確度。(種類:準(zhǔn)確/大約)
5.2 你需要知道的電銷外呼程序和架構(gòu)
情景1:
為分析一個(gè)公司的銷售表現(xiàn)需要設(shè)計(jì)一個(gè)電銷外呼程序,即創(chuàng)建一個(gè)數(shù)據(jù)池,數(shù)據(jù)池來自于多重?cái)?shù)據(jù)源,比如客戶數(shù)據(jù)、領(lǐng)導(dǎo)數(shù)據(jù)、客服中心數(shù)據(jù)、銷售數(shù)據(jù)、產(chǎn)品數(shù)據(jù)、博客等。
5.3 學(xué)習(xí)設(shè)計(jì)解決方案和技術(shù)
情節(jié)1的解決方案:銷售數(shù)據(jù)池
(這是我的個(gè)人解決方案,如果你想到一個(gè)更高明的解決方案請(qǐng)?jiān)谙旅娣窒硪幌拢?/p>
那么,一個(gè)數(shù)據(jù)工程師會(huì)怎樣解決這個(gè)問題呢?
需要記住的一點(diǎn)是,大數(shù)據(jù)電銷外呼程序的目的不僅僅是無縫整合各種來源的數(shù)據(jù)呼叫中心系統(tǒng),而使其可用,同時(shí)它必須能使得,用于開發(fā)應(yīng)用電銷外呼程序的數(shù)據(jù)的分析和利用變得簡(jiǎn)單迅速和易得(在這個(gè)案例中是智能控制面板)。
定義最后的目標(biāo):
1. 通過整合各種來源的數(shù)據(jù)創(chuàng)建一個(gè)數(shù)據(jù)池。
2. 每隔一定時(shí)間自動(dòng)更新數(shù)據(jù)(在這個(gè)案例中可能是一周一次)。
3. 可用于分析的數(shù)據(jù)(在記錄時(shí)間內(nèi),甚至可能是每天)
4. 易得的架構(gòu)和無縫部署的分析控制面板。
既然我們知道了我們最后的目標(biāo),讓我們盡量用正式術(shù)語制定我們的要求吧。
5.3.1 數(shù)據(jù)相關(guān)要求
結(jié)構(gòu):大部分?jǐn)?shù)據(jù)是結(jié)構(gòu)化的,并具有一個(gè)定義了的數(shù)據(jù)模型。但數(shù)據(jù)源如網(wǎng)絡(luò)日志,客戶互動(dòng)/呼叫中心數(shù)據(jù),銷售目錄中的圖像數(shù)據(jù),產(chǎn)品廣告數(shù)據(jù)等是非結(jié)構(gòu)化的。 圖像和多媒體廣告數(shù)據(jù)的可用性和要求可能取決于各個(gè)公司。
結(jié)論:結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)
大?。篖或XL(選擇Hadoop)
Sink 吞吐量:高
質(zhì)量:中等(Hadoop&Kafka)
完整性:不完整
5.3.2 處理相關(guān)要求
查詢時(shí)間:中至長(zhǎng)
處理時(shí)間:中至短
精度:準(zhǔn)確
隨著多個(gè)數(shù)據(jù)源的集成,重要的是要注意不同的數(shù)據(jù)將以不同的速率進(jìn)入電銷外呼程序。 例如,網(wǎng)絡(luò)日志可用高顆粒度連續(xù)流進(jìn)入電銷外呼程序。
基于上述我們對(duì)電銷外呼程序要求的分析,我們可以推薦以下大數(shù)據(jù)體系。
6.大數(shù)據(jù)學(xué)習(xí)路徑
現(xiàn)在,你已經(jīng)對(duì)大數(shù)據(jù)行業(yè),大數(shù)據(jù)從業(yè)人員的不同角色和要求有所了解。 我們來看看你應(yīng)該遵循哪條路來成為一名大數(shù)據(jù)工程師。
我們知道大數(shù)據(jù)領(lǐng)域充斥著多種技術(shù)。 因此,你學(xué)習(xí)與你的大數(shù)據(jù)工作角色相關(guān)的技術(shù)非常重要。這與任何常規(guī)領(lǐng)域有點(diǎn)不同,如數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)中,你可以從某些地方開始并努力完成這一領(lǐng)域內(nèi)的所有工作。
下面你會(huì)發(fā)現(xiàn)一個(gè)你應(yīng)該通過的樹狀圖,以找到你自己的路。即使樹狀圖中的一些技術(shù)被指向是數(shù)據(jù)科學(xué)家的強(qiáng)項(xiàng),但是如果你走上一條路,知道所有的技術(shù)直到“樹葉節(jié)點(diǎn)”總是很好的。 該樹狀圖源自lambda架構(gòu)范例。
注釋:學(xué)習(xí)之路樹狀圖
任何想要調(diào)配應(yīng)用程序的工程師必須知道的基本概念之一是Bash 腳本編程。你必須對(duì)linux和bash 腳本編程感到舒適。這是處理大數(shù)據(jù)的基本要求。
核心是,大部分大數(shù)據(jù)技術(shù)都是用Java或Scala編寫的。但是別擔(dān)心,如果你不想用這些語言編寫代碼,那么你可以選擇Python或者R,因?yàn)榇蟛糠值拇髷?shù)據(jù)技術(shù)現(xiàn)在都支持Python和R。
因此,你可以從上述任何一種語言開始。 我建議選擇Python或Java。
接下來,你需要熟悉云端工作。 這是因?yàn)槿绻銢]有在云端處理大數(shù)據(jù),沒有人會(huì)認(rèn)真對(duì)待。 請(qǐng)嘗試在AWS,softlayer或任何其他云端供應(yīng)商上練習(xí)小型數(shù)據(jù)集。 他們大多數(shù)都有一個(gè)免費(fèi)的層次,讓學(xué)生練習(xí)。如果你想的話,你可以暫時(shí)跳過此步驟,但請(qǐng)務(wù)必在進(jìn)行任何面試之前在云端工作。
接下來,你需要了解一個(gè)分布式文件電銷外呼程序。最流行的分布式文件電銷外呼程序就是Hadoop分布式文件電銷外呼程序。在這個(gè)階段你還可以學(xué)習(xí)一些你發(fā)現(xiàn)與你所在領(lǐng)域相關(guān)的NoSQL數(shù)據(jù)庫。下圖可以幫助你選擇一個(gè)NoSQL數(shù)據(jù)庫,以便根據(jù)你感興趣的領(lǐng)域進(jìn)行學(xué)習(xí)。
到目前為止的路徑是每個(gè)大數(shù)據(jù)工程師必須知道的硬性基礎(chǔ)知識(shí)。
現(xiàn)在,你決定是否要處理數(shù)據(jù)流或靜止的大量數(shù)據(jù)。 這是用于定義大數(shù)據(jù)(Volume,Velocity,Variety和Veracity)的四個(gè)V中的兩個(gè)之間的選擇。
那么讓我們假設(shè)你已經(jīng)決定使用數(shù)據(jù)流來開發(fā)實(shí)時(shí)或近實(shí)時(shí)分析電銷外呼程序。 之后你應(yīng)該采取卡夫卡(kafka)之路,或者還可以采取Mapreduce的路徑。然后你按照你自己創(chuàng)建的路徑。 請(qǐng)注意,在Mapreduce路徑中,你不需要同時(shí)學(xué)習(xí)pig和hive。 只學(xué)習(xí)其中之一就足夠了。
總結(jié):通過樹狀圖的方式。
從根節(jié)點(diǎn)開始,并執(zhí)行深度優(yōu)先的通過方式。
在每個(gè)節(jié)點(diǎn)停止查驗(yàn)鏈接中給出的資源。
如果你有充足的知識(shí),并且在使用該技術(shù)方面有相當(dāng)?shù)男判模敲凑?qǐng)轉(zhuǎn)到下一個(gè)節(jié)點(diǎn)。
在每個(gè)節(jié)點(diǎn)嘗試完成至少3個(gè)編程問題。
電銷電話到下一個(gè)節(jié)點(diǎn)。
到達(dá)樹葉節(jié)點(diǎn)。
從替代路徑開始。
最后一步(#7)阻礙你! 說實(shí)話,沒有應(yīng)用程序只有流處理或慢速延遲數(shù)據(jù)處理。 因此,你在技術(shù)上需要成為執(zhí)行完整的lambda架構(gòu)的高手。
另外,請(qǐng)注意,這不是學(xué)習(xí)大數(shù)據(jù)技術(shù)的唯一方法。 你可以隨時(shí)創(chuàng)建自己的路徑。 但這是一個(gè)可以被任何人使用的路徑。
如果你想進(jìn)入大數(shù)據(jù)分析世界,你可以遵循相同的路徑,但不要嘗試讓所有東西都變得完美。
對(duì)于能夠處理大數(shù)據(jù)的數(shù)據(jù)科學(xué)家,你需要在下面的樹狀圖中添加一些機(jī)器學(xué)習(xí)渠道呼叫中心系統(tǒng),并將重點(diǎn)放在機(jī)器學(xué)習(xí)渠道上,而不是下面提供的樹狀圖。 但我們可以稍后討論機(jī)器學(xué)習(xí)渠道。
根據(jù)你在上述樹狀圖中使用的數(shù)據(jù)類型,添加選擇的NoSQL數(shù)據(jù)庫。
該表格表示數(shù)據(jù)存儲(chǔ)類型要求及相應(yīng)的軟件選擇
如你所見,有大量的NoSQL數(shù)據(jù)庫可供選擇。 所以它常常取決于你將要使用的數(shù)據(jù)類型。
而且為了給采用什么類型的NoSQL數(shù)據(jù)庫提供一個(gè)明確的答案,你需要考慮到你的電銷外呼程序需求,如延遲,可用性,彈性,準(zhǔn)確性當(dāng)然還有你當(dāng)前處理的數(shù)據(jù)類型。
7.資源
初學(xué)者的Bash指南,來自Machtelt Garrels
1.Python
2. Java
3. 云
4. HDFS
5. Apache Zookeeper
7. SQL
8. Hive
9. Pig
10. Apache Storm
12. Apache Spark
13. Apache Spark Streaming