在Windows上直接使用JAVA API连接Hbase0.96报的一个异常,这个异常在Hbase0.94的版本里是没有的,为什么? 跟你所用的底层的Hadoop有关系,如果是底层hadoop是1.x的版本,那么没有这个问题,如果是2.x的hadoop,那么需要注意了,可能会出现下面这个问题,异常如下:
- 2014-07-14 13:27:59,286 WARN [org.apache.hadoop.util.NativeCodeLoader] Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
- 2014-07-14 13:27:59,317 ERROR [org.apache.hadoop.util.Shell] Failed to locate the winutils binary in the hadoop binary path
- java.io.IOException: Could not locate executable D:\hadoop-1.2.0\bin\winutils.exe in the Hadoop binaries.
- at org.apache.hadoop.util.Shell.getQualifiedBinPath(Shell.java:278)
- at org.apache.hadoop.util.Shell.getWinUtilsPath(Shell.java:300)
- at org.apache.hadoop.util.Shell.<clinit>(Shell.java:293)
- at org.apache.hadoop.util.StringUtils.<clinit>(StringUtils.java:76)
- at org.apache.hadoop.conf.Configuration.getStrings(Configuration.java:1514)
- at org.apache.hadoop.hbase.zookeeper.ZKConfig.makeZKProps(ZKConfig.java:113)
- at org.apache.hadoop.hbase.zookeeper.ZKConfig.getZKQuorumServersString(ZKConfig.java:265)
- at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.<init>(ZooKeeperWatcher.java:159)
- at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.<init>(ZooKeeperWatcher.java:134)
- at org.apache.hadoop.hbase.client.ZooKeeperKeepAliveConnection.<init>(ZooKeeperKeepAliveConnection.java:43)
- at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.getKeepAliveZooKeeperWatcher(HConnectionManager.java:1710)
- at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getClusterId(ZooKeeperRegistry.java:82)
- at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.retrieveClusterId(HConnectionManager.java:806)
- at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.<init>(HConnectionManager.java:633)
- at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
- at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
- at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
- at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
- at org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:387)
- at org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:366)
- at org.apache.hadoop.hbase.client.HConnectionManager.getConnection(HConnectionManager.java:247)
- at org.apache.hadoop.hbase.client.HTable.<init>(HTable.java:188)
- at org.apache.hadoop.hbase.client.HTable.<init>(HTable.java:150)
- at com.dhgate.ywhbase.test.QueryTest.main(QueryTest.java:43)
2014-07-14 13:27:59,286 WARN [org.apache.hadoop.util.NativeCodeLoader] Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 2014-07-14 13:27:59,317 ERROR [org.apache.hadoop.util.Shell] Failed to locate the winutils binary in the hadoop binary path java.io.IOException: Could not locate executable D:\hadoop-1.2.0\bin\winutils.exe in the Hadoop binaries. at org.apache.hadoop.util.Shell.getQualifiedBinPath(Shell.java:278) at org.apache.hadoop.util.Shell.getWinUtilsPath(Shell.java:300) at org.apache.hadoop.util.Shell.<clinit>(Shell.java:293) at org.apache.hadoop.util.StringUtils.<clinit>(StringUtils.java:76) at org.apache.hadoop.conf.Configuration.getStrings(Configuration.java:1514) at org.apache.hadoop.hbase.zookeeper.ZKConfig.makeZKProps(ZKConfig.java:113) at org.apache.hadoop.hbase.zookeeper.ZKConfig.getZKQuorumServersString(ZKConfig.java:265) at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.<init>(ZooKeeperWatcher.java:159) at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.<init>(ZooKeeperWatcher.java:134) at org.apache.hadoop.hbase.client.ZooKeeperKeepAliveConnection.<init>(ZooKeeperKeepAliveConnection.java:43) at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.getKeepAliveZooKeeperWatcher(HConnectionManager.java:1710) at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getClusterId(ZooKeeperRegistry.java:82) at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.retrieveClusterId(HConnectionManager.java:806) at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.<init>(HConnectionManager.java:633) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:513) at org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:387) at org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:366) at org.apache.hadoop.hbase.client.HConnectionManager.getConnection(HConnectionManager.java:247) at org.apache.hadoop.hbase.client.HTable.<init>(HTable.java:188) at org.apache.hadoop.hbase.client.HTable.<init>(HTable.java:150) at com.dhgate.ywhbase.test.QueryTest.main(QueryTest.java:43)
从上面的异常中国就可以看出,散仙使用的底层hadoop是1.x的环境变量,故报此异常了,不过这个异常不影响数据读取,但是为了不影响美观,我们还是需要把它处理掉,解决方法如下:
(1),比较简单的解决办法,在客户端上下载一个hadoop2.2的压缩包,解压,并配置环境变量把HADOOP_HOME改成2.x的,可以在程序里,设定,也可以直接在windows上的我的电脑右击里设置。
(2),无须下载hadoop2.2的压缩包,直接在代码里,判断是否有无winutils.exe 这个windows下的可执行文件,如果没有的话,就自己创建,这样一来,就不需要改hadoop1.x的环境变量了。
代码如下:
- if (System.getProperty("os.name").contains("Windows")) {
- File workaround = new File(".");
- System.getProperties().put("hadoop.home.dir",workaround.getAbsolutePath());
- File dir = new File("./bin");
- if (!dir.exists()) {
- dir.mkdirs();
- }
- File exe = new File("./bin/winutils.exe");
- if (!exe.exists()) {
- exe.createNewFile();
- }
- }
相关推荐
hbase 的java代码 集合 hbase 0.96
使用Java API连接虚拟机HBase并进行数据库操作,Java源代码
NULL 博文链接:https://qindongliang.iteye.com/blog/2096140
hadoop2.6及hbase0.96伪分布式安装配置文件
Java SpringBoot 连接 Hbase Demo 创建表 插入数据 列族 列 查询:全表、数据过滤 删除数据 删除表 Hbase 集群搭建:https://blog.csdn.net/weixin_42176639/article/details/131796472
java api 访问hbase demo(Maven) 详情请看:http://blog.csdn.net/wild46cat/article/details/53288537
通过Java Api与HBase交互
在集群中创建java项目调用api来操作hbase,主要涉及对hbase的创建表格,删除表格,插入数据,删除数据,查询一条数据,查询所有数据等操作。 具体流程如下: 1.创建项目 2.获取jar包到项目的lib目录下(这边试用的事...
首先说一下这个安装过程需要注意的地方一、使用新建用户可能会遇到的问题(1)权限问题:对于新手经常使用root,刚开始可以使用,但是如果想真正的学习,必须学会使用其他用户。也就是你需要学会新建用户,但是新建...
Hbase笔记 —— 利用JavaAPI的方式操作Hbase数据库(往hbase的表中批量插入数据)
2019-8____2019-10工作期间的java版hiveApi,hbaseApi和spark版本的hiveApi,hbaseApi
java连接hbase的jar包,java连接hbase的jar包,java连接hbase的jar包,java连接hbase的jar包
使用JavaAPI实现HBase的ddl(创建表、删除表、修改表(添加列族等))、dml(添加数据、删除数据)、dql(查询数据(get、scan))等操作 除此之外还包含一些其他操作:命名空间的应用、快照的应用等 对应(《HBase...
Hadoop2.2+Zookeeper3.4.5+HBase0.96集群环境搭建
HBase Java API类介绍
Java 开发连接HBase所需jar包,可使用Java开发平台直接带入使用。Java 开发连接HBase所需jar包,可使用Java开发平台直接带入使用。Java 开发连接HBase所需jar包,可使用Java开发平台直接带入使用。
hbase-0.96jar包 hbase-0.96 hbase-0.98都可以用,
该工程中包含了hbase 所以依赖的所有jar ,jar包存放在工程的lib 目录下,希望可以帮到你
最近看了hbase的源码根据源码写了一些scala调动hbase表的API,话不多说直接上代码!Hadoop的版本是2.7.3,scala版本是2.1.1,hbase的版本是1.1.2 如果版本不同可以修改pom的依赖项,但要注意版本冲突。 并且在scala...
java 操作远程Hbase 数据库,下载工程更新pom 即可运行,需要修改本地host 为主机名