菜鳥的Hadoop快速入門

1、相關概念

一、大數據

大數據是一門概念,也是一門技術,是以Hadoop爲表明的大數據平臺框架上進行各類數據分析的技術。算法

大數據包括了以Hadoop和Spark爲表明的基礎大數據框架,還包括實時數據處理,離線數據處理,數據分析,數據挖掘和用機器算法進行預測分析等技術。編程

二、Hadoop

Hadoop是一個開源的大數據框架,是一個分佈式計算的解決方案。緩存

Hadoop的兩個核心解決了數據存儲問題(HDFS分佈式文件系統)和分佈式計算問題(MapRe-duce)。安全

舉例1:用戶想要獲取某個路徑的數據,數據存放在不少的機器上,做爲用戶不用考慮在哪臺機器上,HD-FS自動搞定。服務器

舉例2:若是一個100p的文件,但願過濾出含有Hadoop字符串的行。這種場景下,HDFS分佈式存儲,突破了服務器硬盤大小的限制,解決了單臺機器沒法存儲大文件的問題,同時MapReduce分佈式計算能夠將大數據量的做業先分片計算,最後彙總輸出。app

2、Hadoop特色

優勢框架

一、支持超大文件。HDFS存儲的文件能夠支持TB和PB級別的數據。socket

二、檢測和快速應對硬件故障。數據備份機制,NameNode經過心跳機制來檢測DataNode是否還存在。分佈式

三、高擴展性。可建構在廉價機上,實現線性(橫向)擴展,當集羣增長新節點以後,NameNode也能夠感知,將數據分發和備份到相應的節點上。ide

四、成熟的生態圈。藉助開源的力量,圍繞Hadoop衍生的一些小工具。

缺點

一、不能作到低延遲。高數據吞吐量作了優化,犧牲了獲取數據的延遲。

二、不適合大量的小文件存儲。

三、文件修改效率低。HDFS適合一次寫入,屢次讀取的場景。

3、HDFS介紹

一、HDFS框架分析

HDFS是Master和Slave的主從結構。主要由Name-Node、Secondary NameNode、DataNode構成。

菜鳥的Hadoop快速入門

NameNode

管理HDFS的名稱空間和數據塊映射信存儲元數據與文件到數據塊映射的地方。

若是NameNode掛掉了,文件就會沒法重組,怎麼辦?有哪些容錯機制?

Hadoop能夠配置成HA即高可用集羣,集羣中有兩個NameNode節點,一臺active主節點,另外一臺stan-dby備用節點,二者數據時刻保持一致。當主節點不可用時,備用節點立刻自動切換,用戶感知不到,避免了NameNode的單點問題。

Secondary NameNode

輔助NameNode,分擔NameNode工做,緊急狀況下可輔助恢復NameNode。

DataNode

Slave節點,實際存儲數據、執行數據塊的讀寫並彙報存儲信息給NameNode。

二、HDFS文件讀寫

文件按照數據塊的方式進行存儲在DataNode上,數據塊是抽象塊,做爲存儲和傳輸單元,而並不是整個文件。

菜鳥的Hadoop快速入門

文件爲何要按照塊來存儲呢?

首先屏蔽了文件的概念,簡化存儲系統的設計,好比100T的文件大於磁盤的存儲,須要把文件分紅多個數據塊進而存儲到多個磁盤;爲了保證數據的安全,須要備份的,而數據塊很是適用於數據的備份,進而提高數據的容錯能力和可用性。

數據塊大小設置如何考慮?

文件數據塊大小若是過小,通常的文件也就會被分紅多個數據塊,那麼在訪問的時候也就要訪問多個數據塊地址,這樣效率不高,同時也會對NameNode的內存消耗比較嚴重;數據塊設置得太大的話,對並行的支持就不太好了,同時系統若是重啓須要加載數據,數據塊越大,系統恢復就會越長。

3.2.1 HDFS文件讀流程

菜鳥的Hadoop快速入門
一、向NameNode通訊查詢元數據(block所在的DataNode節點),找到文件塊所在的DataNode服務器。

二、挑選一臺DataNode(就近原則,而後隨機)服務器,請求創建socket流。

三、DataNode開始發送數據(從磁盤裏面讀取數據放入流,以packet爲單位來作校驗)。

四、客戶端已packet爲單位接收,如今本地緩存,而後寫入目標文件,後面的block塊就至關因而append到前面的block塊最後合成最終須要的文件。

3.2.2 HDFS文件寫流程

菜鳥的Hadoop快速入門

一、向NameNode通訊請求上傳文件,NameNode檢查目標文件是否已存在,父目錄是否存在。

二、NameNode返回確承認以上傳。

三、client會先對文件進行切分,好比一個block塊128m,文件有300m就會被切分紅3個塊,一個128m、一個128m、一個44m。請求第一個block該傳輸到哪些DataNode服務器上。

四、NameNode返回DataNode的服務器。

五、client請求一臺DataNode上傳數據,第一個DataNode收到請求會繼續調用第二個DataNode,而後第二個調用第三個DataNode,將整個通道創建完成,逐級返回客戶端。

六、client開始往A上傳第一個block,固然在寫入的時候DataNode會進行數據校驗,第一臺DataNode收到後就會傳給第二臺,第二臺傳給第三臺。

七、當一個block傳輸完成以後,client再次請求NameNode上傳第二個block的服務器。

4、MapReduce介紹

一、概念

MapReduce是一種編程模型,是一種編程方法,是抽象的理論,採用了分而治之的思想。MapReduce框架的核心步驟主要分兩部分,分別是Map和Reduce。每一個文件分片由單獨的機器去處理,這就是Map的方法,將各個機器計算的結果彙總並獲得最終的結果,這就是Reduce的方法。

二、工做流程

向MapReduce框架提交一個計算做業時,它會首先把計算做業拆分紅若干個Map任務,而後分配到不一樣的節點上去執行,每個Map任務處理輸入數據中的一部分,當Map任務完成後,它會生成一些中間文件,這些中間文件將會做爲Reduce任務的輸入數據。Reduce任務的主要目標就是把前面若干個Map的輸出彙總到一塊兒並輸出。

菜鳥的Hadoop快速入門

三、運行MapReduce示例

運行Hadoop自帶的MapReduce經典示例Word-count,統計文本中出現的單詞及其次數。首先將任務提交到Hadoop框架上。

菜鳥的Hadoop快速入門

查看MapReduce運行結束後的輸出文件目錄及結果內容。
菜鳥的Hadoop快速入門

能夠看到統計單詞出現的次數結果

菜鳥的Hadoop快速入門

5、Hadoop安裝

牆裂推薦:史上最詳細的Hadoop環境搭建(http://www.javashuo.com/article/p-xugvrxde-me.html)

一、Hadoop部署模式

本地模式

僞分佈式模式

徹底分佈式模式

以上部署模式區分的依據是NameNode、Data-Node、ResourceManager、NodeManager等模塊運行在幾個JVM進程、幾個機器上。

菜鳥的Hadoop快速入門

二、安裝步驟(以僞分佈式模式爲例)

學習Hadoop通常是在僞分佈式模式下進行。這種模式是在一臺機器上各個進程上運行Hadoop的各個模塊,僞分佈式的意思是雖然各個模塊是在各個進程上分開運行的,可是隻是運行在一個操做系統上的,並非真正的分佈式。

5.2.1 JDK包下載、解壓安裝及JAVA環境變量配置

exportJAVA_HOME=/home/admin/apps/jdk1.8.0_151

exportCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

exportPATH=$JAVA_HOME/bin:$PATH

菜鳥的Hadoop快速入門

5.2.2 Hadoop包下載、解壓安裝及Hadoop環境變量配置

exportHADOOP_HOME="/zmq/modules/hadoop/hadoop-3.1.0"

exportPATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

菜鳥的Hadoop快速入門

5.2.3 配置Hadoop-env.sh、mapred-env.sh、yarn-env.sh 這個文件的JAVA_HOME參數

exportJAVA_HOME="/home/admin/apps/jdk1.8.0_151"

菜鳥的Hadoop快速入門
5.2.4 配置core-site.xml,配置的是HDFS的地址和Hadoop臨時目錄

菜鳥的Hadoop快速入門

5.2.5 配置hdfs-site.xml,設置HDFS存儲時的備份數量,這裏是僞分佈式部署,就填寫1
菜鳥的Hadoop快速入門

5.2.6 格式化HDFS,啓動NameNode、Data-Node、SecondaryNameNode,查看進程

菜鳥的Hadoop快速入門

5.2.7 搭建完成,操做HDFS(經常使用的新建目錄、上傳下載文件等),以及運行MapReduceJob

6、Hadoop更多

以上介紹的僅是對Hadoop的初步學習和使用,Ha-doop的HA徹底分佈式部署、Hadoop的資源調度YARN、Hadoop的高可用和容錯機制、Hadoop生態圈的其餘組件等等尚未去研究,感嘆Hadoop水很深,哈哈。

做者簡介:夢琴,兩年+測試經驗,當前主要負責內部平臺產品的測試及部分外部交付項目測試。

相關文章
相關標籤/搜索