最近有很多人問(wèn)我如何學(xué)習(xí)大數(shù)據(jù)?我也是思考了很多時(shí)日才動(dòng)筆寫下此文。一方面我自己還只是大數(shù)據(jù)學(xué)習(xí)中的一個(gè)小學(xué)生,貿(mào)然動(dòng)筆怕貽笑大方;另一方面大數(shù)據(jù)本身領(lǐng)域博大精深,其涵蓋領(lǐng)域之廣技術(shù)種類之多確實(shí)很難用一篇文章囊括。怎奈“下雨天打孩子,閑著也是閑著”,況筆者一直堅(jiān)持寫技術(shù)類的博客,今天也請(qǐng)?jiān)试S我寫一點(diǎn)務(wù)虛類的東西吧。
本文的目的是希望給所有大數(shù)據(jù)初學(xué)者規(guī)劃一條比較清晰的學(xué)習(xí)路線,幫助它們開(kāi)啟大數(shù)據(jù)學(xué)習(xí)之旅。鑒于大數(shù)據(jù)領(lǐng)域內(nèi)的技術(shù)絢麗繁復(fù),每位大數(shù)據(jù)初學(xué)者都應(yīng)該根據(jù)自己的實(shí)際情況制定專屬的學(xué)習(xí)路徑。
要說(shuō)當(dāng)下IT行業(yè)什么最火?ABC無(wú)出其右。所謂ABC者,AI + Big Data + Cloud也,即人工智能、大數(shù)據(jù)和云計(jì)算(云平臺(tái))。每個(gè)領(lǐng)域目前都有行業(yè)領(lǐng)袖在引領(lǐng)前行,今天我們來(lái)討論下大數(shù)據(jù)這個(gè)方向。
大數(shù)據(jù),即Big Data,關(guān)于它的定義很多,我這里不再贅述了。最權(quán)威的莫屬IBM的定義,讀者可以自行查閱。既然本文關(guān)注如何學(xué)習(xí)大數(shù)據(jù),那么我們首先就要定義大數(shù)據(jù)領(lǐng)域內(nèi)的不同角色設(shè)定。這樣各位才能根據(jù)自身實(shí)際情況找準(zhǔn)自己的定位從而開(kāi)啟學(xué)習(xí)過(guò)程。
創(chuàng)新互聯(lián)專注于西青網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供西青營(yíng)銷型網(wǎng)站建設(shè),西青網(wǎng)站制作、西青網(wǎng)頁(yè)設(shè)計(jì)、西青網(wǎng)站官網(wǎng)定制、成都微信小程序服務(wù),打造西青網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供西青網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。
角色
以我的愚見(jiàn),當(dāng)下大數(shù)據(jù)行業(yè)有兩類角色:
大數(shù)據(jù)工程
大數(shù)據(jù)分析
這兩類角色相互依存但又獨(dú)立運(yùn)作,何意?沒(méi)有大數(shù)據(jù)工程,大數(shù)據(jù)分析便無(wú)從談起;但倘若沒(méi)有大數(shù)據(jù)分析,我也實(shí)在想不出大數(shù)據(jù)工程存在的理由。這就類似于結(jié)婚和談戀愛(ài)——戀愛(ài)的目的是為了結(jié)婚,且不以結(jié)婚為目的的談戀愛(ài)都是耍流氓。
具體來(lái)說(shuō),大數(shù)據(jù)工程需要解決數(shù)據(jù)的定義、收集、計(jì)算與保存的工作,因此大數(shù)據(jù)工程師們?cè)谠O(shè)計(jì)和部署這樣的系統(tǒng)時(shí)首要考慮的是數(shù)據(jù)高可用的問(wèn)題,即大數(shù)據(jù)工程系統(tǒng)需要實(shí)時(shí)地為下游業(yè)務(wù)系統(tǒng)或分析系統(tǒng)提供數(shù)據(jù)服務(wù);而大數(shù)據(jù)分析角色定位于如何利用數(shù)據(jù)——即從大數(shù)據(jù)工程系統(tǒng)中接收到數(shù)據(jù)之后如何為企業(yè)或組織提供有產(chǎn)出的數(shù)據(jù)分析,并且確實(shí)能夠幫助到公司進(jìn)行業(yè)務(wù)改善或提升服務(wù)水平,所以對(duì)于大數(shù)據(jù)分析師來(lái)說(shuō),他們首要解決的問(wèn)題是發(fā)現(xiàn)并利用數(shù)據(jù)的價(jià)值,具體可能包括:趨勢(shì)分析、模型建立以及預(yù)測(cè)分析等。
簡(jiǎn)單總結(jié)一下,大數(shù)據(jù)工程角色需要考慮數(shù)據(jù)的收集、計(jì)算(或是處理)和保存;大數(shù)據(jù)分析角色則是執(zhí)行數(shù)據(jù)的高級(jí)計(jì)算。
我們屬于哪種角色?
既然我們了解了大數(shù)據(jù)領(lǐng)域內(nèi)的角色分類,下面自然就需要“對(duì)號(hào)入座”確定自己的定位,這樣才能有的放矢地開(kāi)始大數(shù)據(jù)學(xué)習(xí)。在考慮這個(gè)問(wèn)題時(shí),我們需要參考兩方面的因素:
專業(yè)知識(shí)背景
行業(yè)經(jīng)驗(yàn)
這里的專業(yè)知識(shí)背景不是指代學(xué)歷、院校這種背景,而是你對(duì)某些IT技術(shù)的了解程度。即使你不是計(jì)算機(jī)專業(yè)出身,只要你對(duì)C語(yǔ)言有一腔熱血,怕是C之父Dennis Ritchie也不敢小瞧你。因此,這里的專業(yè)知識(shí)其實(shí)就只有兩個(gè):
計(jì)算機(jī)專業(yè)知識(shí),比如操作系統(tǒng),編程語(yǔ)言,計(jì)算機(jī)運(yùn)行原理等
數(shù)學(xué)知識(shí),這里指代的是高等數(shù)學(xué),比如微積分、概率統(tǒng)計(jì)、線性代數(shù)和離散數(shù)學(xué)等, 不是x x + y y = 1畫出來(lái)是什么圖形這樣的數(shù)學(xué)
而行業(yè)經(jīng)驗(yàn)指的是你相關(guān)領(lǐng)域內(nèi)的工作經(jīng)驗(yàn),具體可以分為三檔:
菜鳥(niǎo)
有一定經(jīng)驗(yàn)的工程師
資深專家——現(xiàn)在在大數(shù)據(jù)領(lǐng)域有個(gè)更c(diǎn)ool的名字:數(shù)據(jù)科學(xué)家,比如前百度首席數(shù)據(jù)科學(xué)家:吳恩達(dá)博士
Okay,現(xiàn)在我們就可以根據(jù)上面的分類來(lái)定義自己的角色。比如拿筆者來(lái)說(shuō),我對(duì)自己的定位是:“我是一個(gè)計(jì)算機(jī)專業(yè)畢業(yè)的工程師,有一定數(shù)學(xué)基礎(chǔ)(特別是在微積分和線性代數(shù)方面),但數(shù)理統(tǒng)計(jì)和概率論部分是我的弱項(xiàng)?!?另外最好別打腫臉充胖子,如果之前沒(méi)什么經(jīng)驗(yàn),承認(rèn)自己是菜鳥(niǎo)也沒(méi)事,關(guān)鍵是找準(zhǔn)自己的定位。
確定自己的定位后,我們需要對(duì)應(yīng)到特定的大數(shù)據(jù)角色,以下是一些基本法則:
如果您具有良好的編程基礎(chǔ)且深入了解計(jì)算機(jī)的交互方式以及互聯(lián)網(wǎng)底層技術(shù)原理,但數(shù)學(xué)和統(tǒng)計(jì)學(xué)掌握不深,那么大數(shù)據(jù)工程可能是您今后學(xué)習(xí)的方向
如果你有一定的編程基礎(chǔ)(掌握一些高級(jí)語(yǔ)言,如Python等)同時(shí)又很強(qiáng)的數(shù)學(xué)功底,那么大數(shù)據(jù)分析是您今天努力的方向
學(xué)習(xí)路線
不管您屬于以上哪種角色,有一些大數(shù)據(jù)理論知識(shí)是您必須要掌握的,他們包括但不限于:
數(shù)據(jù)分片與路由:挑一個(gè)典型的分區(qū)算法去學(xué)習(xí),比如一致性哈希算法([url=]https://en.wikipedia.org/wiki/Consistent_hashing[/url])
備份機(jī)制與一致性:
學(xué)習(xí)國(guó)內(nèi)被奉為“圣經(jīng)”但在國(guó)外也就一般的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)前更c(diǎn)ool的叫法是Leader-Follower模式
共識(shí)協(xié)議:國(guó)內(nèi)通常翻譯成一致性協(xié)議(consensus protocol)。學(xué)習(xí)常見(jiàn)的幾種:Paxos和Raft
算法和數(shù)據(jù)結(jié)構(gòu)
LSM:學(xué)習(xí)和B+樹(shù)的區(qū)別以及優(yōu)勢(shì)是什么
壓縮算法:找一個(gè)主流的壓縮算法進(jìn)行了解,比如Snappy, LZ4。另外Facebook最近開(kāi)源了新一代的壓縮算法:ZStandard,據(jù)說(shuō)完爆一切主流壓縮算法
Bloom Filter過(guò)濾器:大數(shù)據(jù)下O(1)的過(guò)濾器
無(wú)論是學(xué)習(xí)大數(shù)據(jù)工程還是大數(shù)據(jù)分析,這些理論知識(shí)都是必要的,因?yàn)樗鼈兪窃O(shè)計(jì)很多分布式系統(tǒng)必備的技能。下面我們就針對(duì)不同的角色設(shè)計(jì)不同的學(xué)習(xí)路線:
大數(shù)據(jù)工程師
對(duì)于大數(shù)據(jù)工程師而言,您至少要掌握以下技能:
一門JVM系語(yǔ)言:當(dāng)前大數(shù)據(jù)生態(tài)JVM系語(yǔ)言類的比重極大,某種程度上說(shuō)是壟斷也不為過(guò)。這里我推薦大家學(xué)習(xí)Java或Scala,至于Clojure這樣的語(yǔ)言上手不易,其實(shí)并不推薦大家使用。另外,如今是“母以子貴”的年代,某個(gè)大數(shù)據(jù)框架會(huì)帶火它的編程語(yǔ)言的流行,比如Docker之于Go、Kafka之于Scala。因此筆者這里建議您至少要精通一門JVM系的語(yǔ)言。值得一提的,一定要弄懂這門語(yǔ)言的多線程模型和內(nèi)存模型,很多大數(shù)據(jù)框架的處理模式其實(shí)在語(yǔ)言層面和多線程處理模型是類似的,只是大數(shù)據(jù)框架把它們引申到了多機(jī)分布式這個(gè)層面。
筆者建議:學(xué)習(xí)Java或Scala
計(jì)算處理框架:嚴(yán)格來(lái)說(shuō),這分為離線批處理和流式處理。流式處理是未來(lái)的趨勢(shì),建議大家一定要去學(xué)習(xí);而離線批處理其實(shí)已經(jīng)快過(guò)時(shí)了,它的分批處理思想無(wú)法處理無(wú)窮數(shù)據(jù)集,因此其適用范圍日益縮小。事實(shí)上,Google已經(jīng)在公司內(nèi)部正式廢棄了以MapReduce為代表的離線處理。因此如果要學(xué)習(xí)大數(shù)據(jù)工程,掌握一門實(shí)時(shí)流式處理框架是必須的。當(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中的一個(gè)
熟讀Google大神的這篇文章:《The world beyond batch: Streaming 101》,地址是https://www.oreilly.com/ideas/th ... batch-streaming-101
分布式存儲(chǔ)框架:雖說(shuō)MapReduce有些過(guò)時(shí)了,但Hadoop的另一個(gè)基石HDFS依然堅(jiān)挺,并且是開(kāi)源社區(qū)最受歡迎的分布式存儲(chǔ),絕對(duì)您花時(shí)間去學(xué)習(xí)。如果想深入研究的話,Google的GFS論文也是一定要讀的([url=]https://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf[/url])。當(dāng)然開(kāi)源世界中還有很多的分布式存儲(chǔ),國(guó)內(nèi)阿里巴巴的OceanBase也是很優(yōu)秀的一個(gè)。
筆者建議:學(xué)習(xí)HDFS
資源調(diào)度框架:Docker可是整整火了最近一兩年。各個(gè)公司都在發(fā)力基于Docker的容器解決方案,最有名的開(kāi)源容器調(diào)度框架就是K8S了,但同樣著名的還有Hadoop的YARN和Apache Mesos。后兩者不僅可以調(diào)度容器集群,還可以調(diào)度非容器集群,非常值得我們學(xué)習(xí)。
筆者建議:學(xué)習(xí)YARN
分布式協(xié)調(diào)框架:有一些通用的功能在所有主流大數(shù)據(jù)分布式框架中都需要實(shí)現(xiàn),比如服務(wù)發(fā)現(xiàn)、領(lǐng)導(dǎo)者選舉、分布式鎖、KV存儲(chǔ)等。這些功能也就催生了分布式協(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ù)庫(kù):典型的就是memcache和redis了,特別是Redis簡(jiǎn)直是發(fā)展神速。其簡(jiǎn)潔的API設(shè)計(jì)和高性能的TPS日益得到廣大用戶的青睞。即使是不學(xué)習(xí)大數(shù)據(jù),學(xué)學(xué)Redis都是大有裨益的。
筆者建議:學(xué)習(xí)Redis,如果C語(yǔ)言功底好的,最好熟讀源碼,反正源碼也不多
列式存儲(chǔ)數(shù)據(jù)庫(kù):筆者曾經(jīng)花了很長(zhǎng)的時(shí)間學(xué)習(xí)Oracle,但不得不承認(rèn)當(dāng)下關(guān)系型數(shù)據(jù)庫(kù)已經(jīng)慢慢地淡出了人們的視野,有太多的方案可以替代rdbms了。人們針對(duì)行式存儲(chǔ)不適用于大數(shù)據(jù)ad-hoc查詢這種弊端開(kāi)發(fā)出了列式存儲(chǔ),典型的列式存儲(chǔ)數(shù)據(jù)庫(kù)就是開(kāi)源社區(qū)的HBASE。實(shí)際上列式存儲(chǔ)的概念也是出自Google的一篇論文:Google BigTable,有興趣的話大家最好讀一下:[url=]https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf[/url]
筆者建議:學(xué)習(xí)HBASE,這是目前應(yīng)用最廣泛的開(kāi)源列式存儲(chǔ)
消息隊(duì)列:大數(shù)據(jù)工程處理中消息隊(duì)列作為“削峰填谷”的主力系統(tǒng)是必不可少的,當(dāng)前該領(lǐng)域內(nèi)的解決方案有很多,包括ActiveMQ,Kafka等。國(guó)內(nèi)阿里也開(kāi)源了RocketMQ。這其中的翹楚當(dāng)屬Apache Kafka了。Kafka的很多設(shè)計(jì)思想都特別契合分布流式數(shù)據(jù)處理的設(shè)計(jì)理念。這也難怪,Kafka的原作者Jay Kreps可是當(dāng)今實(shí)時(shí)流式處理方面的頂級(jí)大神。
筆者建議:學(xué)習(xí)Kafka,不僅僅好找工作(幾乎所有大數(shù)據(jù)招聘簡(jiǎn)歷都要求會(huì)Kafka:-) ),還能觸類旁通進(jìn)一步理解基于備份日志方式的數(shù)據(jù)處理范型
大數(shù)據(jù)分析師或數(shù)據(jù)科學(xué)家
要想成為一個(gè)數(shù)據(jù)科學(xué)家,您至少要掌握以下技能:
數(shù)學(xué)功底:微積分是嚴(yán)格要掌握的。不一定要掌握多元微積分,但一元微積分是必須要熟練掌握并使用的。另外線性代數(shù)一定要精通,特別是矩陣的運(yùn)算、向量空間、秩等概念。當(dāng)前機(jī)器學(xué)習(xí)框架中很多計(jì)算都需要用到矩陣的乘法、轉(zhuǎn)置或是求逆。雖然很多框架都直接提供了這樣的工具,但我們至少要了解內(nèi)部的原型原理,比如如何高效判斷一個(gè)矩陣是否存在逆矩陣并如何計(jì)算等。
重溫同濟(jì)版《高等數(shù)學(xué)》,有條件可以去Coursea學(xué)習(xí)賓夕法尼亞大學(xué)的微積分課程
推薦學(xué)習(xí)Strang的線性代數(shù):《Introduction to Linear Algebra》——這是最經(jīng)典的教材,沒(méi)有之一!
數(shù)理統(tǒng)計(jì):概率論和各種統(tǒng)計(jì)學(xué)方法要做到基本掌握,比如貝葉斯概率如何計(jì)算?概率分布是怎么回事?雖不要求精通,但對(duì)相關(guān)背景和術(shù)語(yǔ)一定要了解
找一本《概率論》重新學(xué)習(xí)下
**交互式數(shù)據(jù)分析框架:這里并不是指SQL或數(shù)據(jù)庫(kù)查詢,而是像Apache Hive或Apache Kylin這樣的分析交互框架。開(kāi)源社區(qū)中有很多這樣類似的框架,可以使用傳統(tǒng)的數(shù)據(jù)分析方式對(duì)大數(shù)據(jù)進(jìn)行數(shù)據(jù)分析或數(shù)據(jù)挖掘。筆者有過(guò)使用經(jīng)驗(yàn)的是Hive和Kylin。不過(guò)Hive特別是Hive1是基于MapReduce的,性能并非特別出色,而Kylin采用數(shù)據(jù)立方體的概念結(jié)合星型模型,可以做到很低延時(shí)的分析速度,況且Kylin是第一個(gè)研發(fā)團(tuán)隊(duì)主力是中國(guó)人的Apache孵化項(xiàng)目,因此日益受到廣泛的關(guān)注。
首先學(xué)習(xí)Hive,有時(shí)間的話了解一下Kylin以及背后的數(shù)據(jù)挖掘思想!最后說(shuō)一下:
> 很多人都知道我有大數(shù)據(jù)培訓(xùn)資料,都天真的以為我有全套的大數(shù)據(jù)開(kāi)發(fā)、hadoop、spark等視頻學(xué)習(xí)資料。我想說(shuō)你們是對(duì)的,我的確有大數(shù)據(jù)開(kāi)發(fā)、hadoop、spark的全套視頻資料。
如果你對(duì)大數(shù)據(jù)開(kāi)發(fā)感興趣可以加口群領(lǐng)取免費(fèi)學(xué)習(xí)資料: 763835121
本文題目:大數(shù)據(jù)學(xué)習(xí)路線-甲骨文高級(jí)技術(shù)總監(jiān)思維圖
鏈接分享:http://chinadenli.net/article44/pooeee.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁(yè)設(shè)計(jì)公司、搜索引擎優(yōu)化、軟件開(kāi)發(fā)、靜態(tài)網(wǎng)站、自適應(yīng)網(wǎng)站、App設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)