溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

大數(shù)據(jù)學(xué)習(xí)路線-甲骨文高級技術(shù)總監(jiān)思維圖

發(fā)布時間:2020-06-16 17:29:49 來源:網(wǎng)絡(luò) 閱讀:432 作者:哈斗篷 欄目:大數(shù)據(jù)

最近有很多人問我如何學(xué)習(xí)大數(shù)據(jù)?我也是思考了很多時日才動筆寫下此文。一方面我自己還只是大數(shù)據(jù)學(xué)習(xí)中的一個小學(xué)生,貿(mào)然動筆怕貽笑大方;另一方面大數(shù)據(jù)本身領(lǐng)域博大精深,其涵蓋領(lǐng)域之廣技術(shù)種類之多確實很難用一篇文章囊括。怎奈“下雨天打孩子,閑著也是閑著”,況筆者一直堅持寫技術(shù)類的博客,今天也請允許我寫一點務(wù)虛類的東西吧。
本文的目的是希望給所有大數(shù)據(jù)初學(xué)者規(guī)劃一條比較清晰的學(xué)習(xí)路線,幫助它們開啟大數(shù)據(jù)學(xué)習(xí)之旅。鑒于大數(shù)據(jù)領(lǐng)域內(nèi)的技術(shù)絢麗繁復(fù),每位大數(shù)據(jù)初學(xué)者都應(yīng)該根據(jù)自己的實際情況制定專屬的學(xué)習(xí)路徑。
要說當(dāng)下IT行業(yè)什么最火?ABC無出其右。所謂ABC者,AI + Big Data + Cloud也,即人工智能、大數(shù)據(jù)和云計算(云平臺)。每個領(lǐng)域目前都有行業(yè)領(lǐng)袖在引領(lǐng)前行,今天我們來討論下大數(shù)據(jù)這個方向。
大數(shù)據(jù),即Big Data,關(guān)于它的定義很多,我這里不再贅述了。最權(quán)威的莫屬IBM的定義,讀者可以自行查閱。既然本文關(guān)注如何學(xué)習(xí)大數(shù)據(jù),那么我們首先就要定義大數(shù)據(jù)領(lǐng)域內(nèi)的不同角色設(shè)定。這樣各位才能根據(jù)自身實際情況找準(zhǔn)自己的定位從而開啟學(xué)習(xí)過程。

角色
以我的愚見,當(dāng)下大數(shù)據(jù)行業(yè)有兩類角色:
大數(shù)據(jù)工程
大數(shù)據(jù)分析

這兩類角色相互依存但又獨立運作,何意?沒有大數(shù)據(jù)工程,大數(shù)據(jù)分析便無從談起;但倘若沒有大數(shù)據(jù)分析,我也實在想不出大數(shù)據(jù)工程存在的理由。這就類似于結(jié)婚和談戀愛——戀愛的目的是為了結(jié)婚,且不以結(jié)婚為目的的談戀愛都是耍流氓。
具體來說,大數(shù)據(jù)工程需要解決數(shù)據(jù)的定義、收集、計算與保存的工作,因此大數(shù)據(jù)工程師們在設(shè)計和部署這樣的系統(tǒng)時首要考慮的是數(shù)據(jù)高可用的問題,即大數(shù)據(jù)工程系統(tǒng)需要實時地為下游業(yè)務(wù)系統(tǒng)或分析系統(tǒng)提供數(shù)據(jù)服務(wù);而大數(shù)據(jù)分析角色定位于如何利用數(shù)據(jù)——即從大數(shù)據(jù)工程系統(tǒng)中接收到數(shù)據(jù)之后如何為企業(yè)或組織提供有產(chǎn)出的數(shù)據(jù)分析,并且確實能夠幫助到公司進(jìn)行業(yè)務(wù)改善或提升服務(wù)水平,所以對于大數(shù)據(jù)分析師來說,他們首要解決的問題是發(fā)現(xiàn)并利用數(shù)據(jù)的價值,具體可能包括:趨勢分析、模型建立以及預(yù)測分析等。
簡單總結(jié)一下,大數(shù)據(jù)工程角色需要考慮數(shù)據(jù)的收集、計算(或是處理)和保存;大數(shù)據(jù)分析角色則是執(zhí)行數(shù)據(jù)的高級計算。

我們屬于哪種角色?
既然我們了解了大數(shù)據(jù)領(lǐng)域內(nèi)的角色分類,下面自然就需要“對號入座”確定自己的定位,這樣才能有的放矢地開始大數(shù)據(jù)學(xué)習(xí)。在考慮這個問題時,我們需要參考兩方面的因素:
專業(yè)知識背景
行業(yè)經(jīng)驗

這里的專業(yè)知識背景不是指代學(xué)歷、院校這種背景,而是你對某些IT技術(shù)的了解程度。即使你不是計算機(jī)專業(yè)出身,只要你對C語言有一腔熱血,怕是C之父Dennis Ritchie也不敢小瞧你。因此,這里的專業(yè)知識其實就只有兩個:

計算機(jī)專業(yè)知識,比如操作系統(tǒng),編程語言,計算機(jī)運行原理等
數(shù)學(xué)知識,這里指代的是高等數(shù)學(xué),比如微積分、概率統(tǒng)計、線性代數(shù)和離散數(shù)學(xué)等, 不是x x + y y = 1畫出來是什么圖形這樣的數(shù)學(xué)

而行業(yè)經(jīng)驗指的是你相關(guān)領(lǐng)域內(nèi)的工作經(jīng)驗,具體可以分為三檔:

菜鳥
有一定經(jīng)驗的工程師
資深專家——現(xiàn)在在大數(shù)據(jù)領(lǐng)域有個更cool的名字:數(shù)據(jù)科學(xué)家,比如前百度首席數(shù)據(jù)科學(xué)家:吳恩達(dá)博士

Okay,現(xiàn)在我們就可以根據(jù)上面的分類來定義自己的角色。比如拿筆者來說,我對自己的定位是:“我是一個計算機(jī)專業(yè)畢業(yè)的工程師,有一定數(shù)學(xué)基礎(chǔ)(特別是在微積分和線性代數(shù)方面),但數(shù)理統(tǒng)計和概率論部分是我的弱項。” 另外最好別打腫臉充胖子,如果之前沒什么經(jīng)驗,承認(rèn)自己是菜鳥也沒事,關(guān)鍵是找準(zhǔn)自己的定位。
確定自己的定位后,我們需要對應(yīng)到特定的大數(shù)據(jù)角色,以下是一些基本法則:

如果您具有良好的編程基礎(chǔ)且深入了解計算機(jī)的交互方式以及互聯(lián)網(wǎng)底層技術(shù)原理,但數(shù)學(xué)和統(tǒng)計學(xué)掌握不深,那么大數(shù)據(jù)工程可能是您今后學(xué)習(xí)的方向
如果你有一定的編程基礎(chǔ)(掌握一些高級語言,如Python等)同時又很強(qiáng)的數(shù)學(xué)功底,那么大數(shù)據(jù)分析是您今天努力的方向

學(xué)習(xí)路線
不管您屬于以上哪種角色,有一些大數(shù)據(jù)理論知識是您必須要掌握的,他們包括但不限于:
數(shù)據(jù)分片與路由:挑一個典型的分區(qū)算法去學(xué)習(xí),比如一致性哈希算法([url=]https://en.wikipedia.org/wiki/Consistent_hashing[/url])
大數(shù)據(jù)學(xué)習(xí)路線-甲骨文高級技術(shù)總監(jiān)思維圖
備份機(jī)制與一致性:

學(xué)習(xí)國內(nèi)被奉為“圣經(jīng)”但在國外也就一般的CAP理論([url=]https://en.wikipedia.org/wiki/CAP_theorem[/url])
冪等性(Idempotent):很多分布式系統(tǒng)狀態(tài)管理的基石 [url=]https://mortoray.com/2014/09/05/what-is-an-idempotent-function/[/url]
各種一致性模型:強(qiáng)一致性、弱一致性、最終一致性
備份機(jī)制:主從的叫法已經(jīng)不怎么流行了,當(dāng)前更cool的叫法是Leader-Follower模式
共識協(xié)議:國內(nèi)通常翻譯成一致性協(xié)議(consensus protocol)。學(xué)習(xí)常見的幾種:Paxos和Raft

算法和數(shù)據(jù)結(jié)構(gòu)

LSM:學(xué)習(xí)和B+樹的區(qū)別以及優(yōu)勢是什么
壓縮算法:找一個主流的壓縮算法進(jìn)行了解,比如Snappy, LZ4。另外Facebook最近開源了新一代的壓縮算法:ZStandard,據(jù)說完爆一切主流壓縮算法
Bloom Filter過濾器:大數(shù)據(jù)下O(1)的過濾器

無論是學(xué)習(xí)大數(shù)據(jù)工程還是大數(shù)據(jù)分析,這些理論知識都是必要的,因為它們是設(shè)計很多分布式系統(tǒng)必備的技能。下面我們就針對不同的角色設(shè)計不同的學(xué)習(xí)路線:

大數(shù)據(jù)工程師
對于大數(shù)據(jù)工程師而言,您至少要掌握以下技能:
一門JVM系語言:當(dāng)前大數(shù)據(jù)生態(tài)JVM系語言類的比重極大,某種程度上說是壟斷也不為過。這里我推薦大家學(xué)習(xí)Java或Scala,至于Clojure這樣的語言上手不易,其實并不推薦大家使用。另外,如今是“母以子貴”的年代,某個大數(shù)據(jù)框架會帶火它的編程語言的流行,比如Docker之于Go、Kafka之于Scala。因此筆者這里建議您至少要精通一門JVM系的語言。值得一提的,一定要弄懂這門語言的多線程模型和內(nèi)存模型,很多大數(shù)據(jù)框架的處理模式其實在語言層面和多線程處理模型是類似的,只是大數(shù)據(jù)框架把它們引申到了多機(jī)分布式這個層面。

筆者建議:學(xué)習(xí)Java或Scala

計算處理框架:嚴(yán)格來說,這分為離線批處理和流式處理。流式處理是未來的趨勢,建議大家一定要去學(xué)習(xí);而離線批處理其實已經(jīng)快過時了,它的分批處理思想無法處理無窮數(shù)據(jù)集,因此其適用范圍日益縮小。事實上,Google已經(jīng)在公司內(nèi)部正式廢棄了以MapReduce為代表的離線處理。因此如果要學(xué)習(xí)大數(shù)據(jù)工程,掌握一門實時流式處理框架是必須的。當(dāng)下主流的框架包括:Apache Samza, Apache Storm, Apache Spark Streaming以及最近一年風(fēng)頭正勁的Apache Flink。當(dāng)然Apache Kafka也推出了它自己的流式處理框架:Kafka Streams

筆者建議:學(xué)習(xí)Flink、Spark Streaming或Kafka Streams中的一個
熟讀Google大神的這篇文章:《The world beyond batch: Streaming 101》,地址是https://www.oreilly.com/ideas/th ... batch-streaming-101

分布式存儲框架:雖說MapReduce有些過時了,但Hadoop的另一個基石HDFS依然堅挺,并且是開源社區(qū)最受歡迎的分布式存儲,絕對您花時間去學(xué)習(xí)。如果想深入研究的話,Google的GFS論文也是一定要讀的([url=]https://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf[/url])。當(dāng)然開源世界中還有很多的分布式存儲,國內(nèi)阿里巴巴的OceanBase也是很優(yōu)秀的一個。

筆者建議:學(xué)習(xí)HDFS

資源調(diào)度框架:Docker可是整整火了最近一兩年。各個公司都在發(fā)力基于Docker的容器解決方案,最有名的開源容器調(diào)度框架就是K8S了,但同樣著名的還有Hadoop的YARN和Apache Mesos。后兩者不僅可以調(diào)度容器集群,還可以調(diào)度非容器集群,非常值得我們學(xué)習(xí)。

筆者建議:學(xué)習(xí)YARN

分布式協(xié)調(diào)框架:有一些通用的功能在所有主流大數(shù)據(jù)分布式框架中都需要實現(xiàn),比如服務(wù)發(fā)現(xiàn)、領(lǐng)導(dǎo)者選舉、分布式鎖、KV存儲等。這些功能也就催生了分布式協(xié)調(diào)框架的發(fā)展。最古老也是最有名的當(dāng)屬Apache Zookeeper了,新一些的包括Consul,etcd等。學(xué)習(xí)大數(shù)據(jù)工程,分布式協(xié)調(diào)框架是不能不了解的, 某種程度上還要深入了解。

筆者建議:學(xué)習(xí)Zookeeper——太多大數(shù)據(jù)框架都需要它了,比如Kafka, Storm, HBase等

KV數(shù)據(jù)庫:典型的就是memcache和Redis了,特別是Redis簡直是發(fā)展神速。其簡潔的API設(shè)計和高性能的TPS日益得到廣大用戶的青睞。即使是不學(xué)習(xí)大數(shù)據(jù),學(xué)學(xué)Redis都是大有裨益的。

筆者建議:學(xué)習(xí)Redis,如果C語言功底好的,最好熟讀源碼,反正源碼也不多

列式存儲數(shù)據(jù)庫:筆者曾經(jīng)花了很長的時間學(xué)習(xí)Oracle,但不得不承認(rèn)當(dāng)下關(guān)系型數(shù)據(jù)庫已經(jīng)慢慢地淡出了人們的視野,有太多的方案可以替代rdbms了。人們針對行式存儲不適用于大數(shù)據(jù)ad-hoc查詢這種弊端開發(fā)出了列式存儲,典型的列式存儲數(shù)據(jù)庫就是開源社區(qū)的HBASE。實際上列式存儲的概念也是出自Google的一篇論文:Google BigTable,有興趣的話大家最好讀一下:[url=]https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf[/url]

筆者建議:學(xué)習(xí)HBASE,這是目前應(yīng)用最廣泛的開源列式存儲

消息隊列:大數(shù)據(jù)工程處理中消息隊列作為“削峰填谷”的主力系統(tǒng)是必不可少的,當(dāng)前該領(lǐng)域內(nèi)的解決方案有很多,包括ActiveMQ,Kafka等。國內(nèi)阿里也開源了RocketMQ。這其中的翹楚當(dāng)屬Apache Kafka了。Kafka的很多設(shè)計思想都特別契合分布流式數(shù)據(jù)處理的設(shè)計理念。這也難怪,Kafka的原作者Jay Kreps可是當(dāng)今實時流式處理方面的頂級大神。

筆者建議:學(xué)習(xí)Kafka,不僅僅好找工作(幾乎所有大數(shù)據(jù)招聘簡歷都要求會Kafka:-) ),還能觸類旁通進(jìn)一步理解基于備份日志方式的數(shù)據(jù)處理范型

大數(shù)據(jù)分析師或數(shù)據(jù)科學(xué)家
要想成為一個數(shù)據(jù)科學(xué)家,您至少要掌握以下技能:
數(shù)學(xué)功底:微積分是嚴(yán)格要掌握的。不一定要掌握多元微積分,但一元微積分是必須要熟練掌握并使用的。另外線性代數(shù)一定要精通,特別是矩陣的運算、向量空間、秩等概念。當(dāng)前機(jī)器學(xué)習(xí)框架中很多計算都需要用到矩陣的乘法、轉(zhuǎn)置或是求逆。雖然很多框架都直接提供了這樣的工具,但我們至少要了解內(nèi)部的原型原理,比如如何高效判斷一個矩陣是否存在逆矩陣并如何計算等。

重溫同濟(jì)版《高等數(shù)學(xué)》,有條件可以去Coursea學(xué)習(xí)賓夕法尼亞大學(xué)的微積分課程
推薦學(xué)習(xí)Strang的線性代數(shù):《Introduction to Linear Algebra》——這是最經(jīng)典的教材,沒有之一!

數(shù)理統(tǒng)計:概率論和各種統(tǒng)計學(xué)方法要做到基本掌握,比如貝葉斯概率如何計算?概率分布是怎么回事?雖不要求精通,但對相關(guān)背景和術(shù)語一定要了解

找一本《概率論》重新學(xué)習(xí)下

**交互式數(shù)據(jù)分析框架:這里并不是指SQL或數(shù)據(jù)庫查詢,而是像Apache Hive或Apache Kylin這樣的分析交互框架。開源社區(qū)中有很多這樣類似的框架,可以使用傳統(tǒng)的數(shù)據(jù)分析方式對大數(shù)據(jù)進(jìn)行數(shù)據(jù)分析或數(shù)據(jù)挖掘。筆者有過使用經(jīng)驗的是Hive和Kylin。不過Hive特別是Hive1是基于MapReduce的,性能并非特別出色,而Kylin采用數(shù)據(jù)立方體的概念結(jié)合星型模型,可以做到很低延時的分析速度,況且Kylin是第一個研發(fā)團(tuán)隊主力是中國人的Apache孵化項目,因此日益受到廣泛的關(guān)注。

首先學(xué)習(xí)Hive,有時間的話了解一下Kylin以及背后的數(shù)據(jù)挖掘思想!最后說一下:
> 很多人都知道我有大數(shù)據(jù)培訓(xùn)資料,都天真的以為我有全套的大數(shù)據(jù)開發(fā)、hadoop、spark等視頻學(xué)習(xí)資料。我想說你們是對的,我的確有大數(shù)據(jù)開發(fā)、hadoop、spark的全套視頻資料。

如果你對大數(shù)據(jù)開發(fā)感興趣可以加口群領(lǐng)取免費學(xué)習(xí)資料: 763835121

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI