零基礎學習hadoop到上手工做線路指導初級篇:hive及mapreduce

 
此篇是在零基礎學習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端還要處理?
 
上面三個問題,能夠查看帖子

一樣關於上面的問題能夠參考
關於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搭建集羣線路指導


經過以上視頻,搭建環境和開發環境都沒有問題。之後有時間我們能夠再次展開和討論。

相關文章推薦:
零基礎學習hadoop到上手工做線路指導(編程篇)
http://www.aboutyun.com/thread-8329-1-1.html
零基礎學習hadoop生態系統到上手工做線路指導(HBASE篇)
http://www.aboutyun.com/thread-8391-1-1.html
相關文章
相關標籤/搜索