目錄
一 Hadoop本地模式和僞分佈式模式概述
安裝了Hadoop環境之後,只是搭建了一臺服務器,也就是說只是在虛擬機中安裝了一臺Linux服務器,在大數據集羣中,像這樣的服務器有幾千臺甚至幾萬臺,對於Hadoop的學習,也是從1到多的過程。Hadoop的本地模式和僞分佈式模式都是在一臺服務器上實現的,而真正的大數據環境叫完全分佈式環境,至少需要三臺服務器,這個後面再說。
本地模式:無需瞭解
僞分佈式模式:在一臺服務器上模擬出多臺服務器的情況,所以這個僞的由來就是在一臺服務器上可以模擬出多臺服務器同時運作的情況,其實這個也不是很重要,但是對於後面完全分佈式模式的搭建還是很有幫助的。
二 Hadoop僞分佈式環境搭建
2.1步驟分析
在分析步驟之前還是回顧一下Hadoop框架,首先Hadoop框架的2大特點:存儲和計算,所以這個實驗也是圍繞這兩點,怎麼存儲(HDFS的增刪改查)和怎麼計算(WordCount案例)這個地方結合這兩個案例搭建這個環境。
- 配置集羣
- 啓動集羣,測試集羣,HDFS案例
- 在集羣上進行計算,WordCount案例
2.2配置集羣
這裏配置三處:
- hadoop-env.sh
- core-site.xml
- hdfs-site.xml
爲什麼要配置這三個文件呢?第一個是配置Hadoop中的jdk位置,因爲Hadoop的運行依靠jdk;第二處需要指定Hadoop運行過程中產生的文件的存儲位置;第三處需要指定HDFS副本的數量,什麼是副本呢,是這樣的,HDFS之所以用來存儲大數據,有一個重要的特點就是它上面的數據不止一份,而是很多份,這就叫副本。
(1)定位到hadoop目錄
cd /opt/module/hadoop-2.7.2/
(2)進入hadoop配置文件夾
文件夾的位置在etc/hadoop下,cd etc/hadoop
(3)獲取jdk路徑並配置hadoop-env.sh
echo $JAVA_HOME
vim hadoop-env.sh修改和下圖一樣
(4)配置core-site.xml
vim core-site.xml至下圖一樣
(5)配置hdfs-site.xml
vim hadfs-site.xml
2.3啓動集羣
(1)第一次啓動需要格式化namenode,以後不要隨便格式化
bin/hadoop namenode -format
既然是格式化NameNode,還記得NameNode嗎?HDFS的成員之一,存的是元數據,還有印象嗎?既然是對集羣的具體操作,那麼命令就在bin下面。
之前在解釋hadoop目錄時說到過,bin目錄中是操作集羣具體操作的命令
sbin中是啓動關閉集羣的命令,對初學者來說分清楚這兩個這是很重要的
(2)啓動NameNode
sbin/hadoop-daemon.sh start namenode
既然是啓動集羣,那麼命令在sbin下面,這裏啓動NameNode幹什麼呢?還記得嗎?HDFS的三大成員:分別是NameNode,DataNode,SecondaryNameNode。下圖中jps是查看進程的意思。
(3)啓動DataNode
sbin/hadoop-daemon.sh start datanode
(4)查看集羣啓動情況
可以使用jps查看,也可以在windows瀏覽器上輸入http://hadoop101:50070查看,如下圖所示則你的Hadoop運行健康,記住50070這個端口號
(5)往集羣上存儲一個自己的文件吧
bin/hdfs dfs -mkdir -p /user/wanglei/input
這個命令解釋一下,首先是對集羣的操作,所以命令在bin中,因爲是對hdfs的操作,所以是hdfs,後面的就是在Linux上創建文件夾的命令。
見到上圖表示成功。
(6)上傳文件
bin/hdfs dfs -put wcinput/input.txt /user/wanglei/input
這個命令還是值得講的,這時候腦袋裏估計有點亂了,因爲涉及到了兩個路徑,前面一個是我們電腦上的地址,是我們想要上傳的源文件,後面一個地址是我們集羣的文件系統,是我們上傳的位置。
這裏順便把其他的一些命令也一併講解一下把
上傳 bin/hdfs dfs -put wcinput/input.txt /user/wanglei/input
下載 bin/hdfs dfs -get /user/wanglei/input
查看 bin/hdfs dfs -cat /user/wanglei/input
刪除 bin/hdfs dfs -rm -r /user/wanglei/input
2.4 配置YARN
剛剛體驗了HDFS,現在體驗一下Hadoop的另一個部分YARN,YARN的配置需要配置4個文件
- yarn-env.sh
- yarn-site.xml
- mapred-env.sh
- mapred-site.xml
前面兩個都比較好理解,yarn的環境變量和核心配置,後面的mapred是什麼呢?在介紹YARN這個部分的時候,它的組成有四個:ResourceManager,NodeManager,ApplicationMaster,Container。其實更重要的是Hadoop的計算MapReducer是基於YARN計算的,這個怎麼說呢?YARN的四大組件都是各種管家,資源分配,這些組建都在爲集羣上的任務做服務,所以想要啓動YARN,是需要配置MapReducer的
(1)配置yarn-env.sh
配置如下:
(2)配置yarn-site.xml
配置如下:
(3)配置mapred-env.sh
配置如下
(4)配置mapred-site.xml
2.5啓動集羣(帶YARN)
sbin/yarn-daemon.sh start resourcemanager
sbin/yarn-daemon.sh start nodemanager
這兩個命令應該很好理解,啓動YARN中的兩大管家,ResourceManager和NodeManager
2.6查看YARN
瀏覽器輸入http://hadoop101:8088 查看,可以看到這個集羣上的任務情況。這裏聲明一下,YARN可以看作資源調度器,或者說這個大數據計算的調度器,如下圖,All Application表示所有的任務。
三 在集羣上運行第一個程序
3.1 準備wordcount程序
wordcount程序就是統計一個文件中單詞個數的程序。
(1)上傳一個文件到集羣上
這個文件中都是單詞
(2)運行程序
(3)在yarn上查看這個程序
上圖顯示SUCCEEDED表示運行成功了即可。上圖紅框圈出的那一塊History點進去是沒有用的,需要在配置文件中配置。
3.2歷史服務器配置
(1)配置mapred-site.xml文件
(2)配置如下圖
(3)啓動歷史服務器
sbin/mr-jobhistory-daemon.sh start historyserver
(4)查看歷史服務器