大數據入門學習路線

現階段大數據如火如荼,不少人想要學習大數據,可是卻不瞭解大數據,也不知道該從哪開始學起的同窗,但願這篇文章可以幫到大家。 
java

1. Linux基礎和JavaSE基礎【包含mysql】

這些是基本功,剛開始也不可能學的很精通,最起碼要對linux中的一些基本的命令混個臉熟,後面學習各類框架的時候都會用到,用多了就熟悉了。javase的話建議主要看面向對象,集合,io,多線程,以及jdbc操做便可。mysql的話要熟悉最基礎的增刪改查。 
mysql

2. Zookeeper

zookeeper是一個分佈式應用程序協服務,通常爲分佈式應用提供一致性服務,提供的功能包括:配置維護、域名服務、分佈式同步、組服務等。中文名稱是動物園的意思,由於目前的大數據框架的圖標不少都是動物的形狀,因此zookeeper其實就是能夠管理不少大數據框架的。針對這個框架,主要掌握如何搭建單節點和集羣,以及掌握如何在zkcli客戶端下對zookeeper的節點進行增刪改查操做便可。想要深刻的話能夠研究一下zookeeper的Paxos算法。 
linux

3. Hadoop

目前企業中通常都是用hadoop2.x的版本了,因此就沒有必要再去學hadoop1.x版本了,hadoop2.x主要包含三大塊:程序員

  • hdfs 先學hdfs的架構,如何實現高可用等,接着主要學習hdfs的一些命令便可,上傳,下載,刪除,移動,查看等命令…
  • mapreduce 這個須要重點學習下,要理解mr的原理以及代碼實現,雖然如今工做中真正寫mr的代碼次數不多了(大部分用hive),可是原理仍是要理解的。
  • yarn 前期瞭解便可,只須要知道yarn是一個資源調度平臺,主要負責給任務分配資源便可,yarn不只能夠給mapreduce任務調度資源,還能夠爲spark任務調度資源…yarn是一個公共的資源調度平臺,全部知足條件的框架均可以使用yarn來進行資源調度。 

4. Hive

hive是一個數據倉庫,全部的數據都是存儲在hdfs上的,具體【數據倉庫和數據庫】的區別你們能夠去網上搜索一下,有不少介紹。其實若是對mysql的使用比較熟悉的話,使用hive也就簡單不少了,使用hive主要是寫hql,hql是hive的sql語言,很是相似於mysql數據庫的sql,後續學習hive的時候主要理解一些hive的語法特性便可。其實hive在執行hql,底層在執行的時候仍是執行的mapredce程序。 
注意:其實hive自己是很強大的,數據倉庫的設計在工做中也是很重要的,可是前期學習的時候,主要先學會如何使用就行了。後期能夠好好研究一下hive。 
面試

5. Hbase

hbase是一個在國內很火的nosql 數據庫,是一個key-value類型的數據庫,底層的數據存儲在hdfs上。在學習hbase的時候主要掌握 row-key的設計,以及列簇的設計。要注意一個特色就是,hbase基於rowkey查詢效率很快,能夠達到秒級查詢,可是基於列簇中的列進行查詢,特別是組合查詢的時候,若是數據量很大的話,查詢性能會不好。 
redis

離線項目練手

一般學到這裏就能夠找一兩個離線項目練練手了,把上面學習的知識都串一下,加深理解,讓本身對於各個組件之間的配合使用有一個整體的瞭解(這點很是重要)。關於這種項目網上、淘寶上有不少資源。 
算法

6. Redis

redis也是一個nosql 數據庫和key-value類型的數據庫,可是這個數據庫是純基於內存的,也就是redis數據庫中的數據都是存儲在內存中的,因此它的一個特色就是適用於快速讀寫的應用場景,讀寫能夠達到10W次/秒,可是不適合存儲海量數據,畢竟機器的內存是有限的,固然,redis也支持集羣,也能夠存儲大量數據。在學習redis的時候主要掌握string,list,set,sortedset,hashmap這幾種數據類型的區別以及使用,還有pipeline管道,這個在批量入庫數據的時候是很是有用的,以及transaction事務功能。 
sql

7. Flume

flume是一個日誌採集工具,這個仍是比較經常使用的,最多見的就是採集應用產生的日誌文件中的數據。通常有兩個流程,一個是flume採集數據存儲到kafka中,爲了後面使用storm或者sparkstreaming進行實時處理。另外一個流程是flume採集的數據落盤到hdfs上,爲了後期使用hadoop或者spark進行離線處理。在學習flume的時候其實主要就是學會看flume官網的文檔,學習各類組建的配置參數,由於使用flume就是寫各類的配置。 
數據庫

8. Kafka

kafka 是一個很是優秀的消息隊列,幾乎全部作大數據的公司都會使用到Kafka,在工做中經常使用於做爲一箇中間緩衝層,例如,flume->kafka->storm/sparkstreaming。學習kafka主要掌握topic,partition,replicate等的概念和原理。若是有時間的話能夠好好研究Kafka的源碼,至關重要! 
編程

9. Scala

Scala是一門基於JVM的編程語言,不只支持面向對象編程,並且還支持面向過程,具有了Java的全部特性,同時本身還支持強大的函數式編程,Spark和Kafka都是使用Scala編寫,這也是咱們須要學習它的一大緣由,由於想要深刻理解Spark和Kafka,必需要剖析其源碼。能夠預見將來Scala語言將在大數據領域大放光彩。 

10. Spark

Spark 通過前幾年的迅速發展,現在已經成了不少企業的首選大數據計算框架,也發展成了一個生態圈,spark裏面包含不少技術,spark core,spark steaming,spark mlib,spark graphx。 
spark生態圈裏麪包含的有離線處理spark core,和實時處理spark streaming,在這裏須要注意一下,storm和spark streaming ,兩個都是實時處理框架,可是主要區別是:storm是真正的一條一條的處理,而spark streaming 是一批一批的處理。 
spark中包含不少框架,在剛開始學習的時候主要學習spark core和spark streaming便可。這個通常搞大數據的都會用到。有時間的話能夠好好讀讀Spark的源碼,提高本身的理解深度。spark mlib和spark graphx 能夠等後期工做須要或者有時間了在研究便可。

Spark項目練手

Spark學習完後必定要找幾個項目練手,最好是一個離線項目一個實時項目,好讓你對於整個開發流程有了必定的認識。

至此你應該具有了做爲初級大數據開發工程師的水平,開始找工做去吧!

注意:對於上面的各項技術而言,要挑一到兩個深刻剖析其核心原理,研讀其源碼,這樣在面試中會更有競爭力。

其餘技能推薦

Git & GitHub

Git對於程序員來講絕對是一門利器,不只能夠方便管理本身的代碼,並且還能夠進行多人協助開發,早學早受用!

GitHub也是個好東西啊,這上面有不少不少優秀的開源項目,還有不少你意想不到的實用軟件和資料,是程序員的大寶藏啊,你能夠爲上面的開源項目貢獻本身的代碼,也能夠建立上傳本身的項目代碼,這都是之後面試中的加分項。把刷朋友圈的時間用來刷GitHub吧,相信你會發現另外一個世界。 

Markdown

Markdown是一種可使用普通文本編輯器編寫的標記語言,經過簡單的標記語法,它可使普通文本內容具備必定的格式。使用了Markdown後你再不須要爲文章的樣式而耗費時間了,專一於內容的創做,不得不說Markdown讓我愛上了寫做(推薦一款馬克飛象編輯器,能夠同步印象筆記,寫出來的東西有一種簡潔美,超級喜歡)! 

手機免打擾

咋一看你估計有點蒙,但確實這是一項很是有用的技能,在學習的時候把手機開啓免打擾,什麼微信、短信、電話(列個白名單)通通屏蔽,再找個不容易受打擾的環境,瞬間學習效率提高了好幾倍,你最寶貴的東西就是你的注意力,不要讓他輕易的被他人收割! 

付費就是撿便宜

這項技能的前提就是你得認同你的時間比金錢更重要,我一直以爲買書是一件性價比高到離譜的事情,由於別人幾個月甚至幾年的時間被你花幾十塊錢就買過來了,而對於做者而言也不虧,由於他的時間能夠被出售N屢次,因此這是一個共贏的好事情。對於付費課程來講也是同樣的道理,好的課程可讓你節省大量的時間,而這節省出來的時間在你心目中值多少錢呢?

相關文章
相關標籤/搜索