?我們介紹了新手學習hadoop的入門注意事項。這篇來談談hadoop核心知識學習。?
hadoop核心知識學習:?
hadoop分為hadoop1.X和hadoop2.X,并且還有hadoop生態系統。這里只能慢慢介紹了。一口也吃不成胖子。
那么下面我們以hadoop2.x為例進行詳細介紹:
Hadoop的核心是mapreduce和hdfs。?
Mapreduce:mapreduce是很多人都需要邁過去的檻,它比較難以理解,我們有時候即使寫出了mapreduce程序,但是還是摸不著頭腦。我們都知道mapreduce是一種編程模型,那么它能干什么,對我有什么用。它的原理是什么,為什么我們編寫了map函數,reduce函數就可以在多臺機器上運行,這些問題或許都給初學者帶來了困擾。
那么我們就要了解:
- 什么是mapreduce?
- Mapreduce的工作原理是什么?
- Mapreduce的工作流程是什么?
- Mapreduce的編程模型是什么?
- shuffle是什么?
- partition是什么?
- combiner是什麼?
- 他們三者之間的關系是什么?
- map的個數由誰來決定,如何計算?
- reduce個數由誰來決定,如何計算?
mapreduce熟悉了,還有一些問題困擾著初學者,雖然有了Java基礎,但是我們需要搭建開發環境,該如何搭建開發環境?
那么就需要我們學習Windows上如何使用Eclipse遠程連接Hadoop并進行程序開發
因為在操作mapredcue過程中伴隨著操作hdfs,就像我們傳統開發,編程是離不開數據庫一樣。hdfs可以理解為傳統編程的數據庫,但是其實他不是,真正的數據庫是hadoop data base,也就是hbase。好了下面,我們開始講如何學習hdfs:
HDFS:我們至少應該學習以下內容
- 什么是HDFS及HDFS架構設計?
- HDFS體系結構簡介及優缺點?
- Hdfs如何存儲數據?
- Hdfs如何讀取數據?
- Hdfs如何寫入文件?
- Hdfs的副本存放策略?
- 如何訪問hdfs?
- Hdfs數據如何復制?
- Namenode的熱備?
hadoop生態系統內容還是比較多的,但是最常用的是hive,hbase。?
Hive是初學者進入大數據(hadoop)行業最好的選擇入口,因為它提供了簡單的類sql語句,使得不懂得mapreduce程序編寫的學員也能夠很輕松的進入大數據行業。所以建議大家(尤其是零基礎的學員)在學習hadoop的過程中,可以著重加強對hive的學習,尤其是hive語句的熟練操作。當然對于有數據庫基礎的學員學習hive就更容易一些。
Hbase是一種nosql數據庫,只有當數據量非常大時,比如TB、PB級,hbase才能發揮出很好的效果,所以對于致力于加入大公司的學員,可以深入學習hbase,尤其是hbase表的設計,rowkey的設計,hbase性能的調優,hbase和hive、impala的結合等。
Yarn是分布式集群資源管理框架,也是hadoop2.x和hadoop1.x明顯不同的地方,所以我們還是有必要對yarn的原理、框架、組成部分進行詳細的了解的。
對于hadoop其他的組件:比如海量日志收集工具flume,數據導入導出工具sqoop,應用程序協調服務zookeeper,學員可以結合實戰項目學習其原理,如何使用即可。
對于想從事數據挖掘的學員,可以深入學習mahout、機器學習、算法等相關知識,根據學員自己的職業選擇和興趣愛好自主選擇,建議零基礎的學員最好是先從hive入手。
Storm是一種基于流的計算框架,spark是基于內存的計算框架,它們是不同于mapreduce的計算框架,但作用都是對數據的處理和分析,建議初學者在學習好mapreduce的前提下,可以對storm和spark進行深入的學習,切記貪多嚼不爛。通而不精。
如果想更加深入的學習,豐富自己的知識,可以選擇性的學習一下shell、python腳本語言,Redis、MongoDB等nosql數據庫,如果想做hadoop運維的,也可以學習ganglia和nagios等監控工具。
最后建議大家在學習過程中一定要由淺入深、從簡單到復雜、理論和實踐相結合,由于hadoop生態系統的工具比較多,每個工具有不同的側重點,所以再次提醒大家切記貪多、切記浮躁、只有基礎扎實了,后續的學習才會更輕松、更快速、更高效。