在Window下遠端連線Ubuntu中的Hbase
遇到問題歸總
**
**
一、Java I/O報錯,window上沒有處理hadoop的工具包。
**
**
java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries. spark Eclipse on windows 7
由錯誤可得主要是程式在執行過程中去檢視環境變數時,由於HADOOP_HOME在window上沒有配置,所以取值為null,導致路徑出問題。
解決方法:
- 隨便建立一個檔案目錄,這裡我是
F:\hadoop-winutil\bin
將下載的winutil.exe放入目錄,建立系統對這個目錄的索引,這裡有兩種方式
方法一:在系統中設定環境變數HADOOP_HOME=F:\hadoop-winutil\bin;
具體過程不在贅述,不清楚請百度。重啟電腦後,問題解決。方法二:在程式開頭加入
System.setProperty("hadoop.home.dir", "F:\\hadoop-winutil");
在解決這個問題時,百度搜到的都是垃圾,最終說的最明白的還是github上找到的連結說明,貼在這裡。
**
2、連線超時
**
解決了上述問題之後,Java程式碼還是無法訪問在虛擬機器中的HBase,顯示的原因是連線超時,所以我想通過HBase檢視是否有人嘗試連線。
遊覽器輸入
ip:16010 訪問Hbase檢視Hbase基本資訊
ip:50070 訪問Hadoop檢視Hadoop資訊
雖然這裡可以看到HBase連線數,但是好像並沒有什麼用處。
可以嘗試在Ubuntu下/etc/hosts
將
127.0.0.1 localhost
127.0.0.1 #主機名#
改成
192.168.42.130 localhost #主機名#
這裡的IP是自己Ubuntu主機的IP。
這是因為當遠端機器訪問Hbase服務時,詢問HMaster在哪個地方時,叢集回覆的是localhost(127.0.0.1),然後遠端機器在localhost(127.0.0.1)去找發現找不到,所以連線不上。改成目標地址之後,就好了。
同時也需要確保window下的hosts檔案中對用主機的ip地址正確
192.168.42.130 ubuntu
PS:我錯誤的原因是因為寫入hosts檔案的這行程式碼,沒有儲存!!!!因為有時候window許可權的問題!