本文是我個人在連接服務器的HBASE過程的一些問題總結。
一、用戶和主機名的設置
1.1 報錯:Insufficient permissions(user=Administartor)
原因:本地hostname為Administrator,而HBASE表的用戶沒有這個用戶,所以報錯。
措施:設置電腦的環境變量,步驟如下:
1)右擊我的電腦->屬性->高級系統;
2)新增變量名HADOOP_USER_NAME,值為mr(HBASE表的用戶名)
如圖:
1.2 hosts文件設置
提示:WARN RecoverableZooKeeper:146 - Unable to create ZooKeeper Connection
原因:是無法讀取配置文件中主機名,可以通過ping IP地址和主機名驗證
在本機的hosts文件設置IP與主機名的映射,如10.23.231.5 mr。
【問題延伸】
一般經過上述配置后,就可以在cmd的小黑框里ping通IP和主機名(最好兩者都試一下),可能出現,能ping通IP地址但是ping不同主機名的情況,代碼里可能報錯信息為,unkown hostname。
這種情況可能是所配置的主機名沒有生效,解決辦法,如圖所示:
注意事項:
1)選擇正在使用的網絡,單擊右鍵選擇屬性;
2)最后導入的是修改后的hosts文件;
二、本地連接服務器HBASE導致的相關錯誤
2.1 ERROR Shell:400 - Failed to locate the winutils binary in the hadoop binary path java.io.IOException:Could not locate executable null\bin\winutils.exe in Hadoop binaries.
2.2 java.io.IOException:HADOOP_HOME or hadoop.home.dir are not set
解決方案:設置路徑,具體如圖
注意事項:
1)路徑是自定義的;
2)在該路徑下新建bin文件夾(如:D:\hadoop\bin),然后上網找到winutils.exe放在bin目錄中;
3)重啟電腦,再次編譯即可
三、運行報類找到不到(Hadoop 2.7.3,HBase 1.2.0)
3.1 運行的時候說找不到org.apache.hadoop.tracing.SpanReceiverHost的類
原因:依賴的jar沒有,
解決方案:添加hadoop-common-*.jar(對應的版本),最好的是在maven中添加對此jar的依賴。
3.2 報:Caused by:java.lang.ClassNotFoundException:org.apache.hadoop.fs.FsTracer
原因:缺jar包
解決方案:增加對hadoop-hdfs包的依賴。
待續............