零基础学习hadoop到上手工作线路指导(中级篇)
2019獨角獸企業重金招聘Python工程師標準>>>
此篇是在零基礎學習hadoop到上手工作線路指導(初級篇)的基礎,一個繼續總結。
五一假期:在寫點內容,也算是總結。上面我們會了基本的編程,我們需要對hadoop有一個更深的理解:
hadoop分為hadoop1.X、hadoop2.X,并且還有hadoop生態系統。這里只能慢慢介紹了。一口也吃不成胖子。
hadoop 1.x分為
mapreduce與hdfs
其中mapreduce是很多人都需要邁過去的檻,它比較難以理解,我們有時候即使寫出了mapreduce程序,但是還是摸不著頭腦。
我們不知道key代表什么意思,我們不知道為什么會處理這個value。map有key、value,輸出了key、value,有時候還會合并,reduce處理完畢之后又輸出了key、value。這讓我們產生了困惑,分不清。
mapreduce是一種編程模型,那么它能干什么,對我有什么用。它的原理是什么,為什么我們編寫了map函數,reduce函數就可以在多臺機器上運行。
這些問題或許都給初學者帶來了困擾。是的,這些問題同樣也困擾了我,這里寫出來分享給大家,避免走同樣的彎路。
面對mapreduce,有一篇文章,這里總結的很好,包括:該如何入門,該如何理解mapreduce,該如何練習mapreduce,該如何運用mapreduce。這里面介紹的很全。
mapreduce學習指導及疑難解惑匯總,內容包括:
---------------------------------------------------------------------------------------------------
1.思想起源:
我們在學習mapreduce,首先我們從思想上來認識。其實任何的奇思妙想,抽象的,好的想法、都來源于我們生活,而我們也更容易理解我們身邊所發生事情。所以下面一篇便是從生活的角度,來讓我們理解,什么是mapreduce。
Hadoop簡介(1):什么是Map/Reduce
2.設計思路
我們從思想上認識了mapreduce,那么mapreduce具體是什么,我們需要看得見,摸得著。我們該如何實現這個思想,我們該如何設計mapreduce。那么現在來說說它的設計思路。
設計思路如何表示:ok下面的帖子,是通過一張圖來表達的。
Mapreduce 整個工作機制圖
mapreduce是hadoop的核心,正因為mapreduce,所以才產生了分布式。所以我們可能通過一張圖,了解的不夠清楚和詳細。我們還需要了解里面的原理:
MapReduce工作原理講解
?
3.模型實現
通過上面我們可能有了自己的一些看法。但是我們可能還是認識不太清楚。那么咱們在來看看編程模型,來進一步的了解。
MapReduce 編程模型概述
mapreduce編程模型
4.產生問題
我們看了上面的文章,這時候會有一些名詞、概念進入我們的腦海。
除了map,reduce,task,job,shuffe,partition,combiner這些把我們給弄糊涂了。
我們產生問題如下:
map的個數由誰來決定,如何計算?
reduce個數由誰來決定,如何計算?
簡單來講map由split來決定,reduce則是由partition來決定。
詳細可以查看
如何確定 Hadoop map和reduce的個數--map和reduce數量之間的關系是什么?
---------------------------------------------------------------------------------------------------
shuffle是什么?
partition是什么?
combiner是什麼?
他們三者之間的關系是什么?
mapreduce是hadoop核心,而shuffle是mapreduce的核心,shuffle個人認為它是一個動態的過程,包含了Combiner,merge等的過程,那么這里因為講到shuffle,很多人都講的全面,Combiner,merge,sort幾乎全都講了,這樣講是沒有錯誤的,但是容易給初學者造成一個假象,那就是這些過程必須都是包含的,其實這些是根據個人的需求來確定的。
徹底了解mapreduce核心Shuffle--解惑各種mapreduce問題
對于Combiner的疑惑可以查看
Mapper過程中Combiner的作用
解決了下面問題
為什么需要在Mapper端進行歸約處理?
為什么可以在Mapper端進行歸約處理?
既然在Mapper端可以進行歸約處理,為什么在Reducer端還要處理?
上面三個問題,可以查看帖子
hadoop中,combine、partition、shuffle作用分別是什么?
同樣關于上面的問題可以參考
關于Mapper、Reducer的個人總結
5.編程實現
mapreduce是一種編程模型,我們認識了解,下面就需要編程實現了。那么mapreduce都能做些什么?下面我們可以看看
MapReduce初級案例(1):使用MapReduce去重
MapReduce初級案例(2):使用MapReduce數據排序
MapReduce初級案例(3):使用MapReduce實現平均成績
通過上面三個例子,也是我們驗證前面所理解的內容。
同樣可以參考下面內容
Hadoop mapper類的閱讀
Hadoop reducer類的閱讀
Mapreduce shuffle和排序
hadoop中mapreduce包及制作文檔指導
Hadoop開發環境搭建及map-reduce開發實例講解視頻下載
如何進行Hadoop二次開發指導視頻下載
6.mapreduce應用
上面是一些基本的知識,那么我們熟悉之后,其實有些地方,可以應用在其它方面。下面可以參考:
淘寶之HBase MapReduce實例分析
MapReduce在壓力測試中的應用
---------------------------------------------------------------------------------------------------
這里在增加幾篇:
深度了解mapreduce---MapReduce源碼分析總結
此篇文章可以解決很多初學者的困惑,由淺入深講的很不錯。
新手指導:mapreduce不同類型的數據分到同一個分區是否會影響輸出結果
由于在我們剛接觸知識,會讓我們造成誤解,這里區分開了,分區與輸出結果之間的關系。
新手指導:MapReduce中的分區方法Partitioner
這里講解了分區是由誰來決定的,我們該如何分區
新手指導:mapreduce的key與value輸入輸出參數為什么會讓你迷惑
對于新手這篇文章闡述了key,value為什么會讓我們迷惑。
新手指導:讓你真正了解mapreduce中map函數與reduce函數功能及key與value的含義
詞牌你文章同樣,從另外角度講解了key,value,通過上面兩篇或許你已經認識了key與value。
通過Wordcount實例解析map函數及reduce函數執行過程
很多新手在學習的過程中找不到標準,不知道mapreduce程序,每個過程,每行代碼代表什么意思,這里給大家提供可以參考一下。
總結:如果已經把上面的文章都看過了,那么你對mapreduce如果說還不透徹,但是已經感覺對mapreduce會有自己的看法了。并且產生的各種問題,都有了自己的答案。
---------------------------------------------------------------------------------------------------
mapreduce熟悉了,還有一些問題困擾著初學者,雖然有了Java基礎,但是我們需要搭建開發環境,該如何搭建開發環境:
hadoop開發方式總結及操作指導
開發方式有兩種,但是其實本質是一樣的,第一種方式只能操作hdfs,對于操作mapreduce,可能會遇到權限問題。所以可以采用第二種方式。也就是下面這篇所介紹的開發方式
新手指導:Windows上使用Eclipse遠程連接Hadoop進行程序開發
---------------------------------------------------------------------------------------------------
因為在操作mapredcue過程中伴隨著操作hdfs,就像我們傳統開發,編程是離不開數據庫一樣。hdfs可以理解為傳統編程的數據庫,但是其實他不是,真正的數據庫是hadoop data base,也就是hbase。好了下面,我們開始講hdfs:
我們該如何學習hdfs:
什么是HDFS及HDFS架構設計
這里給我們一個初步的概念
HDFS體系結構簡介及優缺點
初步了解之后,我們就需要了解它的組成,為了更好的使用它,我們就需要了解他的優點與缺點。
HDFS可以理解為數據庫,因為我們既可以通過sql直接操作數據庫,亦可以通過編程接口,通過編程語言來操作。那么HDFS則是可以通過shell來操作。
Hadoop Shell命令字典(可收藏)
Hadoop框架之HDFS的shell操作
HDFS Shell基本操作HDFS命令行接口
,同樣hsfs的編程接口可以通過下面來了解:
HDFS的Java訪問接口
Java創建hdfs文件實例
Hadoop培訓筆記之HDFS編程
為了節省空間,我們還可以對hdfs數據進行壓縮:
HDFS支持數據壓縮的幾種方法探討
上面可以說是我們已經有了一定的了解,但是有的同學,想系統的了解,這里給大家提供一些資料。
HDFS必讀書籍:HDFS-Hadoop分布式文件系統深度實踐
Hadoop技術內幕 深入解析HADOOP COMMON和HDFS架構設計與實現原理大全1-9章
深入淺出Hadoop實戰開發(HDFS實戰圖片、MapReduce、HBase實戰微博、Hive應用)
----------------------------------------------------------------------------------------------
我們在學習和使用的過程中,會遇到很多的錯誤,這里也給大家提供幾篇帖子
hadoop常見錯誤匯總及解決辦法一
Hadoop常見錯誤問題及解決方法總結二
hadoop常見錯誤總結三
-----------------------------------------------------------------------------------------------------------------
至此hadoop1.x已經完畢了(后面有時間繼續補充)
hadoop生態系統
hadoop生態系統內容還是比較多的,但是最常用的是hive,hbase,所以這里對他們也總結一下:
1.hive
首先我們需要hive是什么?
讓你真正明白什么是hive
上面講的很明白
1.hive是一個數據倉庫
2.hive基于hadoop。
總結為一句話:hive是基于hadoop的數據倉庫。
hive明白之后,如同我們明白了關系數據庫是什么了,那么我們該如何使用操作它:
首先我們要安裝,安裝分為很多種分為單機遇集群安裝。
可參考下面內容:(正在更新)
Hive安裝指導
HIVE完全分布式集群安裝過程(元數據庫: MySQL)
上面需要說明的是hive默認數據庫并不是mysql,但是因為默認數據庫存在局限,所以最好使用mysql。
安裝完畢,那么我們就需要練練手了,可以根據下面內容
hive基本操作
會了基本的操作還不夠,如同我們需要了解sql語法一樣,我們需要了解hive各種語法
Hadoop Hive sql語法詳解1-認識hive及DDL操作
Hadoop Hive sql語法詳解2-修改表結構
Hadoop Hive sql語法詳解3--DML 操作:元數據存儲
Hadoop Hive sql語法詳解4--DQL 操作:數據查詢SQL
Hadoop Hive sql語法詳解5--HiveQL與SQL區別
這里面包含了加載數據、查詢數據等各種操作。
上面是一些基本的操作,下面還有一些負責一些操作如:
Hive快捷查詢:不啟用Mapreduce job啟用Fetch task三種方式介紹
Hive如何執行文件中的sql語句
Hive四種數據導入方式介紹
Hive中的三種不同的數據導出方式介紹
Hive如何創建索引
上面基本屬于實戰類型,我們還需要高級進階,我們需要了解里面的原理,我們需要知道遇到問題,該如何解決。
原理:
全面了解hive
Hive體系結構介紹
hive實現原理
hive內部表與外部表區別詳細介紹
HIVE中Join的專題---Join詳解
讓你徹底明白hive數據存儲各種模式
Hive配置文件中配置項的含義詳解(收藏版)
HIVE與傳統數據庫對比
hive詳解
原理大致懂了,基本操作會了,我們可能又有了更進一步的認識,那么hive如何結合hadoop,hbase發揮作用,該如何發揮它的實際意義,被我們所用。
首先我們使用hive的時候,很多都與hbase相結合,這樣發揮hive的長處,在各種查詢數據方面相比hbase使用更方便。
hive為什么與hbase整合
Hive與HBase整合完整指導
hadoop、hbase、hive版本對應關系
上面是與hbase結合使用,那么我們該如何與編程語言向結合,可以參考下面內容:
通過JDBC驅動連接Hive操作實例
Hive:用Java代碼通過JDBC連接Hiveserver介紹
Hive:用Java代碼通過JDBC連接Hiveserver介紹
從 MapReduce 到 Hive 實戰分析
hive實戰
上面或許你已經對hive有所了解,下面的面試及遇到的問題,大家可參考
hive找不到創建的表了
Shark對Hive的支持與不支持的語法介紹
面試題:分別使用Hadoop MapReduce、hive統計手機流量
hive面試題目:表大概有2T左右,對表數據轉換
hive如何通過設置日志定位錯誤
hive在騰訊分布式數據庫時間分享
(暫時到此,以后更新)
如果到了這個地方。后面的內容你可以在看看視頻。
hadoop新手入門視頻
hadoop10G云計算和實戰hadoop視頻教程外加煉術成金和云計算視頻(免費分享)
hadoop搭建集群線路指導
通過以上視頻,搭建環境和開發環境都沒有問題。以后有時間咱們可以再次展開和討論。
轉載于:https://my.oschina.net/MrMichael/blog/299049
總結
以上是生活随笔為你收集整理的零基础学习hadoop到上手工作线路指导(中级篇)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 周末可以办银行卡卡吗
- 下一篇: x264 n-th pass编码时候St