1. 程式人生 > >Hadoop2.7.1 叢集部署及自動化指令碼

Hadoop2.7.1 叢集部署及自動化指令碼

                     

實驗環境

作業系統:ubuntu 14.04 64位

                   
主機名IP
namenode10.107.12.10
datanode110.107.12.20
datanode210.107.12.50
datanode310.107.12.60

jdk 安裝

實驗安裝的是jdk1.7.0_71版本,具體安裝步驟及環境變數設定參考這裡

SSH 無密登入

下面是我寫的一個自動化SSH 無密登入指令碼,執行指令碼前需要安裝expect包,ubuntu 系統下直接執行:sudo apt-get install expect就可以了。該指令碼執行在namenode上,執行時只需要將IP_1改成對應的datanode地址,PWD_1

是對應datanode密碼。

# NO_PWD_SSH#!/bin/sh IP_1=10.107.12.20,10.107.12.50,10.107.12.60PWD_1=111111key_generate() {    expect -c "set timeout -1;        spawn ssh-keygen -t dsa;        expect {            {Enter file in which to save the key*} {send -- \r;exp_continue}            {Enter passphrase*} {send -- \r;exp_continue}            {Enter same passphrase again:} {send -- \r;exp_continue}            {Overwrite (y/n)*} {send -- n\r;exp_continue}            eof             {exit 0;}    };"
}auto_ssh_copy_id () {    expect -c "set timeout -1;        spawn ssh-copy-id -i $HOME/.ssh/id_dsa.pub [email protected]$1;            expect {                {Are you sure you want to continue connecting *} {send -- yes\r;exp_continue;}                {*password:} {send -- $2\r;exp_continue;}                eof {exit 0;}            };"
}rm -rf ~/.sshkey_generateips_1=$(echo $IP_1 | tr ',' ' ')for ip in $ips_1do    auto_ssh_copy_id $ip  $PWD_1doneeval &(ssh-agent)ssh-add
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39

安裝Hadoop2.7.1

1. 下載Hadoop2.7.1

下載地址點這裡

2. 解壓安裝

tar zxvf hadoop-2.7.1.tar.gz解壓,解壓後放在了/root/spark_sdk/目錄下,並在hadoop-2.7.1目錄下建立tmp、hdfs/namenode、hdfs/datanode目錄,命令如下:

mkdir ./hadoop-2.7.1/tmpmkdir ./hadoop-2.7.1/hdfsmkdir ./hadoop-2.7.1/hdfs/datanodemkdir ./hadoop-2.7.1/hdfs/namenode
  • 1
  • 2
  • 3
  • 4

3. 設定環境變數

~/.bashrc檔案中加入如下兩條命令:

export HADOOP_HOME=/root/spark_sdk/hadoop-2.7.1 PATH=$PATH:$HADOOP_HOME/bin
  • 1
  • 2

使環境變數生效:source ~/.bashrc

4. 設定主機名 && hosts檔案

主機名/etc/hostname中主機名依次修改為namenode,datanode1,datanode2,datanode3。

hosts檔案/etc/hosts檔案中加入如下命令:

10.107.12.10 namenode10.107.12.20 datanode110.107.12.50 datanode210.107.12.60 datanode3
  • 1
  • 2
  • 3
  • 4

注意主機名必須和hosts檔案中名稱保持一致!!

5. 修改Hadoop 配置檔案

hadoop-env.sh 檔案

export JAVA_HOME=/root/spark_sdk/jdk1.7.0_71
  • 1

yarn-env.sh 檔案

export JAVA_HOME=/root/spark_sdk/jdk1.7.0_71
  • 1

core-site.xml 檔案

<configuration>    <property>        <name>fs.defaultFS</name>        <value>hdfs://namenode:9000</value>    </property>    <property>        <name>io.file.buffer.size</name>        <value>131702</value>    </property>    <property>        <name>hadoop.tmp.dir</name>        <value>file:/root/spark_sdk/hadoop-2.7.1/tmp</value>        <description>Abase for other temporary directories.</description>    </property>    <property>        <name>hadoop.proxyuser.root.hosts</name>        <value>*</value>    </property>    <property>        <name>hadoop.proxyuser.root.groups</name>        <value>*</value>    </property></configuration>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

這裡有一個地方需要注意,最後設定hadoop.proxyuser時,後面跟的是使用者名稱,我是用root使用者登入的,所以填的是root。

hdfs-site.xml 檔案

<configuration>    <property>        <name>dfs.namenode.name.dir</name>        <value>file:/root/spark_sdk/hadoop-2.7.1/hdfs/namenode</value>    </property>    <property>        <name>dfs.datanode.data.dir</name>        <value>file:/root/spark_sdk/hadoop-2.7.1/hdfs/datanode</value>    </property>    <property>        <name>dfs.replication</name>        <value>3</value>    </property>    <property>        <name>dfs.namenode.secondary.http-address</name>        <value>namenode:9001</value>    </property>    <property>        <name>dfs.webhdfs.enabled</name>        <value>true</value>    </property></configuration>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

mapred-site.xml 檔案

<configuration>    <property>        <name>mapreduce.framework.name</name>        <value>yarn</value>    </property></configuration>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

yarn-site.xml 檔案

<configuration><!-- Site specific YARN configuration properties -->    <property>        <name>yarn.nodemanager.aux-services</name>        <value>mapreduce_shuffle</value>    </property>    <property>        <name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>        <value>org.apache.hadoop.mapred.ShuffleHandler</value>    </property>    <property>        <name>yarn.resourcemanager.address</name>        <value>namenode:8032</value>    </property>    <property>        <name>yarn.resourcemanager.scheduler.address</name>        <value>namenode:8030</value>    </property>    <property>        <name>yarn.resourcemanager.resource-tracker.address</name>        <value>namenode:8031</value>    </property>    <property>        <name>yarn.resourcemanager.admin.address</name>        <value>namenode:8033</value>    </property>    <property>        <name>yarn.resourcemanager.webapp.address</name>        <value>namenode:8088</value>                                                                                                        </property></configuration>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

slaves 檔案

    datanode1    datanode2    datanode3
  • 1
  • 2
  • 3

6. 啟動Hadoop

先格式化namenode,然後依次啟動hdfs和yarn。

bin/hadoop namenode -formatsbin/start-dfs.shsbin/start-yarn.sh
  • 1
  • 2
  • 3
  • 4
  • 5

7. 叢集啟動驗證

namenode上執行jps命令,可以查詢到有如下程序:

15746 SecondaryNameNode15508 NameNode15969 ResourceManager16377 Jps
  • 1
  • 2
  • 3
  • 4

datanode上執行jps命令,可以查詢到有如下程序:

14731 Jps14421 NodeManager14182 DataNode
  • 1
  • 2
  • 3

8. 查詢叢集資訊 && 關閉叢集

可以在瀏覽器中輸入:10.107.12.10:50070查詢HDFS相關資訊,這裡10.107.12.10是namenode的IP地址。瀏覽器輸入:10.107.12.10:8088檢視yarn的啟動情況。

關閉叢集可以執行sbin/stop-all.sh

9. 執行應用程式

啟動集群后,切換到hadoop 主目錄,執行 ./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar pi 20 10,執行成功後會輸出Pi的值,結果如下:   

Hadoop2.7.1叢集部署

【完】