1. 程式人生 > >Linux下Hadoop2.7.1集群環境的搭建(超詳細版)

Linux下Hadoop2.7.1集群環境的搭建(超詳細版)

目錄 hdfs cp命令 manage war 替代 share logs hadoop

本文旨在提供最基本的,可以用於在生產環境進行Hadoop、HDFS分布式環境的搭建,對自己是個總結和整理,也能方便新人學習使用。 一、基礎環境 在Linux上安裝Hadoop之前,需要先安裝兩個程序: 1.1 安裝說明 1. JDK 1.6或更高版本(本文所提到的安裝的是jdk1.7); 2. SSH(安全外殼協議),推薦安裝OpenSSH。 下面簡述一下安裝這兩個程序的原因: 1. Hadoop是用Java開發的,Hadoop的編譯及MapReduce的運行都需要使用JDK。 2. Hadoop需要通過SSH來啟動salve列表中各臺主機的守護進程,因此SSH也是必須安裝的,即使是安裝偽分布式版本(因為Hadoop並沒有區分集群式和偽分布式)。對於偽分布式,Hadoop會采用與集群相同的處理方式,即依次序啟動文件conf/slaves中記載的主機上的進程,只不過偽分布式中salve為localhost(即為自身),所以對於偽分布式Hadoop,SSH一樣是必須的。 1.1 JDK的安裝與配置
1、上傳壓縮包 我這裏使用的是WinScp工具 上傳jdk-7u76-linux-x64.tar.gz壓縮包 技術分享 2、解壓壓縮包 tar -zxvf jdk-7u76-linux-x64.tar.gz 3、將解壓的目錄移動到/usr/local目錄下 mv /lutong/jdk1.7.0_76/ /usr/local/ 技術分享 4、配置環境變量 vim /etc/profile 技術分享 5、重新加載/etc/profile,使配置生效 source /etc/profile 6、查看配置是否生效 echo $PATH java -version 技術分享 出現如上信息表示已經配置好了。

二、Host配置

由於我搭建Hadoop集群包含三臺機器,所以需要修改調整各臺機器的hosts文件配置,命令如下: vim /etc/hosts 如果沒有足夠的權限,可以切換用戶為root。 三臺機器的內容統一增加以下host配置: 可以通過hostname來修改服務器名稱為master、slave1、slave2 hostname master 技術分享

三、Hadoop的安裝與配置

3.1 創建文件目錄 為了便於管理,給Master的hdfs的NameNode、DataNode及臨時文件,在用戶目錄下創建目錄: /data/hdfs/name /data/hdfs/data /data/hdfs/tmp 然後將這些目錄通過scp命令拷貝到Slave1和Slave2的相同目錄下。

3.2 下載

首先到Apache官網(http://www.apache.org/dyn/closer.cgi/hadoop/common/)下載Hadoop,從中選擇推薦的下載鏡像(http://mirrors.hust.edu.cn/apache/hadoop/common/),我選擇hadoop-2.6.0的版本,並使用以下命令下載到Master機器的 /data目錄: wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.7.1/hadoop-2.7.1.tar.gz
然後使用以下命令將hadoop-2.7.1.tar.gz 解壓縮到/data目錄 tar -zxvf hadoop-2.7.1.tar.gz 技術分享 3.3 配置環境變量 回到/data目錄,配置hadoop環境變量,命令如下: vim /etc/profile 在/etc/profile添加如下內容 技術分享 立刻讓hadoop環境變量生效,執行如下命令: source /etc/profile 再使用hadoop命令,發現可以有提示了,則表示配置生效了。 技術分享 3.4 Hadoop的配置 進入hadoop-2.7.1的配置目錄: cd /data/hadoop-2.7.1/etc/hadoop 依次修改core-site.xml、hdfs-site.xml、mapred-site.xml及yarn-site.xml文件。 技術分享 3.4.1 修改core-site.xml vim core-site.xml 技術分享 3.4.2 修改vim hdfs-site.xml vim hdfs-site.xml 技術分享 3.4.3 修改vim mapred-site.xml vim mapred-site.xml 技術分享 3.4.4 修改vim yarn-site.xml vim yarn-site.xml 技術分享 由於我們已經配置了JAVA_HOME的環境變量,所以hadoop-env.sh與yarn-env.sh這兩個文件不用修改,因為裏面的配置是: export JAVA_HOME=${JAVA_HOME} 最後,將整個hadoop-2.7.1文件夾及其子文件夾使用scp復制到slave1和slave2的相同目錄中: scp -r /data/hadoop-2.7.1 [email protected]:/data scp -r /data/hadoop-2.7.1 [email protected]:/data

五、運行Hadoop

5.1 格式化NameNode

執行命令: hadoop namenode -format 執行過程如下圖: 技術分享

最後的執行結果如下圖:

技術分享

5.2 啟動NameNode

執行命令如下: /data/hadoop-2.7.1/sbin/hadoop-daemon.sh start namenode

技術分享

技術分享

在Master上執行jps命令,得到如下結果:

技術分享

5.3 啟動DataNode 執行命令如下: /data/hadoop-2.7.1/sbin/hadoop-daemons.sh start datanode 執行結果如下: 技術分享

master

技術分享

slave1

技術分享

slave2

技術分享

說明Slave1和Slave2上的DataNode運行正常。 以上啟動NameNode和DataNode的方式,可以用start-dfs.sh腳本替代: 5.4 運行YARN 運行Yarn也有與運行HDFS類似的方式。啟動ResourceManager使用以下命令: 以上方式我們就不贅述了,來看看使用start-yarn.sh的簡潔的啟動方式: 在Master上執行jps:

說明ResourceManager運行正常。

在兩臺Slave上執行jps,也會看到NodeManager運行正常,如下圖: 技術分享

六、測試hadoop

6.1 測試HDFS

最後測試下親手搭建的Hadoop集群是否執行正常,測試的命令如下圖所示:

技術分享

6.2 測試YARN

可以訪問YARN的管理界面,驗證YARN,如下圖所示: 技術分享

6.3 測試mapreduce

不想編寫mapreduce代碼。幸好Hadoop安裝包裏提供了現成的例子,在Hadoop的share/hadoop/mapreduce目錄下。運行例子: 技術分享

技術分享

七、配置運行Hadoop中遇見的問題

7.1 JAVA_HOME未設置? 啟動的時候報: 技術分享

則需要/data/hadoop-2.7.1/etc/hadoop/hadoop-env.sh,添加JAVA_HOME路徑

技術分享

7.2 ncompatible clusterIDs

由於配置Hadoop集群不是一蹴而就的,所以往往伴隨著配置——>運行——>。。。——>配置——>運行的過程,所以DataNode啟動不了時,往往會在查看日誌後,發現以下問題:

技術分享


此問題是由於每次啟動Hadoop集群時,會有不同的集群ID,所以需要清理啟動失敗節點上data目錄(比如我創建的/home/jiaan.gja/hdfs/data)中的數據。

7.3 NativeCodeLoader的警告

在測試Hadoop時,細心的人可能看到截圖中的警告信息:

技術分享

Linux下Hadoop2.7.1集群環境的搭建(超詳細版)