1. 程式人生 > >Hadoop-2.5.2叢集安裝配置詳解

Hadoop-2.5.2叢集安裝配置詳解

最近學習了下hadoop的安裝。下面詳細說明下步驟

一、環境

我的是在Linux環境下進行安裝的。對於想在windows系統上學習的同學,可以採用虛擬機器方式或通過cygwin模擬linux環境方式進行學習。

現在有三臺伺服器,分配如下:

10.0.1.100 NameNode

10.0.1.201 DataNode1

10.0.1.202 DataNode2

NameNode(主伺服器)可以看作是分散式檔案系統中的管理者,主要負責管理檔案系統的名稱空間、叢集配置資訊和儲存塊的複製等。

DataNode(從伺服器)是檔案儲存的基本單元,它將Block儲存在本地檔案系統中,儲存了Block的Meta-data,同時週期性地將所有存在的Block資訊傳送給NameNode

1、安裝jdk

自己到網上找到合適的jdk版本,我下載的是jdk-6u23-linux-i586.bin(linux的32位作業系統版本)。分別上傳到3個伺服器的/usr/local/java/jdk目錄下(該目錄可根據個人習慣修改)

jdk-6u23-linux-i586.bin 是自解壓的檔案,要增加可執行許可權。如下

chmod +x jdk-6u23-linux-i586.bin
./jdk-6u23-linux-i586.bin
輸入回車後,解壓完成。

修改配置

vi /etc/profile
在profile最後增加以下幾行環境變數配置
JAVA_HOME=/usr/local/java/jdk/jdk1.6.0_23

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

PATH=$JAVA_HOME/bin:$PATH

export JAVA_HOME CLASSPATH PATH
重新ssh連線伺服器,測試JDK是否安裝成功。其命令如下:
java -version
正常顯示如下:

java version "1.6.0_23"
Java(TM) SE Runtime Environment (build 1.6.0_23-b05)
Java HotSpot(TM) Client VM (build 19.0-b09, mixed mode, sharing)

2、配置ssh

一般linux系統是自帶安裝ssh服務的,對於沒有安裝ssh服務的,請自行安裝,這裡不詳細說明如何安裝。

我們需要對ssh服務進行配置,以執行hadoop環境進行ssh無密碼登入。即NameNode節點需要能夠ssh無密碼登入訪問DataNode節點

進入NameNode伺服器,輸入如下命令

[[email protected] hadoop]# cd ~
[[email protected] ~]# cd .ssh/
[[email protected] .ssh]# ssh-keygen -t rsa
一直回車。.ssh目錄下多出兩個檔案

私鑰檔案:id_rsa
公鑰檔案:id_rsa.pub

複製id_rsa.pub檔案為authorized_keys

[[email protected] .ssh]# cp id_rsa.pub authorized_keys
將公鑰檔案authorized_keys分發到各DataNode節點:
[[email protected] .ssh]# scp authorized_keys [email protected]:/root/.ssh/
[[email protected] .ssh]# scp authorized_keys [email protected]:/root/.ssh/
注意:如果當前使用者目錄下沒有.ssh目錄,可以自己建立一個該目錄

驗證ssh無密碼登入:

[[email protected] .ssh]# ssh [email protected]
Last login: Mon Jan  5 09:46:01 2015 from 10.0.1.100

看到以上資訊,表示配置成功!如果還提示要輸入密碼,則配置失敗。

3、配置hostname及hosts

修改/etc/sysconfig/network中的hostname(需要重啟系統才會生效)

NETWORKING=yes
HOSTNAME=NameNode

修改/etc/hosts

10.0.1.100 NameNode
10.0.1.201 DataNode1
10.0.1.202 DataNode2

兩個DataNode也要修改hostname及hosts檔案

二、下載及安裝Hadoop

1、下載

去hadoop官網上(http://hadoop.apache.org/)下載合適的hadoop版本。我選擇的是比較新的2.5.2版本(最新的是2.6.0版本)。檔名為hadoop-2.5.2.tar.gz,下載檔案上傳到/root/test下(三個伺服器都要上傳),切換到該目錄下,解壓:

tar -zvxf hadoop-2.5.2.tar.gz 

2、配置

主伺服器(10.0.1.100)進入配置目錄:cd hadoop-2.5.2/etc/hadoop

core-site.xml

<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/home/hadoop/tmp</value>
        <description>Abase for other temporary directories.</description>
    </property>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://10.0.1.100:9000</value>
    </property>
    <property>
        <name>io.file.buffer.size</name>
        <value>4096</value>
    </property>
</configuration>

hdfs-site.xml

<configuration>
    <property>
    	<name>dfs.nameservices</name>
        <value>hadoop-cluster1</value>
    </property>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>10.0.1.100:50090</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/home/hadoop/dfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/home/hadoop/dfs/data</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
    <property>
        <name>dfs.webhdfs.enabled</name>
        <value>true</value>
    </property>
</configuration>
mapred-site.xml
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property>
        <name>mapreduce.jobtracker.http.address</name>
        <value>10.0.1.100:50030</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>10.0.1.100:10020</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>10.0.1.100:19888</value>
    </property>
</configuration>
yarn-site.xml
<configuration>

<!-- Site specific YARN configuration properties -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.resourcemanager.address</name>
        <value>10.0.1.100:8032</value>
    </property>
    <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>10.0.1.100:8030</value>
    </property>
    <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>10.0.1.100:8031</value>
    </property>
    <property>
        <name>yarn.resourcemanager.admin.address</name>
        <value>10.0.1.100:8033</value>
    </property>
    <property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>10.0.1.100:8088</value>
    </property>
</configuration>
slaves
10.0.1.201
10.0.1.202
hadoop-env.sh
export JAVA_HOME=/usr/local/java/jdk/jdk1.6.0_23

注:兩個從伺服器也要按上面修改各個配置檔案,可直接用scp命令將主伺服器${HADOOP_HOME}/etc/hadoop/目錄覆蓋從伺服器相應目錄

3、格式化檔案系統

bin/hdfs namenode -format
注意:這裡的格式化檔案系統並不是硬碟格式化,只是針對主伺服器hdfs-site.xml的dfs.namenode.name.dir和dfs.datanode.data.dir目錄做相應的清理工作。

4、啟動和停止服務

啟動

sbin/start-dfs.sh
sbin/start-yarn.sh
停止
sbin/stop-dfs.sh
sbin/stop-yarn.sh

5、檢視啟動的程序

jps
顯示如下

14140 ResourceManager
13795 NameNode
14399 Jps

6、單獨重啟丟失的DataNode節點

如果某個DataNode節點Dead(由於宕機或人為原因等),可以在不重啟整個Hadoop服務的情況下進行單獨重啟。方法如下: 在NameNode的hadoop-2.5.2/sbin目錄下,執行命令啟動HDFS DataNode 
./hadoop-daemons.sh start datanode
接著執行命令啟動NodeManager
./yarn-daemons.sh start nodemanager

也可以單獨啟動NameNode節點,命令如下:
./hadoop-daemon.sh start namenode
./yarn-daemon.sh start resourcemanager
上述四個命令都可以指定--config引數,後面跟hadoop的叢集配置檔案所在目錄(即$HADOOP_HOME/etc/hadoop),大家可通過引數-h檢視命令幫助資訊 注意:上面命令不會影響已經啟動的hdfs或yarn服務,只會把丟失節點的服務啟動起來。

三、通過瀏覽器訪問

http://10.0.1.100:50070/
http://10.0.1.100:8088/

---------------

特別說明下,上面配置主伺服器的slaves檔案,使用的是ip配置,此時需要在主伺服器的/etc/hosts中增加ip到主機名的對映如下:

10.0.1.201      anyname1
10.0.1.202      anyname2
否則,可能在執行start-dfs.sh命令時,從伺服器的DateNode節點列印如下錯誤日誌:

2015-01-16 17:06:54,375 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: Initialization failed for Block pool BP-1748412339-10.0.1.212-1420015637155 (Datanode Uuid null) service to /10.0.1.218:9000 Datanode denied communication with namenode because hostname cannot be resolved (ip=10.0.1.217, hostname=10.0.1.217): DatanodeRegistration(0.0.0.0, datanodeUuid=3ed21882-db82-462e-a71d-0dd52489d19e, infoPort=50075, ipcPort=50020, storageInfo=lv=-55;cid=CID-4237dee9-ea5e-4994-91c2-008d9e804960;nsid=358861143;c=0)

大意是無法將ip地址解析成主機名,也就是無法獲取到主機名,需要在/etc/hosts中進行指定。

本文章參照了http://blog.csdn.net/greensurfer/article/details/39450369