hadoop集羣動態添加和刪除節點說明

上篇博客我已經安裝了hadoop集羣(hadoop集羣的安裝步驟和配置),現在寫這個博客我將在之前的基礎上進行節點的添加的刪除。

首先將啓動四臺機器(一主三從)組成的hadoop集羣,還是要提醒一句,在啓動集羣的時候一定要切換到hadoop用戶下,並使用jps命令檢查hadoop集羣中的每臺機器是否已經啓動成功。

master機器:

[root@master ~]# su - hadoop
 [hadoop@master ~]$ start-all.sh
Warning: $HADOOP_HOME is deprecated.
 
starting namenode, logging to/home/hadoop/hadoop/libexec/../logs/hadoop-hadoop-namenode-master.out
slave1: starting datanode, logging to/home/hadoop/hadoop/libexec/../logs/hadoop-hadoop-datanode-slave1.out
slave3: starting datanode, logging to/home/hadoop/hadoop/libexec/../logs/hadoop-hadoop-datanode-slave3.out
slave2: starting datanode, logging to/home/hadoop/hadoop/libexec/../logs/hadoop-hadoop-datanode-slave2.out
master: starting secondarynamenode, loggingto/home/hadoop/hadoop/libexec/../logs/hadoop-hadoop-secondarynamenode-master.out
starting jobtracker, logging to/home/hadoop/hadoop/libexec/../logs/hadoop-hadoop-jobtracker-master.out
slave2: starting tasktracker, logging to/home/hadoop/hadoop/libexec/../logs/hadoop-hadoop-tasktracker-slave2.out
slave1: starting tasktracker, logging to/home/hadoop/hadoop/libexec/../logs/hadoop-hadoop-tasktracker-slave1.out
slave3: starting tasktracker, logging to /home/hadoop/hadoop/libexec/../logs/hadoop-hadoop-tasktracker-slave3.out
 [hadoop@master ~]$ jps
1900 Jps
1662 SecondaryNameNode
1741 JobTracker
1512 NameNode
[hadoop@master ~]$


slave1機器:

[root@slave1 ~]# su - hadoop
[hadoop@slave1 ~]$ jps
1476 DataNode
1562 TaskTracker
1620 Jps


slave2機器:

[root@slave2 ~]# su - hadoop
[hadoop@slave2 ~]$ jps
1474 DataNode
1630 Jps
1536 TaskTracker

slave3機器:

[root@slave3 ~]# su - hadoop
[hadoop@slave3 ~]$ jps
1474 DataNode
1651 Jps
1536 TaskTracker

四臺機器的hadoop集羣啓動成功,在通過瀏覽器看一下集羣的情況,如下面的圖,mapreduce和namenode都是對應三個從服務器。

namenode:


mapreduce:


現在我就執行添加服務器的操作,其實這個很簡單,首先我們要準備一臺新的服務器,並且在新的服務器中安裝好jdk環境以及hadoop,具體怎麼安裝就不說了,看上一篇博客。

修改所有機器的hosts文件和/home/hadoop/hadoop/conf下slaves文件,切換到hosts文件在文件的後面添加新節點的ip和機器名:192.168.56.204 slaves,再切換到hadoop用戶,在slaves文件後面添加slave4,到此一臺機器就配置完成,其他機器也是一樣。新添加的節點中hosts文件和/home/hadoop/hadoop/conf下slaves文件內容和之前已經存在的節點配置一樣,這裏就不贅述了。

這裏需要注意的是,需要在master機器中將.ssh目錄下的公鑰認證列表authorized_keys發送給slave4,這樣啓動hadoop集羣的時候就不要輸入slave4機器的密碼了,方便啓動操作,其實不發也可以,就是啓動集羣的時候數據密碼麻煩一點。

配置都完成了,現在就在slave4機器中操作了。

切換到hadoop用戶,進入hadoop的bin目錄下執行下面的兩個命令:

[hadoop@slave4 bin]$ hadoop-daemon.sh startdatanode
Warning: $HADOOP_HOME is deprecated.
 
starting datanode, logging to/home/hadoop/hadoop/libexec/../logs/hadoop-hadoop-datanode-slave4.out
[hadoop@slave4 bin]$
[hadoop@slave4 bin]$
[hadoop@slave4 bin]$ hadoop-daemon.sh starttasktracker
Warning: $HADOOP_HOME is deprecated.
 
starting tasktracker, logging to/home/hadoop/hadoop/libexec/../logs/hadoop-hadoop-tasktracker-slave4.out


使用jps檢測是否啓動成功:

[hadoop@slave4 bin]$ jps
24581 Jps
24505 TaskTracker
24432 DataNode
[hadoop@slave4 bin]$


然後我們通過瀏覽器訪問namenode和mapreduce,看集羣中是否添加了一個節點。

namenode:


mapreduce:

 

添加成功後我們就要考慮刪除如何執行。其實並難。

首先關閉需要刪除的節點:

[hadoop@slave4 bin]$ hadoop-daemon.sh stopdatanode
Warning: $HADOOP_HOME is deprecated.
stopping datanode
[hadoop@slave4 bin]$ hadoop-daemon.sh stoptasktracker
Warning: $HADOOP_HOME is deprecated.
stopping tasktracker


使用jps命令檢查是否關閉成功。

[hadoop@slave4 bin]$ jps
24649 Jps
[hadoop@slave4 bin]$


其實此時通過瀏覽器查看已經少了一個節點,但是這種刪除只是臨時的,當集羣關閉,再重新啓動集羣,這個臨時刪除的節點就會再次加到集羣中。

接下來我就說一下如何在配置文件中配置,保證重啓集羣,不會再將刪除的集羣添加進去。

進入master機器中hadoop用戶下hadoop解壓目錄下的conf目錄:

將:將下面的這幾行添加到hdfs-site.xml配置文件中即可。

<property>
         <name>dfs.hosts.exclude</name>
         <value>/home/hadoop/hadoop/conf/excludes</value>
</property>


然後在conf目錄下創建一個excludes文件,將需要刪除的節點機器名添加到文件中即可。

添加結束後刷新一下節點信息:

[hadoop@master conf]$ hadoop dfsadmin –refreshNodes


刷新瀏覽器,查看namenode和mapreduce對應的節點數:

namenode:


mapreduce:


這樣就完成了hadoop集羣的添加的刪除了。
發佈了44 篇原創文章 · 獲贊 68 · 訪問量 54萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章