1、改動vi /etc/hosts 添加節點ip、(沒個節點都要加入 )
2、設置hostname
vi /etc/sysconfig/network
把hostname改成node3
驗證:從新啓動linux
或者:hostname 主機名(這樣設置是hostname暫時有效,從新啓動後失效 )
3、先設置本機的shh免password登錄
操做:(1)產生密鑰,運行命令ssh-keygen -t rsa,產生的密鑰文件位於~/.ssh目錄中
(2)運行命令cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
驗證:ssh localhost
機器之間設置ssh免password登錄
主節點是master 從節點有node1 node2 node3 node4
在node1上
(1)在node1上。把node1上的公鑰複製給master,運行命令ssh-copy-id -i master
(2)在node2上。把node2上的公鑰複製給master。運行命令ssh-copy-id -i master
……
(3)把master上的authorized_keys拷貝到node1,node2,node3,node4運行命令
scp /root/.ssh/authorized_keys node1:/root/.ssh
scp /root/.ssh/authorized_keys node2:/root/.ssh
……
停用防火牆:service iptables stop
4、複製hadoop0上的/usr/local/jdk、/usr/local/hadoop到node一、node二、……的相應文件夾下
scp -r /usr/local/jdk1.7.0_60node1:/usr/local
scp -r /usr/local/jdk1.7.0_60node2:/usr/local
……
改動namenode的配置文件conf/slaves
scp -r /usr/local/hadoop-2.2.0 node1:/usr/local
scp -r /usr/local/hadoop-2.2.0 node2:/usr/local
……
5、複製master上的/etc/hosts下的配置 到其它node1和node2 ……節點
scp master:/etc/profile node1:/etc/profile
並且還要在node一、node二、……上分別運行source /etc/profile
6、在master上運行格式化命令hadoop namenode -format
hadoop namenode -format
錯誤調試
WARNING: POSSIBLE DNS SPOOFING DETECTED
與SSHserver無關,僅僅需把.ssh文件夾下的文件刪除就能夠。下次使用ssh時文件會重建的。
出現這問題的解決辦法一般是同一主機使用了不一樣的username登錄。(假設多個域名和多個IP同一時候指向同一主機,ssh仍然視爲不一樣主機。
rm known_hosts
而後在ssh一次就行了
集羣ssh配置總結
先運行ssh-keygen -t rsa,產生密鑰。文件位於root/.ssh/目錄中,而後運行cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys 進行受權(事實上是將本機產生的密鑰放置公鑰文件裏)
而後將本機的公鑰文件複製給master,運行命令ssh-copy-id -i master,也就是master統一管理各個節點的公鑰,而後master節點運行 scp /root/.ssh/authorized_keys node1:/root/.ssh
java會把天天機器上的公鑰都會複製給node節點,這樣node節點就可以通訊了node
6、HDFS加入刪除節點並進行hdfs balance linux
方式1:靜態加入datanode。中止namenode方式
1.中止namenode
2.改動slaves文件,並更新到各個節點
3.啓動namenode
4.運行hadoop balance命令。web(此項爲balance集羣使用。假設僅僅是加入節點,則此步驟不需要)
方式2:動態加入datanode,不停namenode方式
1.改動slaves文件。加入需要添加的節點host或者ip,並將其更新到各個節點
2.在datanode中啓動運行啓動datanode命令。apache命令:sh hadoop-daemon.sh start datanode
3.可以經過web界面查看節點加入狀況。ssh或使用命令:sh hadoop dfsadmin -report
4.運行hadoop balance命令。(此項爲balance集羣使用,假設僅僅是加入節點,則此步驟不需要)
針對第4點,start-balancer.sh可以運行-threshold參數。oop
-threshold參數是指定平衡的閾值。
-threshold的默認是10。即每個datanode節點的實際hdfs存儲使用量/集羣hdfs存儲量
舉例:
datanode hdfs使用量1.2G;
集羣總hdfs存儲量10T即10000G。
則t值爲1.2/10000 = 0.00012;
當運行balance的-t參數小於0.00012時,集羣進行balance;
命令爲:start-balancer.sh -threshold 0.0001
注:
1. balance命令可以在namenode或者datanode上啓動。
可以隨時中止balance命令。
balance的默認帶寬是1M/s。
2. slave文件是用於從新啓動時使用。集羣的start和stop需要讀取slave文件。spa
啓用datanode時僅僅要在hdfs-site中配置了namenode位置。就可以將信息push給namenode。
查看namenode的http管理界面。可查看節點加入狀況。
HDFS刪除節點
方式1:經過dead方式(namenode上):
1.sh hadoop dfsadmin -refreshServiceAcl
說明:dead方式並未改動slave文件和hdfs-site文件。
因此在集羣從新啓動時。該節點不會被加入到namenode的管理中。
這次在namenode上進行。其它節點可另行實驗。。該命令會將該節點狀態置爲dead。
方式2:經過decommission方式:
a) 改動hdfs-site,加入exclude字段中的排除的節點。調試
b) 運行sh hadoop dfsadmin -refreshNodes,強制刷新。
c) 查看節點狀態。該節點的狀態爲decommission。orm
說明:decommission方式改動了hdfs-site文件。未改動slave文件。
因此集羣從新啓動時,該節點儘管會被啓動爲datanode,但是由於加入了exclude,因此namenode會將該節點置爲decommission。
此時namenode不會與該節點進行hdfs相關通訊。也即exclude起到了一個防火牆的做用。
注:
1. 假設在某個節點單獨中止datanode,那麼在namenode的統計中仍會出現該節點的datanode信息。
此時可經過dead或者decommission(退役)方式下線機器。
7、加入節點新節點後hbase 的HRegionServer起不來或啓動治好有掛掉
hbase的conf 配置文件hbase-site.xml中的
<property>
<name>hbase.zookeeper.quorum</name>
<value>node1,node2,node3,node4,node5</value>
</property>
建議位奇數個節點
regionservers
node1
node2
node3
node4
node5
建議也位奇數個
假設HRegionServer仍是啓動不起來,報錯例如如下:
Exception in thread "regionserver60020" java.lang.NullPointerException
at org.apache.hadoop.hbase.regionserver.HRegionServer.run(HRegionServer.java:882)
at java.lang.Thread.run(Thread.java:745)
那麼就需要看看各個節點的時間是否一樣
命令例如如下:
date
改動
date -s 改動的時間
也可以每個節點同步一下互聯網時間;
命令例如如下:
ntpdate time-a.nist.gov
而後在又一次start-hbase.sh( hadoop集羣開啓的狀況下)、
OK!祝你好運!