溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

菜鳥的Hadoop快速入門

發(fā)布時間:2020-07-31 12:43:16 來源:網(wǎng)絡(luò) 閱讀:219 作者:數(shù)瀾 欄目:大數(shù)據(jù)

一、相關(guān)概念

1、大數(shù)據(jù)

大數(shù)據(jù)是一門概念,也是一門技術(shù),是以Hadoop為代表的大數(shù)據(jù)平臺框架上進(jìn)行各種數(shù)據(jù)分析的技術(shù)。

大數(shù)據(jù)包括了以Hadoop和Spark為代表的基礎(chǔ)大數(shù)據(jù)框架,還包括實(shí)時數(shù)據(jù)處理,離線數(shù)據(jù)處理,數(shù)據(jù)分析,數(shù)據(jù)挖掘和用機(jī)器算法進(jìn)行預(yù)測分析等技術(shù)。

2、Hadoop

Hadoop是一個開源的大數(shù)據(jù)框架,是一個分布式計(jì)算的解決方案。

Hadoop的兩個核心解決了數(shù)據(jù)存儲問題(HDFS分布式文件系統(tǒng))和分布式計(jì)算問題(MapRe-duce)。

舉例1:用戶想要獲取某個路徑的數(shù)據(jù),數(shù)據(jù)存放在很多的機(jī)器上,作為用戶不用考慮在哪臺機(jī)器上,HD-FS自動搞定。

舉例2:如果一個100p的文件,希望過濾出含有Hadoop字符串的行。這種場景下,HDFS分布式存儲,突破了服務(wù)器硬盤大小的限制,解決了單臺機(jī)器無法存儲大文件的問題,同時MapReduce分布式計(jì)算可以將大數(shù)據(jù)量的作業(yè)先分片計(jì)算,最后匯總輸出。

二、Hadoop特點(diǎn)

優(yōu)點(diǎn)

1、支持超大文件。HDFS存儲的文件可以支持TB和PB級別的數(shù)據(jù)。

2、檢測和快速應(yīng)對硬件故障。數(shù)據(jù)備份機(jī)制,NameNode通過心跳機(jī)制來檢測DataNode是否還存在。

3、高擴(kuò)展性??山?gòu)在廉價機(jī)上,實(shí)現(xiàn)線性(橫向)擴(kuò)展,當(dāng)集群增加新節(jié)點(diǎn)之后,NameNode也可以感知,將數(shù)據(jù)分發(fā)和備份到相應(yīng)的節(jié)點(diǎn)上。

4、成熟的生態(tài)圈。借助開源的力量,圍繞Hadoop衍生的一些小工具。

缺點(diǎn)

1、不能做到低延遲。高數(shù)據(jù)吞吐量做了優(yōu)化,犧牲了獲取數(shù)據(jù)的延遲。

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

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

三、HDFS介紹

1、HDFS框架分析

HDFS是Master和Slave的主從結(jié)構(gòu)。主要由Name-Node、Secondary NameNode、DataNode構(gòu)成。

菜鳥的Hadoop快速入門

NameNode

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

如果NameNode掛掉了,文件就會無法重組,怎么辦?有哪些容錯機(jī)制?

Hadoop可以配置成HA即高可用集群,集群中有兩個NameNode節(jié)點(diǎn),一臺active主節(jié)點(diǎn),另一臺stan-dby備用節(jié)點(diǎn),兩者數(shù)據(jù)時刻保持一致。當(dāng)主節(jié)點(diǎn)不可用時,備用節(jié)點(diǎn)馬上自動切換,用戶感知不到,避免了NameNode的單點(diǎn)問題。

Secondary NameNode

輔助NameNode,分擔(dān)NameNode工作,緊急情況下可輔助恢復(fù)NameNode。

DataNode

Slave節(jié)點(diǎn),實(shí)際存儲數(shù)據(jù)、執(zhí)行數(shù)據(jù)塊的讀寫并匯報存儲信息給NameNode。

2、HDFS文件讀寫

文件按照數(shù)據(jù)塊的方式進(jìn)行存儲在DataNode上,數(shù)據(jù)塊是抽象塊,作為存儲和傳輸單元,而并非整個文件。

菜鳥的Hadoop快速入門

文件為什么要按照塊來存儲呢?

首先屏蔽了文件的概念,簡化存儲系統(tǒng)的設(shè)計(jì),比如100T的文件大于磁盤的存儲,需要把文件分成多個數(shù)據(jù)塊進(jìn)而存儲到多個磁盤;為了保證數(shù)據(jù)的安全,需要備份的,而數(shù)據(jù)塊非常適用于數(shù)據(jù)的備份,進(jìn)而提升數(shù)據(jù)的容錯能力和可用性。

數(shù)據(jù)塊大小設(shè)置如何考慮?

文件數(shù)據(jù)塊大小如果太小,一般的文件也就會被分成多個數(shù)據(jù)塊,那么在訪問的時候也就要訪問多個數(shù)據(jù)塊地址,這樣效率不高,同時也會對NameNode的內(nèi)存消耗比較嚴(yán)重;數(shù)據(jù)塊設(shè)置得太大的話,對并行的支持就不太好了,同時系統(tǒng)如果重啟需要加載數(shù)據(jù),數(shù)據(jù)塊越大,系統(tǒng)恢復(fù)就會越長。

3.2.1 HDFS文件讀流程

菜鳥的Hadoop快速入門
1、向NameNode通信查詢元數(shù)據(jù)(block所在的DataNode節(jié)點(diǎn)),找到文件塊所在的DataNode服務(wù)器。

2、挑選一臺DataNode(就近原則,然后隨機(jī))服務(wù)器,請求建立socket流。

3、DataNode開始發(fā)送數(shù)據(jù)(從磁盤里面讀取數(shù)據(jù)放入流,以packet為單位來做校驗(yàn))。

4、客戶端已packet為單位接收,現(xiàn)在本地緩存,然后寫入目標(biāo)文件,后面的block塊就相當(dāng)于是append到前面的block塊最后合成最終需要的文件。

3.2.2 HDFS文件寫流程

菜鳥的Hadoop快速入門

1、向NameNode通信請求上傳文件,NameNode檢查目標(biāo)文件是否已存在,父目錄是否存在。

2、NameNode返回確認(rèn)可以上傳。

3、client會先對文件進(jìn)行切分,比如一個block塊128m,文件有300m就會被切分成3個塊,一個128m、一個128m、一個44m。請求第一個block該傳輸?shù)侥男〥ataNode服務(wù)器上。

4、NameNode返回DataNode的服務(wù)器。

5、client請求一臺DataNode上傳數(shù)據(jù),第一個DataNode收到請求會繼續(xù)調(diào)用第二個DataNode,然后第二個調(diào)用第三個DataNode,將整個通道建立完成,逐級返回客戶端。

6、client開始往A上傳第一個block,當(dāng)然在寫入的時候DataNode會進(jìn)行數(shù)據(jù)校驗(yàn),第一臺DataNode收到后就會傳給第二臺,第二臺傳給第三臺。

7、當(dāng)一個block傳輸完成之后,client再次請求NameNode上傳第二個block的服務(wù)器。

四、MapReduce介紹

1、概念

MapReduce是一種編程模型,是一種編程方法,是抽象的理論,采用了分而治之的思想。MapReduce框架的核心步驟主要分兩部分,分別是Map和Reduce。每個文件分片由單獨(dú)的機(jī)器去處理,這就是Map的方法,將各個機(jī)器計(jì)算的結(jié)果匯總并得到最終的結(jié)果,這就是Reduce的方法。

2、工作流程

向MapReduce框架提交一個計(jì)算作業(yè)時,它會首先把計(jì)算作業(yè)拆分成若干個Map任務(wù),然后分配到不同的節(jié)點(diǎn)上去執(zhí)行,每一個Map任務(wù)處理輸入數(shù)據(jù)中的一部分,當(dāng)Map任務(wù)完成后,它會生成一些中間文件,這些中間文件將會作為Reduce任務(wù)的輸入數(shù)據(jù)。Reduce任務(wù)的主要目標(biāo)就是把前面若干個Map的輸出匯總到一起并輸出。

菜鳥的Hadoop快速入門

3、運(yùn)行MapReduce示例

運(yùn)行Hadoop自帶的MapReduce經(jīng)典示例Word-count,統(tǒng)計(jì)文本中出現(xiàn)的單詞及其次數(shù)。首先將任務(wù)提交到Hadoop框架上。

菜鳥的Hadoop快速入門

查看MapReduce運(yùn)行結(jié)束后的輸出文件目錄及結(jié)果內(nèi)容。
菜鳥的Hadoop快速入門

可以看到統(tǒng)計(jì)單詞出現(xiàn)的次數(shù)結(jié)果

菜鳥的Hadoop快速入門

五、Hadoop安裝

墻裂推薦:史上最詳細(xì)的Hadoop環(huán)境搭建(https://blog.csdn.net/hliq5399/article/details/78193113)

1、Hadoop部署模式

本地模式

偽分布式模式

完全分布式模式

以上部署模式區(qū)分的依據(jù)是NameNode、Data-Node、ResourceManager、NodeManager等模塊運(yùn)行在幾個JVM進(jìn)程、幾個機(jī)器上。

菜鳥的Hadoop快速入門

2、安裝步驟(以偽分布式模式為例)

學(xué)習(xí)Hadoop一般是在偽分布式模式下進(jìn)行。這種模式是在一臺機(jī)器上各個進(jìn)程上運(yùn)行Hadoop的各個模塊,偽分布式的意思是雖然各個模塊是在各個進(jìn)程上分開運(yùn)行的,但是只是運(yùn)行在一個操作系統(tǒng)上的,并不是真正的分布式。

5.2.1 JDK包下載、解壓安裝及JAVA環(huán)境變量配置

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環(huán)境變量配置

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參數(shù)

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,設(shè)置HDFS存儲時的備份數(shù)量,這里是偽分布式部署,就填寫1
菜鳥的Hadoop快速入門

5.2.6 格式化HDFS,啟動NameNode、Data-Node、SecondaryNameNode,查看進(jìn)程

菜鳥的Hadoop快速入門

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

六、Hadoop更多

以上介紹的僅是對Hadoop的初步學(xué)習(xí)和使用,Ha-doop的HA完全分布式部署、Hadoop的資源調(diào)度YARN、Hadoop的高可用和容錯機(jī)制、Hadoop生態(tài)圈的其他組件等等還沒有去研究,感嘆Hadoop水很深,哈哈。

作者簡介:夢琴,兩年+測試經(jīng)驗(yàn),當(dāng)前主要負(fù)責(zé)內(nèi)部平臺產(chǎn)品的測試及部分外部交付項(xiàng)目測試。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI