Hadoop完全分布式模式的安裝和配置

jopen 11年前發布 | 33K 次閱讀 Hadoop 分布式/云計算/大數據

一、建立hadoop運行賬號(all/root)
二、配置hosts文件(namenode/root)
三、下載并解壓jdk(namenode/root)
下載并解壓hadoop安裝包(namenode/hadoop)
五、為hadoop賬戶配置ssh免密碼連入(all/hadoop)
六、配置hadoop-env.sh(namenode/hadoop)
七、conf文件夾下修改site文件(namenode/hadoop)
八、conf文件夾下配置masters和slaves文件(namenode/hadoop)
九、向各節點復制jdk及hadoop(namenode/hadoop)
十、格式化hdfs(namenode/hadoop)
十一、啟動hadoop((namenode/hadoop))
十二、用jps檢驗各后臺進程是否成功啟動(all/hadoop)

</span>

VMware虛擬機準備3臺機器,網絡連接方式使用host-only

192.168.80.100 hadoop100 (用做namenode)

192.168.80.101 hadoop101

192.168.80.102 hadoop102


0. 設置靜態IP&修改主機名&關閉防火墻(all-root)

0.1 可以先維護一下ip. 分別登陸到3臺機器

修改ip信息, 因為我的虛擬機安裝時選擇的是host-only, 我的網管就設置成了我的windows下的虛擬網卡的地址。

0.2修改主機名

血與淚的教訓,千萬不要設置成 hadoop_100這樣的主機名及host

查看主機名hostname

修改主機名hostnamehadoop100

hostnamehadoop101

hostnamehadoop102

不過hostname命令,服務一重啟就又會被還原為localhost

修改配置文件 vi /etc/sysconfig/network 

hostname=hadoop100

...

重啟一下網絡service network restart

驗證reboot -h now 立刻重啟  然后hostname

0.3關閉防火墻

關閉已經啟動的防火墻: service iptables stop (只能關閉當前)

驗證:service iptables status

Firewall is not running

關閉防火墻開機自動啟動功能:

1. 先查看 查看: chkconfig --list |grep iptables
iptables        0:off   1:off   2:on    3:on    4:on    5:on    6:off

2. 關閉chkconfig  iptables off

驗證:chkconfig --list |grep iptables

一、建立hadoop運行賬號(all-root)

最好不要使用root操作hadoop,root是超級管理員權限,不推薦各個機器之間使用root訪問,

</div>

useradd hadoop增加用戶

passwd hadoop設置密碼

二、配置hosts文件(namenode-root)

操作192.168.80.100機器

vi /etc/hosts添加下面內容

192.168.80.100 hadoop100
192.168.80.101 hadoop101
192.168.80.102 hadoop102

驗證:ping  hadoop100

ping  hadoop101

ping  hadoop102




三、為hadoop賬戶配置ssh免密碼連入(all-hadoop)

分別登陸100,101,102三臺服務器</div>

使用hadoop 用戶


① ssh-keygen -t rsa會在~/.ssh/文件夾下生成id_rsa  id_rsa.pub兩個文件

② 根據ip分別執行

cp ~/.ssh/id_rsa.pub~/.ssh/id_rsa.pub.100

cp~/.ssh/id_rsa.pub~/.ssh/id_rsa.pub.101

cp~/.ssh/id_rsa.pub~/.ssh/id_rsa.pub.102

scp -r ~/.ssh/id_rsa.pub.101   hadoop@hadoop100:/home/hadoop/.ssh

scp -r ~/.ssh/id_rsa.pub.102   hadoop@hadoop100:/home/hadoop/.ssh


④ 把所有機器的公鑰,放在hadoop100的一個文件中(在hadoop100的hadoop用戶下操作)

 cat ~/.ssh/id_rsa.pub.100 >> ~/.ssh/authorized_keys

 cat ~/.ssh/id_rsa.pub.101 >> ~/.ssh/authorized_keys

 cat ~/.ssh/id_rsa.pub.102 >> ~/.ssh/authorized_keys


驗證 ssh hadoop101  發現無效,提示還是需要密碼。


⑤ 修改authorized_keys的權限, 組用戶不能有 寫(W)權限, 不然ssh 由于安全問題不生效

authorized_keys 權限改為 644 就OK 


然后分發給 101和102

scp -r ~/.ssh/authorized_keys   hadoop@hadoop101:/home/hadoop/.ssh

scp -r ~/.ssh/authorized_keys   hadoop@hadoop102:/home/hadoop/.ssh

</div>

驗證: ssh hadoop101 ...

然后神奇的事情發生了。 3臺機器彼此之間可以互聯,O(∩_∩)O哈哈~


四、下載并解壓jdk(namenode-root)

把jdk解壓到/usr/local/ 文件夾

1. 配置環境變量

[root@localhost local]#  cd /usr/local

[root@localhost local]#  ./jdk-6u24-linux-i586.bin解壓jdk后,生成jdk1.6.0_24文件夾

[root@localhost local]# vi /etc/profile在空白處加上下面兩行

export JAVA_HOME=/usr/local/jdk1.6.0_24
export PATH=.:$JAVA_HOME/bin:$PATH

然后保存退出。

[root@localhost local]# source /etc/profile使新修改的環境變量生效。

驗證: java -version


</div>


五、下載并解壓hadoop安裝包(namenode-hadoop)

tar -zxvf /home/hadoop/hadoop-1.1.2.tar.gz 

5.1 解壓后生成文件夾 hadoop-1.1.2 

5.2 如果hadoophome不放在 hadoop用戶目錄下, 也可以通過賦權限,來讓hadoop用戶可以操作hadoop-1.1.2文件夾 

chown -R hadoop/usr/local/hadoop-1.1.2/
chgrp -R hadoop /usr/local/hadoop-1.1.2/

</div>

5.3 設置Hadoop環境變量


vi /etc/profile


修改為
export JAVA_HOME=/usr/local/jdk1.6.0_24
export HADOOP_HOME=/home/hadoop/hadoop-1.1.2

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

保存退出

source /etc/profile


驗證: hadoop



六、配置hadoop-env.sh(namenode-hadoop)

修改 export JAVA_HOME=/usr/local/jdk1.6.0_24


七、conf文件夾下修改site文件(namenode-hadoop)

1、core-site.xml
<configuration>
    <property>
<name>fs.default.name</name>
<value>hdfs://hadoop100:9000</value>
<description>change your own hostname</description>
    </property>
    <property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoop-1.1.2/tmp</value>
    </property> 
</configuration>
2、hdfs-site.xml
<configuration>
   <property>
<name>dfs.replication</name>
<value>2</value>
   </property>
</configuration>
3、mapred-site.xml
<configuration>
    <property>
<name>mapred.job.tracker</name>
<value>hadoop100:9001</value>
<description>change your own hostname</description>
    </property>
</configuration>



八、conf文件夾下配置masters和slaves文件(namenode-hadoop)
</h2>

master :   
hadoop100
slave:
hadoop101
hadoop102


九、向各節點復制jdk及hadoop(namenode-hadoop)

分發hosts到其他機器(root用戶)

scp -r /etc/hosts root@hadoop101:/etc/
scp -r /etc/hosts root@hadoop102:/etc/


分發java(root用戶)
scp -r /usr/local/jdk1.6.0_24 root@hadoop101:/usr/local/
scp -r /usr/local/jdk1.6.0_24 root@hadoop102:/usr/local/


分發環境變量/etc/profile(root用戶)
scp -r /etc/profile root@hadoop101:/etc/
scp -r /etc/profile root@hadoop102:/etc/

 

</div>

分別執行source /etc/profile 
分別驗證: java -version
 ping hadoop101
ping hadoop100
ping hadoop102
分發hadoop(切換為hadoop用戶,可以免密碼)
su hadoop
scp -r/home/hadoop/hadoop-1.1.2hadoop@hadoop102:/home/hadoop/
scp -r/home/hadoop/hadoop-1.1.2 root@hadoop102:/home/hadoop/


分別驗證:hadoop
</div>
</div>
十、格式化hdfs(namenode/hadoop)
</h2>

在hadoop100,hadoop101, hadoop102的hadoop用戶下
執行命令 hadoop namenode -format 
都有提示 Storage directory /home/hadoop/hadoop-1.1.2/tmp/dfs/name has been successfully formatted.
才證明成功


十一、啟動hadoop(namenode/hadoop)
在hadoop100 上執行 start-all.sh

十二、用jps檢驗各后臺進程是否成功啟動(all/hadoop)

來自:http://blog.csdn.net/itleochen/article/details/16921519

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!