Hadoop叢集安裝

crazyboytan發表於2012-10-16

Hadoop的叢集來說,可以分成兩大類角色:Master 和 Slave,前者主要配置NameNode和JobTracker 的角色,負責總管分散式資料和分解任務的執行,後者配置DataNode和TaskTracker 的角色,負責分散式資料儲存以及任務的執行。

系統版本

rhel-server-6.3-x86_64

hadoop 版本

hadoop-0.20.2.tar.gz // 我用其他版本時總出問題,這個版本卻很不錯,不知大傢什麼個情況

JDK

jdk-7u7-linux-x64.tar.gz

IP地址分配

IP

主機名

192.168.100.16

master

192.168.100.17

slave1

配置host

Namenodemaster的機器,需要配置叢集中所有機器的ip

修改/etc/hosts

127.0.0.1 localhost

::1 localhost6.localdomain6 localhost6

192.168.100.11 master

192.168.100.12 slave1

其他的datanode的/etc/hosts 只需要配置namenode的機器ip和本機ip,那當然也可以配置所有的IP

192.168.100.11 master

192.168.100.12 slave1

修改hostname(可選)

vi /proc/sys/kernel/hostname

注意:

/etc/hosts檔案 /etc/sysconfig/network檔案及執行 $hostname 命令得到的主機名要一致

關閉防火牆

[root@master bin]# service iptables stop;

iptables: Flushing firewall rules: [ OK ]

iptables: Setting chains to policy ACCEPT: filter [ OK ]

iptables: Unloading modules: [ OK ]

[root@slave1 ~]# chkconfig iptables off;

建立haoop使用者和組

groupadd -g 600 hadoop;

useradd -u 800 -g hadoop -d /home/hadoop hadoop

每個節點都有相同的使用者hadoop

[root@prac1 ~]# chmod -R 775 /etc/sudoers

用root許可權的使用者登入系統,執行:

[root@master ~]# vi /etc/sudoers

在開啟的檔案中加入:

hadoop ALL=(ALL) ALL

注:方便hadoop使用者訪問和修改系統檔案與配置

建立ssh無密碼登入

注意在hadoop家目錄下執行命令

在兩個節點都執行如下操作

[hadoop@master ~]$ ssh-keygen -t rsa // 遇到輸入全回車

[hadoop@master ~]$ ssh-keygen -t dsa

master節點執行以下命令

[hadoop@master ~]$ cat .ssh/id_rsa.pub >> .ssh/authorized_keys

[hadoop@master ~]$ cat .ssh/id_dsa.pub >> .ssh/authorized_keys

[hadoop@master ~]$ chmod -R 775 .ssh/authorized_keys

注意以下兩步要在master上進行,如果在slave1上進行,則信任關係建立不成功

[hadoop@master ~]$ ssh slave1 cat .ssh/id_rsa.pub >>.ssh/authorized_keys

[hadoop@master ~]$ ssh slave1 cat .ssh/id_dsa.pub >>.ssh/authorized_keys

[hadoop@master ~]$ scp .ssh/authorized_keys slave1:~/.ssh/

測試ssh

ssh slave1 date

ssh master date

要保證ssh訪問自己和對方都不需要密碼

[hadoop@master ~]$ ssh slave1 date

Tue Oct 16 17:43:46 CST 2012

[hadoop@master ~]$ ssh master date

Tue Oct 16 17:43:53 CST 2012

[hadoop@slave1 ~]$ ssh master date

Tue Oct 16 17:44:16 CST 2012

[hadoop@slave1 ~]$ ssh slave1 date

Tue Oct 16 17:44:20 CST 2012

注:

[hadoop@master ~]$ ssh-keygen -t rsa // 執行它是生成id_rsa/id_rsa.pub的無密碼的公/私鑰對

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa):

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

[hadoop@master ~]$ ls -l ~/.ssh // 這樣我們會看到如下所示的結果集:

-rw------- 1 root root 1675 Jul 5 14:01 id_rsa

-rw-r--r-- 1 root root 394 Jul 5 14:01 id_rsa.pub

然後將id_rsa.pub的內容複製到每個機器(也包括本機)的~/.ssh/authorized_keys檔案中

[hadoop@master ~]$ cat .ssh/id_rsa.pub >> .ssh/authorized_keys

因為ssh服務對檔案的許可權有著非常嚴格的限制(authorized_keys只能擁有指定使用者的寫許可權)於是需要進行如下處理

[hadoop@master ~]$ chmod 644 ~/.ssh/authorized_keys

[hadoop@master ~]$ scp .ssh/authorized_keys slave1:~/.ssh/ // 複製到其他機器上

如果 建立ssh無密碼登入 這小節不太清楚,可參考其他文件

下載jdkhadoop

安裝jdk(所有節點)

免安裝檔案直接解壓到當前目錄即可:

[root@prac1 ]# tar zxvf jdk-7u7-linux-x64.tar.gz // oracle 官網下載

[root@prac1 jdk1.7.0_07]# pwd

/root/jdk1.7.0_07

[root@prac1 jdk1.7.0_07]# cd ..

[root@prac1 ~]# mv jdk1.7.0_07/ jdk

[root@prac1 ~]# mv jdk /usr/local // 把整個hadoop jdk 單獨放到根目錄下面還不行

然後修改/etc/profile:

export JAVA_HOME=/usr/local/jdk

export CLASSPATH=.:$JAVA_HOME/lib

export PATH=$PATH:$JAVA_HOME/bin

儲存,並執行source /etc/profile

安裝hadoop

[hadoop@master ~]$ su - root

Password:

[root@master ~]# cd /usr/local/

[root@master local]# tar zxvf hadoop-0.20.2.tar.gz

[root@master local]# mv hadoop-0.20.2 hadoop

然後修改/etc/profile

export HADOOP_HOME=/usr/local/hadoop

export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin

source /etc/profile

配置hadoop

root使用者建立hadoop所需要的目錄

mkdir -p /hadoop/hdfs/tmp

mkdir -p /hadoop/hdfs/name

mkdir -p /hadoop/hdfs/data

mkdir -p /hadoop/mapred/local

mkdir -p /hadoop/mapred/system

chown -R hadoop:hadoop /hadoop

chmod -R 775 /hadoop

1.修改/usr/local/hadoop/conf/hadoop-env.sh,新增jdk支援 // 這個很重要

export JAVA_HOME=/usr/local/jdk

2.修改conf/core-site.xml,增加下面內容

fs.default.name

hdfs://master:9000

dfs.replication

3

hadoop.tmp.dir

/hadoop/hdfs/tmp

3.修改conf/hdfs-site.xml,增加下面內容

dfs.name.dir

/hadoop/hdfs/name

dfs.data.dir

/hadoop/hdfs/data

dfs.datanode.max.xcievers

4096

dfs.replication

3

3.修改conf/mapred-site.xml,增加下面內容

mapred.job.tracker

master:9001

mapred.local.dir

/hadoop/mapred/local

true

mapred.system.dir

/hadoop/mapred/system

true

4. 修改conf/masters,這個決定那個是secondarynamenode

master

5 .修改conf/slaves,這個是所有datanode的機器

slave1

注:上面各個配置檔案的意思請參考其他文件

將配置好的hadoop複製到所有的datanode

root@master:/data/soft/hadoop/conf# scp -rp /data/soft/hadoop-0.21.0 10.10.236.191:/data/soft/hadoop-0.21.0

格式化hdfs檔案系統的namenode

[root@master conf]# hadoop namenode -format

12/10/15 17:30:51 INFO namenode.NameNode: STARTUP_MSG:

/************************************************************

STARTUP_MSG: Starting NameNode

STARTUP_MSG: host = master.oracle.com/60.195.191.227

STARTUP_MSG: args = [-format]

STARTUP_MSG: version = 0.20.2

STARTUP_MSG: build = -r 911707; compiled by 'chrisdo' on Fri Feb 19 08:07:34 UTC 2010

************************************************************/

Re-format filesystem in /hadoop/hdfs/name ? (Y or N) Y // 注意這裡是大寫的Y

12/10/15 17:30:54 INFO namenode.FSNamesystem: fsOwner=root,root,sfcb

12/10/15 17:30:54 INFO namenode.FSNamesystem: supergroup=supergroup

12/10/15 17:30:54 INFO namenode.FSNamesystem: isPermissionEnabled=true

12/10/15 17:30:54 INFO common.Storage: Image file of size 94 saved in 0 seconds.

12/10/15 17:30:54 INFO common.Storage: Storage directory /hadoop/hdfs/name has been successfully formatted.

12/10/15 17:30:54 INFO namenode.NameNode: SHUTDOWN_MSG:

/************************************************************

SHUTDOWN_MSG: Shutting down NameNode at master.oracle.com/60.195.191.227

************************************************************/

啟動hadoop叢集

root@master:/data/soft/hadoop# bin/start-all.sh

Hdfs操作

建立目錄

root@master:/data/soft/hadoop # bin/hadoop dfs -mkdir testdir

檢視現有檔案

root@master:/data/soft/hadoop # bin/hadoop dfs -ls

關閉Hdfs

root@master:/data/soft/hadoop# bin/stop-all.sh

利用jps檢視已經啟動的服務

Master:

[hadoop@master ~]$ jps

2167 NameNode

2355 JobTracker

2297 SecondaryNameNode

4027 Jps

[hadoop@master ~]$

Slave:

[hadoop@slave1 ~]$ jps

6192 Jps

2096 DataNode

2178 TaskTracker

[hadoop@slave1 ~]$

[hadoop@slave1 ~]$ hadoop dfsadmin -report

Configured Capacity: 10568916992 (9.84 GB)

Present Capacity: 3969232896 (3.7 GB)

DFS Remaining: 3818074112 (3.56 GB)

DFS Used: 151158784 (144.16 MB)

DFS Used%: 3.81%

Under replicated blocks: 29

Blocks with corrupt replicas: 0

Missing blocks: 0

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

Datanodes available: 1 (1 total, 0 dead)

Name: 192.168.100.12:50010

Decommission Status : Normal

Configured Capacity: 10568916992 (9.84 GB)

DFS Used: 151158784 (144.16 MB)

Non DFS Used: 6599684096 (6.15 GB)

DFS Remaining: 3818074112(3.56 GB)

DFS Used%: 1.43%

DFS Remaining%: 36.13%

Last contact: Tue Oct 16 17:37:26 CST 2012

[hadoop@slave1 ~]$

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28254374/viewspace-1059609/,如需轉載,請註明出處,否則將追究法律責任。

相關文章