Win下使用Java连接远程完全分布式集群上的HBase

使用Java操作远程HBase请移步

Win下使用Java操作远程分布式集群中的HBase

前提条件

  1. 本地Windows(7或10)系统下已经装好了JDK和Eclipse,笔者电脑JDK1.8。
  2. 已经有搭建好的完全分布式集群,并已经成功启动Hadoop,Zookeeper和HBase。笔者当前搭建好的集群是Hadoop-3.0.3Zookeeper-3.4.13HBase-2.1.0
HostnameIP
master10.0.86.245
ceph110.0.86.246
ceph210.0.86.221
ceph310.0.86.253

一、把服务器端的Hadoop安装文件整体复制到本地Win系统下

这里笔者使用Xshell5新建文件传输功能,使用Xshell5登录到master结点后,将服务器端的master结点下的安装好的Hadoop文件夹拖拽到本地F盘中。(本地其他位置也可以,能记住路径即可)
1

二、配置本地Win系统的环境变量

在环境变量设置中增加HADOOP_HOME配置项,路径是刚才复制到本地对应的路径。
11
之后在Path配置项尾部添加如下路径,并点击确定:

%HADOOP_HOME%\bin

111
添加完成后,测试是否修改成功,在Win系统命令提示符下输入hadoop,出现如下命令提示则成功。
1111

【可能出现的问题】:输入hadoop提示JAVA_HOME路径不对。
【原因】:JDK安装目录中含有空格。如笔者当前JDK安装在C盘下的Program Files下,该路径下存在一个空格。
在这里插入图片描述
【解决方法】:修改 %HADOOP_HOME%\etc\hadoop\hadoop-env.cmd下的set JAVA_HOME=%JAVA_HOME%为set JAVA_HOME=C:\PROGRA~1\Java\jdk1.8.0_77即可
在这里插入图片描述

三、修改Win下hosts文件

hosts文件在如下路径:C:\Windows\System32\drivers\etc,加入集群所有节点的IPHostname
2

四、在本地Eclipse中创建Java Project项目并加入额外jar包

笔者在Eclipse下新建了个HbaseTest1项目。
在这里插入图片描述
继续通过使用Xshell5登录到master结点后,将master结点下的hbase安装目录下的lib文件夹拖拽到本地中。HBase-lib文件网盘下载地址33
在Eclipse中新建好的项目中右键Build Path->Configure Build Path添加额外的JAR包,把刚才复制到本地的lib文件夹中的所有JAR包导入进去。
44
一个好的方式是把lib包插入到项目中,如下图:
1212

五、把winutils相关文件覆盖到本地hadoop的bin目录下

现在我们就可以在Eclipse中写代码啦,新建好项目后,敲好代码如下:

package test1;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.*;
import org.apache.hadoop.hbase.client.*;
import java.io.IOException;
 
public class testOne{
    public static Configuration configuration;
    public static Connection connection;
    public static Admin admin;
    public static void main(String[] args)throws IOException{
    	init();   //建立连接
    	close();  //关闭连接
    }
    //建立连接
    public static void init(){
       configuration  = HBaseConfiguration.create();  //创建配置实例
//以下对配置实例进行设置,需要设置1)基本的hbase根目录 2)zookeeper进程所在结点 3)zookeeper进程端口号
       configuration.set("hbase.rootdir","hdfs://master:9000/hbase");
       configuration.set("hbase.zookeeper.quorum", "master,ceph1,ceph2,ceph3");
       configuration.set("hbase.zookeeper.property.clientPort", "2181");
       try{ //带入配置实例到连接实例中,创建连接。
            connection = ConnectionFactory.createConnection(configuration);
            admin = connection.getAdmin();  //admin用于管理HBase的增删改查等功能
            System.out.println("连接HBase成功.");
       }catch (IOException e){
            System.err.println("连接HBase失败.");
       }
    }
    //关闭连接
    public static void close(){
        try{
            if(admin != null){
                admin.close();
            }
            if(null != connection){
                connection.close();
            }
        }catch (IOException e){
            e.printStackTrace();
        }
    }
}

注:以下三个设置代码缺一不可,之前笔者仅设置了第一行HBase的根目录,后发现无法连接HBase,加入zookeeper的设置才成功。

configuration.set("hbase.rootdir","hdfs://master:9000/hbase");
configuration.set("hbase.zookeeper.quorum", "master,ceph1,ceph2,ceph3");
configuration.set("hbase.zookeeper.property.clientPort", "2181");

运行的时候报错如下:

2018-12-21 10:21:28,822 ERROR [main] util.Shell (Shell.java:getWinUtilsPath(400)) - Failed to locate the winutils binary in the hadoop binary path
java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.
	at org.apache.hadoop.util.Shell.getQualifiedBinPath(Shell.java:382)
	at org.apache.hadoop.util.Shell.getWinUtilsPath(Shell.java:397)
	at org.apache.hadoop.util.Shell.<clinit>(Shell.java:390)
	at org.apache.hadoop.util.StringUtils.<clinit>(StringUtils.java:80)
	at org.apache.hadoop.conf.Configuration.getBoolean(Configuration.java:1437)
	at org.apache.hadoop.hbase.HBaseConfiguration.checkDefaultsVersion(HBaseConfiguration.java:66)
	at org.apache.hadoop.hbase.HBaseConfiguration.addHbaseResources(HBaseConfiguration.java:80)
	at org.apache.hadoop.hbase.HBaseConfiguration.create(HBaseConfiguration.java:94)
	at test1.testOne.init(testOne.java:23)
	at test1.testOne.insertRow(testOne.java:110)
	at test1.testOne.main(testOne.java:17)

意思是没有在Hadoop路径中找到Winutils,所以此处需要添加winutils相关文件,把winutils文件添加到本地Hadoop安装目录的bin文件下,遇到相同文件则覆盖,此处我将如下文件全部放入F:\hadoop\bin中,虽然版本有点低,但亲测可用~。

Winutils文件网盘链接下载

21

六、重启电脑(保证前面环境变量配置生效)

最后运行程序,成功连接到HBase~!
31

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SL_World

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值