1. 程式人生 > >大資料入門學習路線

大資料入門學習路線

現階段大資料如火如荼,很多人想要學習大資料,但是卻不瞭解大資料,也不知道該從哪開始學起的同學,希望這篇文章能夠幫到你們。 

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

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

2. Zookeeper

zookeeper是一個分散式應用程式協服務,一般為分散式應用提供一致性服務,提供的功能包括:配置維護、域名服務、分散式同步、組服務等。中文名稱是動物園的意思,因為目前的大資料框架的圖示很多都是動物的形狀,所以zookeeper其實就是可以管理很多大資料框架的。針對這個框架,主要掌握如何搭建單節點和叢集,以及掌握如何在zkcli客戶端下對zookeeper的節點進行增刪改查操作即可。想要深入的話可以研究一下zookeeper的Paxos演算法。 

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查詢效率很快,可以達到秒級查詢,但是基於列簇中的列進行查詢,特別是組合查詢的時候,如果資料量很大的話,查詢效能會很差。 

離線專案練手

通常學到這裡就可以找一兩個離線專案練練手了,把上面學習的知識都串一下,加深理解,讓自己對於各個元件之間的配合使用有一個總體的瞭解(這點非常重要)。關於這種專案網上、淘寶上有很多資源。 

6. Redis

redis也是一個nosql 資料庫和key-value型別的資料庫,但是這個資料庫是純基於記憶體的,也就是redis資料庫中的資料都是儲存在記憶體中的,所以它的一個特點就是適用於快速讀寫的應用場景,讀寫可以達到10W次/秒,但是不適合儲存海量資料,畢竟機器的記憶體是有限的,當然,redis也支援叢集,也可以儲存大量資料。在學習redis的時候主要掌握string,list,set,sortedset,hashmap這幾種資料型別的區別以及使用,還有pipeline管道,這個在批量入庫資料的時候是非常有用的,以及transaction事務功能。 

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讓我愛上了寫作。

手機免打擾

咋一看你估計有點蒙,但確實這是一項非常有用的技能,在學習的時候把手機開啟免打擾,什麼微信、簡訊、電話(列個白名單)統統遮蔽,一個不容易受打擾的環境,瞬間學習效率提升了好幾倍,你最寶貴的東西就是你的注意力,不要讓他輕易的被他人收割! 大資料學習資料分享群119599574 不管你是小白還是大牛,小編我都挺歡迎,今天的原始碼已經上傳到群檔案,不定期分享乾貨,包括我自己整理的一份最新的適合2018年學習的大資料開發和零基礎入門教程,歡迎初學和進階中的小夥伴。