1. 程式人生 > >在Window下遠端連線Ubuntu中的Hbase

在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,導致路徑出問題。
解決方法:

  1. 隨便建立一個檔案目錄,這裡我是 F:\hadoop-winutil\bin
  2. 將下載的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許可權的問題!