中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

大數據學習路線-甲骨文高級技術總監思維圖

發布時間:2020-06-16 17:29:49 來源:網絡 閱讀:441 作者:哈斗篷 欄目:大數據

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

角色
以我的愚見,當下大數據行業有兩類角色:
大數據工程
大數據分析

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

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

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

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

而行業經驗指的是你相關領域內的工作經驗,具體可以分為三檔:

菜鳥
有一定經驗的工程師
資深專家——現在在大數據領域有個更cool的名字:數據科學家,比如前百度首席數據科學家:吳恩達博士

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

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

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

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

算法和數據結構

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

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

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

筆者建議:學習Java或Scala

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

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

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

筆者建議:學習HDFS

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

筆者建議:學習YARN

分布式協調框架:有一些通用的功能在所有主流大數據分布式框架中都需要實現,比如服務發現、領導者選舉、分布式鎖、KV存儲等。這些功能也就催生了分布式協調框架的發展。最古老也是最有名的當屬Apache Zookeeper了,新一些的包括Consul,etcd等。學習大數據工程,分布式協調框架是不能不了解的, 某種程度上還要深入了解。

筆者建議:學習Zookeeper——太多大數據框架都需要它了,比如Kafka, Storm, HBase等

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

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

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

筆者建議:學習HBASE,這是目前應用最廣泛的開源列式存儲

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

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

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

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

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

找一本《概率論》重新學習下

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

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

如果你對大數據開發感興趣可以加口群領取免費學習資料: 763835121

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

忻城县| 永春县| 灵寿县| 钦州市| 磴口县| 汉源县| 台江县| 安达市| 陆丰市| 温州市| 武功县| 织金县| 鄯善县| 邵阳市| 巴南区| 西吉县| 西峡县| 勐海县| 永安市| 丰原市| 顺昌县| 册亨县| 姜堰市| 宝山区| 林州市| 新密市| 石棉县| 平定县| 齐河县| 通许县| 吴堡县| 沙河市| 长顺县| 永州市| 饶平县| 德昌县| 中方县| 五原县| 宜宾县| 玉龙| 阳原县|