Storm整合HBase遇到的各種問題

Storm整合HBase遇到的各種問題


最近在進行Storm整合HBase的時候遇到了各種問題,最終利用了兩天一夜,排除了其它錯誤,把錯誤鎖定在了權限問題上。
以下操作都在虛擬機中進行!
報錯:hbase Master is initializing
在網上找了好多解決辦法,例如datanode與namenode的id不一樣(更改namespaceID),datanode的磁盤空間容量不足(查看Hmaster的日誌後發現org.apache.hadoop.ipc.RemoteException(java.io.IOException): File /hbase/MasterProcWALs/state-00000000000000000011.log could only be replicated to 0 nodes instead of minReplication (=1). There are 1 datanode(s) running and 1 node(s) are excluded in this operation.)等。
一頓操作後,報錯變爲:ERROR: Can't get master address from ZooKeeper; znode data == null 可以看到hbase無法在Zookeeper中獲取到Hmaster 地址,接着打開zkClient,ls發現/hbase下確實沒有master,解決辦法:刪除掉/hbase,重啓hdfs和hbase。
操作完後,又報錯:hbase Master is initializing,在各種嘗試(重裝hadoop,更改配置文件),問題解決。
報錯原因:1.hdfs磁盤容量不足,2.hdfs多次初始化,導致datanode和namenode不同步。
爲了徹底排錯,我將Centos重裝,我將軟件都安裝在/home分區下,因此爲/home分區分配較大空間,避免hdfs磁盤容量不足報錯。爲了避免防火牆影響,Systemctl stop firewalld 關閉firewalld防火牆,Systemctl disable firewalld 禁用firewalld防火牆,iptables -P INPUT ACCEPT,iptables -P OUTPUT ACCEPTiptables開啓所有端口。將centos虛擬機上所有的運行環境重新配置,再次運行hdfs+zookeeper+hbase,依次查看Hmaster,HRegionServer,Namenode,Datanode,SecondarynameNode進程的日誌文件沒有發現報錯,查看zkClient下的/hbase目錄,發現master存在。開始運行hbase shell,list後沒有報錯。
接着,開始測試Storm整合Hbase寫入數據,Storm運行在Maven上,運行之後沒有報錯,能夠正常發數據,但在hbase shell上查不到數據。查看各進程日誌,發現也沒有報錯。查看配置文件也沒有問題,經過多次嘗試後始終寫不進去。
於是單獨運行hdfs,利用Storm對hdfs寫入數據,發現寫入超時:

Caused by: org.apache.hadoop.ipc.RemoteException: Permission denied: user=keji, access=WRITE, inode="/":hadoop:supergroup:drwxr-xr-x

推測出由於hbase的rootdir在hadoop的/目錄下,沒有寫入權限,於是./hadoop fs -ls /,發現根目錄下的文件均沒有寫入權限。在./hadoop fs -chmod -R 777 /之後,hdfs數據寫入成功,啓動zookeeper和hbase進程,運行hbase寫入服務,寫入成功。
至此,問題解決。
本來是一個小問題,卻花費了大量的時間排錯,走了很多彎路,總之還是對linux的使用、hbase、hadoop、zookeeper不夠熟悉,但經過大量的試錯,逐漸對它們的工作原理有了更深入的理解。錯誤總會讓我們學到更多!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章