Hadoop分佈式安裝
1. 準備環境
三臺虛擬機,IP分別爲192.168.153.128
,192.168.153.129
,192.168.153.130
。
節點 | |||||
---|---|---|---|---|---|
192.168.153.128 | NameNode | DataNode | NodeManager | ||
192.168.153.129 | SecondaryNameNode | DataNode | NodeManager | ||
192.168.153.130 | DataNode | ResourceManager | NodeManager |
1.1 配置主機名
在每臺機器上設置主機名。192.168.153.128
主機名配置爲“master”,其他兩臺分別配置爲“slave01”、“slave02”。
vi /etc/sysconfig/network
輸入以下內容
HOSTNAME=master
執行重啓
reboot
1.2 配置host文件
我們希望三臺機器之間能夠互相通過主機名訪問,而不是每次都要輸入IP。
在192.168.153.128
服務器上執行如下操作
vi /etc/hosts
輸入如下內容的第3-5行
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.153.128 master
192.168.153.129 slave01
192.168.153.130 slave02
保存成功後,將配置文件複製到另外兩臺服務器
scp /etc/hosts root@slave01:/etc/
scp /etc/hosts root@slave02:/etc/
1.3 設置主機之間SSH免密
在所有的主機上都執行以下操作。
[root@master ~]# ssh-keygen -t rsa
[root@master ~]# ssh-copy-id master
[root@master ~]# ssh-copy-id slave01
[root@master ~]# ssh-copy-id slave02
2. 安裝Hadoop
在master
上安裝Hadoop,安裝方式見文章Hadoop僞分佈式安裝。
2.1. 配置Hadoop
這些配置都是基於僞分佈式安裝完成後,對集羣模式下配置文件的修改。
cd /usr/local/hadoop/etc/hadoop
- 修改
core-site.xml
,指定NameNode
vi core-site.xml
<configuration>
# 配置HDFS的地址
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:8020</value>
</property>
# 配置臨時目錄,比如HDFS的NameNode數據默認都存放這個目錄下
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/data/tmp</value>
</property>
</configuration>
- 修改
hdfs-site.xml
,設置副本數和secondarynamenode
vi hdfs-site.xml
<configuration>
# 配置的是HDFS存儲時的備份數量
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
# 配置sencodarynamenode
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>slave01:8021</value>
</configuration>
- 修改
slaves
,配置所有節點
vi slaves
master
slave01
slave02
- 修改
yarn-site.xml
,配置resourcemanager
所在節點
vi yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
# 配置了yarn的默認混洗方式,選擇爲mapreduce的默認混洗算法
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
# 指定了Resourcemanager運行在哪個節點上,注意不能寫localhost,否則瀏覽器訪問不到管理界面
<property>
<name>yarn.resourcemanager.hostname</name>
<value>slave02</value>
</property>
</configuration>
2.2. 分發到其他兩個節點
scp -r /usr/local/hadoop root@slave01:/usr/local
scp -r /usr/local/hadoop root@slave02:/usr/local
2.3. 啓動集羣
-
在master節點上格式化namenode
hdfs namenode -format
-
啓動hdfs
cd /usr/local/hadoop/sbin start-dfs.sh
-
啓動yarn,只能在resourcemanager所在服務器上啓動yarn
[root@slave02 sbin]# start-yarn.sh
3. 異常情況
3.1. datanode無法啓動
-
停止服務
cd /usr/local/hadoop/sbin stop-all.sh
-
到每個節點上刪除數據目錄和日誌目錄
cd /usr/local/hadoop rm -rf data rm -rf logs
-
重新啓動hdfs和yarn。