(最詳細)JAVA如何連接虛擬機的HBASE和hadoop(JAVA如何遠程訪問虛擬機HBASE)


第一步: 首先把虛擬機和你的主機(本地電腦)弄通這樣本地機器才能訪問虛擬機里面的內容

我用的虛擬機為 VMware Workstation linux 為 centeros

補充一點虛擬機設置


 虛擬機菜單上點擊編輯->虛擬網絡編輯器->VMnet8 如圖:

按照我的圖來!

那個子網IP 可以直接按我這個來   跟你主機沒什么沖突的! 但是你設置你linux和你主機的虛擬網卡的ip都要在192.168.1.(1-254 )這個區間里    你也可以改成別的都沒關系

2  點擊那個NAT 設置 我把網關IP配置成了  192.168.1.2                  這個改成別的也沒關系關鍵后面配置要對應也和   你前面的子網ip要對應

然后點擊確定就行

3 配置windows 的虛擬網卡ip   

如圖:

 

點開控制面板那個網絡鏈接更改適配器設置         可以看見虛擬機為你創建了兩個虛擬網卡 那個VMnet1是無線鏈接(wifi)的時候用到,第二個VMnet8 是鏈接網線的時候用到

我們先設置VMnet8的ip和網關    IP 我設置成 192.168.1.1  子網掩碼 255.255.255.0    默認網關是你原來虛擬機那里配置的我的是   192.168.1.2  (說一下這個主機Ip可以隨便設置的除了0和2 剩下1-254都可以,0和255 我給忘了一般不用這兩個,2 設置成網關了就別用了)

[呵呵我網絡工程學的不好]  

再設置vm1的IP 和網關 和vm8的一模一樣 除了我把Ip設置成了 192.168.1.100

【這是自己玩出來的錯了留言一下      學生一般會搬着筆記本鏈接wifi 宿舍用網線 這兩個都設置了吧!!!要不不通】

---------------------------------------------------------------------------------------華麗的分割線-------------------------------------------------------------------------------------------------------------------

下面是配置linux的ip 地址 centerOS為例子

命令下敲

cd /etc/sysconfig/network-scripts/

然后 sudo vim ifcfg-ens32(不同版本這個文件名字可能不一樣)

進去之后你會看見 

TYPE=Ethernet

PROXY_METHOD=none

BROWSER_ONLY=no

BOOTPROTO=static

IPADDR=192.168.1.101

NETMASK=255.255.255.0

GATEWAY=192.168.1.2

DEFROUTE=yes

IPV4_FAILURE_FATAL=no

IPV6INIT=yes

IPV6_AUTOCONF=yes

IPV6_DEFROUTE=yes

IPV6_FAILURE_FATAL=no

IPV6_ADDR_GEN_MODE=stable-privacy

NAME=ens32

UUID=d16fe359-9256-4414-a557-19d751b4fc72

DEVICE=ens32

ONBOOT=yes

  把這段加粗的不一樣的改一下 沒有的加上去 Ip 192.168.1.101(最后一位哪個101 除了 1 和2 和255 還有100 不能用(因為都用了)剩下你隨便 用在一個子網就行) 那個網關 是你前面設置的192.168.1.2這個要一致

敲命令   systemctl restart network 重啟網卡  然后ifconfig 查看一下改了沒有 具體參照   https://jingyan.baidu.com/article/a501d80c3c9b8aec630f5e8c.html   或者自行百度

然后互相   ping一下    windows 運行cmd 輸入 ping 192.168.1.101(ping 你的虛擬機的IP地址)  linux 下ping 你windows 主機的 IP  我的是10.92.3.80 可以 進入命令行ipconfig一下

(linux ping的ip 是你 windows的主機  ip 不是剛才設置的虛擬網卡的Ip

如果ping的通那就初步判定連上了

可以下一個   SecureCRT  鏈接linux  測試到底能不能連成  具體用法請百度謝謝!!(這個下不下沒關系)

然后關閉linux防火牆    一定要關  !!!!!!!!!!!!!!上次卡了一天   

centeros關閉方法 不行的話或者別的自行百度

 

1、關閉防火牆:sudo systemctl stop firewalld.service

 

2、關閉開機啟動:sudo systemctl disable firewalld.service

 

第三步  

先開啟你的   hadoop   hbase  (hbase開開 這個是hadoop的網址)

他有一個自帶的網址知道吧  http://localhost:16010/master-status      把這個網址復制到你的windows瀏覽器外 把localhost改成你的linux Ip 我的是 192.168.1.101   就是 http://192.168.1.101:16010/master-status

能連成說明徹底成功了下面就可以配置hadoop 和hbase 的配置了

 

第四步

http://dblab.xmu.edu.cn/blog/install-hadoop/    hadoop偽分布式配置

http://dblab.xmu.edu.cn/blog/install-hbase/       hbase為分布配置

 

按照上面的 (林子雨)(准備以后給我孩子起名字也叫子雨)博客 把hadoop 和hbase 配置成為分布的(什么是偽分布具體不太理解)  配置成功之后JPS 一  下看看所有服務到底能  不能正常開啟  測試一下你的Hbase能正常的建立表或者讀取不!!能的話看下一步

 

第五步

外網訪問需要改兩個文件吧

找到你hadoop安裝目錄下的etc 下的hadoop   core-site.xml  文件  如下

 

<configuration>
<property>
        <name>hadoop.tmp.dir</name>
        <value>file:/usr/local/hadoop/tmp</value>
        <description>Abase for other temporary directories.</description>
    </property>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop:9000</value>
    </property>
</configuration>

 

 fs.defaultFS 下的value 改成你自己的ip hdfs://192.168.1.101:9000  我這里綁定了一個本地域名叫hadoop  (這個沒什么關系自己喜歡可以百度)

 

然后 找到你HBASE 安裝目錄下的 conf文件夾下的 hbase-sitr.xml

改成如下

 

<configuration>
        <property>
                <name>hbase.rootdir</name>
                <value>hdfs://hadoop:9000/hbase</value>
        </property>
        <property>
                <name>hbase.zookeeper.quorum</name>
                <value>192.168.1.101</value>
        </property>
        <property>
                <name>hbase.cluster.distributed</name>
                <value>true</value>
        </property>
</configuration>

 

  第一個原來是localhost 改 hdfs://192.168.1.101:9000/hbase (我綁定了自定義域名hadoop)第二個是你linux靜態ip地址

 

 

 

第五步  

配置完之后 

重啟hadoop 和hbase 然后 JPS查看 所有服務運行了沒  即使運行的話建議你建立一個表或者 list(l列出所有表)一下  如果可以的話 建議上代碼了 否則如下 

linux 下進入hadoop目錄  清理了一下文件  這會刪除所有表

  1. ./sbin/stop-dfs.sh # 關閉
  2. rm -r ./tmp # 刪除 tmp 文件,注意這會刪除 HDFS 中原有的所有數據
  3. ./bin/hdfs namenode -format # 重新格式化 NameNode
  4. ./sbin/start-dfs.sh # 重啟

 不行reboot 重啟一下機器

如果 遇到沒有表建立表卻提示表存在 請參考  (百度吧   鏈接找不到了 因為你內存中還有那個表百度謝謝)

一切基礎在(前面兩個)博客上建立的...................................

 

 

下面上具體代碼

 

package com;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.MasterNotRunningException;
import org.apache.hadoop.hbase.ZooKeeperConnectionException;
import org.apache.hadoop.hbase.client.HBaseAdmin;

public class ceshi2 {
    private HBaseAdmin admin = null;
    // 定義配置對象HBaseConfiguration
    private static Configuration configuration;
    public ceshi2() throws MasterNotRunningException, ZooKeeperConnectionException, IOException {
        configuration = HBaseConfiguration.create();
         configuration.set("hbase.rootdir","hdfs://hadoop:9000/hbase");//可以吧hadoop改成你的域名或Ip
        configuration.set("hbase.zookeeper.quorum","192.168.1.101");  //hbase 服務地址
        configuration.set("hbase.zookeeper.property.clientPort","2181"); //端口號默認2128不用改
        admin = new HBaseAdmin(configuration);
    }
    public List<String> getAllTables() {
        List<String> tables = null;
        if (admin != null) {
            try {
                HTableDescriptor[] allTable = admin.listTables();
                if (allTable.length > 0)
                    tables = new ArrayList<String>();
                for (HTableDescriptor hTableDescriptor : allTable) {
                    tables.add(hTableDescriptor.getNameAsString());
                    System.out.println(hTableDescriptor.getNameAsString());
                }
            }catch (IOException e) {
                e.printStackTrace();
            }
        }
        return tables;
    }
    public static void main(String[] args) throws MasterNotRunningException, ZooKeeperConnectionException, IOException {
        // TODO 自動生成的方法存根
new ceshi2().getAllTables();
    }

}

這段代碼是列出所有表 !!沒標的話建一個

如果都配置好了。外網也能訪問!但是仍然無法連上,執行第五步,清理一下hadoop  清理后出現表不存在提示存在問題,參考      https://blog.csdn.net/m0_37786447/article/details/79577504

如果eclipse 可視化操作hdfs 沒有權限 

打開 hdfs-site.xml 文件 添加以下代碼

<property>
<name>dfs.permission</name>
<value>false<value>
</property>

 

總結  MLGB 氣死BB了  求人不如求自己

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM