hadoop集羣加入新節點hhbase調試

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!祝你好運!

相關文章
相關標籤/搜索