這段時間有很多人問小編如何學習大數據? 既然這麼多人問我,那就寫篇文章,告訴大家,當然寫這篇文章也是經過思考的,不是提筆就寫,先介紹下我的基本情況,第一小編本人只是大數據中學習的小學生而已,不是什麼大牛,也不是什麼技術牛逼的神人,如果貿然動筆肯定會貽笑大方;另一方面大數據它本身領域博大精深,涵蓋之廣 ...
這段時間有很多人問小編如何學習大數據?
既然這麼多人問我,那就寫篇文章,告訴大家,當然寫這篇文章也是經過思考的,不是提筆就寫,先介紹下我的基本情況,第一小編本人只是大數據中學習的小學生而已,不是什麼大牛,也不是什麼技術牛逼的神人,如果貿然動筆肯定會貽笑大方;另一方面大數據它本身領域博大精深,涵蓋之廣,技術種類之多確實很難用一篇文章說明。
文章的目的就是希望給所有學習大數據規劃一條比較清晰的學習路線,能夠幫助這些學習者開啟大數據學習之旅。面對大數據這種領域,技術肯定絢麗繁複,每一個大數據學習者都必鬚根據自己的情況制定學習制度。
當今程式員行業什麼最賺錢或者說什麼最火?ABC無出其右。可以理解為ABC三者,AI + Big Data + Cloud,便是人工智慧、大數據和雲計算。各自領域都有行業領導者技術牛逼在引領前行,那麼今天小編就帶大家來討論下大數據這個方向。
大數據,英文名為Big Data,關於它的定義很多,大家也可以百度,我在這裡就不說了。最權威的必須是IBM的定義,大家可以自行查閱。本篇文章是寫如何學習大數據,所以咱們們就要定義大數據領域內的不同角色。這樣大家才能根據自身情況對號入座,在大數據學習的路上開啟學習之路。
角色劃分:
小編根據當下大數據行業分為兩類角色:
1、大數據工程
2、大數據分析
這兩種角色相互產生交集又獨立運作,如果沒有大數據超級工程,大數據分析這個角色便無任何意義;沒有大數據分析,大數據工程也沒有存在的意義和理由。這就相當於結婚和戀愛,戀愛的最終是目標就是結婚,不以結婚為目的的戀愛就是是耍流氓,哈哈,道理都一樣。
大數據工程需要的是處理數據的定義、收集、計算與保存工作,所以大數據建設者們在設計和部署這樣的系統時首先考慮的應該是數據高可用的問題,這段話可以理解為大數據工程系統需要隨時地為分析系統提供數據服務;
而大數據分析角色的定位於如何利用數據,可以理解成從大數據工程系統中接收到的數據之後,如何為企業提供數據分析,並且能夠幫助到企業或者公司進行業務改善和提升服務水平的目的,因此對於大數據分析師來說,首要解決的問題是發現並且利用數據的價值,具體包括:趨勢分析、模型建立以及預測分析等。
我們屬於哪種角色?
前面大家跟隨小編瞭解了大數據領域內的角色,下麵那咱們就要對號入座了。這樣才能更好的開始大數據學習。根據自身經驗,我把它分為三個級別:
- ·菜鳥
- ·有一定經驗的工程師
- ·資深專家
根據上面的三個級別, 確定自己的定位後,那就定位到大數據角色,下麵是一些基本法則:
·如果具有良好的編程基礎,也有過深入瞭解電腦的交互和互聯網底層技術原理,但是數學和統計學掌握不熟悉,所以大數據工程可能就是你以後的學習的方向
· 如果有一定的編程基礎(掌握高級語言,例如:python),同時又有牛逼的數學功底,那麼大數據分析就是你努力發展的方向。
大數據學習路線:
先別管你是屬於以上哪類角色,大數據理論基礎知識是必須要掌握的,他們只是包括但是不限於:
- 數據分片與路由:挑一個典型的分區演算法去學習,比如一致性哈希演算法
- 備份機制與一致性:
- ·學習CAP理論
- ·冪等性:現在很多的分散式系統狀態管理的基石
- ·各種一致性模型,例如:強一致性、弱一致性、最終一致
- ·備份機制:主從的叫法已經不怎麼流行了,當前更cool的叫法是Leader-Follower模式
- ·共識協議:在咱們國家通常翻譯成一致性協議。只要學習常見的幾種就可以:Paxos或者Raft
- ·演算法和數據結構
- ·LSM:學習和B+樹的區別以及優勢。
- ·壓縮演算法:1,找一個主流的壓縮演算法進行瞭解,例如Snappy, LZ4。
- ·Bloom Filter過濾器
不管是學習大數據工程還是大數據分析,上面描述的理論知識都是必要掌握的,因為它們是設計很多分散式系統必備的技能。下麵我們就針對不同的角色設計不同的學習路線:
合格的大數據工程師:
當一名合格的大數據工程師,至少要掌握以下技能:
- 一門JVM系語言 ,建議先學習Java或Scala
- ·計算處理框架:嚴格來說,這分為離線批處理和流式處理,建議學習Flink、Spark Streaming或Kafka Streams中的一個
- ·分散式存儲框架:建議學習HDFS
- ·資源調度框架:建議學習YARN
- ·分散式協調框架:建議學習Zookeeper——太多大數據框架都需要它了,比如Kafka, Storm, HBase等
- ·KV資料庫:典型的就是memcache和Redis了,特別是Redis簡直是發展神速,建議學習Redis,如果C語言功底好的,最好熟讀源碼,反正源碼也不多。
- 列式存儲資料庫:建議學習HBASE,這是目前應用最廣泛的開源列式存儲
- ·消息隊列:大數據工程處理中消息隊列作為“削峰填谷”的主力系統是必不可少的,當前該領域內的解決方案有很多,包括ActiveMQ,Kafka等。建議學習Kafka,不僅僅好找工作,還能觸類旁通進一步理解基於備份日誌方式的數據處理範型
大數據分析師:
要想成為一個數據科學家,您至少要掌握以下技能:
- 數學功底:微積分是嚴格要掌握的。一元微積分是必須要熟練掌握並使用的。線性代數要精通,矩陣的運算、向量空間、秩等概念。
- ·回顧同濟版《高等數學》,有能力的可以去Coursea學習賓夕法尼亞大學的微積分課程
- ·推薦學習Strang的線性代數:《Introduction to Linear Algebra》
- 數理統計:概率論和各種統計學方法要做到基本掌握,找一本《概率論》重新學習下
- 互動式數據分析框架:這裡指的是Apache Hive或Apache Kylin這樣的分析交互框架,首先學習Hive,有時間的話瞭解一下Kylin以及背後的數據挖掘思想
- ·機器學習框架:小編還是建議可以從機器學習演算法的原理來進行學習,看到機器學習的框架,我覺得大家應該能想到很多種, 比如TensorFlow、Caffe8、Keras9、CNTK10、Torch711等,這裡領銜的是TensorFlow。小編建議大家選取其中的一個框架進行學習。
- ·Udacity的課程是非常入門級的機器學習課程。
- 我要推薦下我自己建的大數據開發學習群:119599574,專註大數據分析方法,大數據編程,大數據倉庫,大數據案例,人工智慧,數據挖掘都是純乾貨分享都是學大數據開發的,如果你正在學習大數據,歡迎初學和進階中的小伙伴。