`
weitao1026
  • 浏览: 1053324 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

在Windows上直接使用JAVA API连接Hbase0.96报的一个异常

阅读更多

在Windows上直接使用JAVA API连接Hbase0.96报的一个异常,这个异常在Hbase0.94的版本里是没有的,为什么?  跟你所用的底层的Hadoop有关系,如果是底层hadoop是1.x的版本,那么没有这个问题,如果是2.x的hadoop,那么需要注意了,可能会出现下面这个问题,异常如下:

Java代码 复制代码 收藏代码
  1. 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  
  2. 2014-07-14 13:27:59,317 ERROR [org.apache.hadoop.util.Shell] Failed to locate the winutils binary in the hadoop binary path  
  3. java.io.IOException: Could not locate executable D:\hadoop-1.2.0\bin\winutils.exe in the Hadoop binaries.  
  4.     at org.apache.hadoop.util.Shell.getQualifiedBinPath(Shell.java:278)  
  5.     at org.apache.hadoop.util.Shell.getWinUtilsPath(Shell.java:300)  
  6.     at org.apache.hadoop.util.Shell.<clinit>(Shell.java:293)  
  7.     at org.apache.hadoop.util.StringUtils.<clinit>(StringUtils.java:76)  
  8.     at org.apache.hadoop.conf.Configuration.getStrings(Configuration.java:1514)  
  9.     at org.apache.hadoop.hbase.zookeeper.ZKConfig.makeZKProps(ZKConfig.java:113)  
  10.     at org.apache.hadoop.hbase.zookeeper.ZKConfig.getZKQuorumServersString(ZKConfig.java:265)  
  11.     at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.<init>(ZooKeeperWatcher.java:159)  
  12.     at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.<init>(ZooKeeperWatcher.java:134)  
  13.     at org.apache.hadoop.hbase.client.ZooKeeperKeepAliveConnection.<init>(ZooKeeperKeepAliveConnection.java:43)  
  14.     at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.getKeepAliveZooKeeperWatcher(HConnectionManager.java:1710)  
  15.     at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getClusterId(ZooKeeperRegistry.java:82)  
  16.     at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.retrieveClusterId(HConnectionManager.java:806)  
  17.     at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.<init>(HConnectionManager.java:633)  
  18.     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)  
  19.     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)  
  20.     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)  
  21.     at java.lang.reflect.Constructor.newInstance(Constructor.java:513)  
  22.     at org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:387)  
  23.     at org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:366)  
  24.     at org.apache.hadoop.hbase.client.HConnectionManager.getConnection(HConnectionManager.java:247)  
  25.     at org.apache.hadoop.hbase.client.HTable.<init>(HTable.java:188)  
  26.     at org.apache.hadoop.hbase.client.HTable.<init>(HTable.java:150)  
  27.     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的环境变量了。
代码如下:

Java代码 复制代码 收藏代码
  1. if (System.getProperty("os.name").contains("Windows")) {  
  2.             File workaround = new File(".");  
  3.             System.getProperties().put("hadoop.home.dir",workaround.getAbsolutePath());  
  4.             File dir = new File("./bin");  
  5.             if (!dir.exists()) {  
  6.                 dir.mkdirs();  
  7.             }  
  8.             File exe = new File("./bin/winutils.exe");  
  9.             if (!exe.exists()) {  
  10.                 exe.createNewFile();  
  11.             }  
  12.         }  
分享到:
评论

相关推荐

    hbase 的java代码 集合 hbase 0.96

    1. **连接HBase**:在Java代码中,我们使用`HBaseConfiguration.create()`来创建一个配置对象,然后可以设置各种配置参数,如Zookeeper的地址(`HBASE_ZOOKEEPER_QUORUM`),端口(`HBASE_ZOOKEEPER_CLIENT_PORT`)...

    如何使用Java API操作Hbase(基于0.96新的api)

    在Java中操作HBase,尤其是基于0.96版本的新API,涉及到许多核心概念和方法。HBase是一个分布式的、可扩展的列式数据库,它建立在Hadoop之上,适用于实时读写大数据。本篇文章将深入探讨如何使用Java API与HBase进行...

    hadoop2.6及hbase0.96伪分布式安装配置文件

    在伪分布式模式下,所有的Hadoop组件都运行在一个单一节点上,这对于测试和学习Hadoop的环境配置非常有用。以下是安装步骤的关键知识点: 1. **环境准备**:确保你的系统满足Java环境的要求,安装JDK,并设置JAVA_...

    使用Java API连接虚拟机HBase并进行数据库操作,Java源代码

    在本文中,我们将深入探讨如何使用Java API连接到运行在虚拟机上的HBase数据库,并进行相关的数据操作。HBase是一个分布式的、版本化的、基于列族的NoSQL数据库,它构建于Hadoop之上,适用于处理大规模的数据存储和...

    Java SpringBoot 连接 Hbase Demo

    Java SpringBoot 连接 Hbase Demo 创建表 插入数据 列族 列 查询:全表、数据过滤 删除数据 删除表 Hbase 集群搭建:https://blog.csdn.net/weixin_42176639/article/details/131796472

    Hadoop2.2+Zookeeper3.4.5+HBase0.96集群环境搭建

    Hadoop2.2+Zookeeper3.4.5+HBase0.96集群环境搭建是大数据处理和存储的重要组件,本文档将指导用户从零开始搭建一个完整的Hadoop2.2+Zookeeper3.4.5+HBase0.96集群环境。 硬件和软件要求 为搭建Hadoop2.2+...

    java api 访问hbase demo(Maven)

    在Java API中访问HBase是大数据处理中常见的一项任务,HBase作为一个分布式、列式存储的NoSQL数据库,常用于海量数据的实时读写。在这个Java API访问HBase的Maven项目中,我们将探讨如何配置项目,引入依赖,以及...

    Hbase调用JavaAPI实现批量导入操作

    在大数据处理领域,Apache HBase是一个分布式的、版本化的NoSQL数据库,它构建于Hadoop之上,特别适合处理海量结构化数据。这篇博客“Hbase调用Java API实现批量导入操作”聚焦于如何利用Java编程语言高效地向HBase...

    java 连接远程hbase 数据库

    HBase是一个构建在Hadoop文件系统(HDFS)之上的分布式、版本化的NoSQL数据库,它提供了高性能、低延迟的数据访问能力。以下是一些关于如何使用Java连接远程HBase数据库的重要知识点: 1. **引入依赖**: 标签中的...

    Hadoop+HBase+Java API

    标题 "Hadoop+HBase+Java API" 涉及到三个主要的开源技术:Hadoop、HBase以及Java API,这些都是大数据处理和存储领域的关键组件。以下是对这些技术及其结合使用的详细介绍: **Hadoop** 是一个分布式计算框架,由...

    hbase-0.96 jar包

    HBase 0.96是一个重要的里程碑,因为它在性能和稳定性上都有显著提升,特别是在处理大规模数据集时。 HBase设计的目标是提供实时读写访问,同时保持大数据量的水平扩展能力。它的核心特性包括: 1. **分布式存储**...

    java连接hbase的jar包

    HBase是一个分布式、版本化的NoSQL数据库,基于Google的Bigtable设计,运行在Hadoop之上,提供高可靠性、高性能的数据存储和检索服务。 在Java中连接HBase,首先需要在项目中引入相关的jar包。这些jar包通常包括...

    scala API 操作hbase表

    在本文中,我们将深入探讨如何使用Scala API操作HBase数据库。HBase是一个分布式、面向列的NoSQL数据库,它构建于Hadoop之上,提供实时访问大量数据的能力。Scala是一种强大的函数式编程语言,与Java虚拟机(JVM)...

    Hbase笔记 —— 利用JavaAPI的方式操作Hbase数据库(往hbase的表中批量插入数据).pdf

    在本文档中,我们将深入探讨如何使用Java API与HBase数据库进行交互,特别是关于如何创建表、修改表结构以及批量插入数据。HBase是Apache的一个分布式、可扩展的大数据存储系统,它基于谷歌的Bigtable设计,适用于...

    hadoop2.2+hbase0.96+hive0.12 安装文档

    综合以上信息,用户在进行hadoop2.2+hbase0.96+hive0.12的集成安装时,应该详细检查各个组件的版本兼容性,确保系统权限设置正确,按照实践指南执行相关配置步骤,并正确设置和使用MySQL数据库作为元数据存储。...

    javaApi_sparkhiveAPI_hbaseAPI.zip

    - **Region Server**:HBase将数据分布在多个Region Server上,Java API允许开发者管理这些服务器并执行跨服务器的操作。 - **Scan和Get操作**:通过API,可以执行扫描(Scans)来获取多行数据,或者使用Get方法...

    hbase java api 访问 查询、分页

    在HBase这个分布式列式数据库中,Java API是开发者常用的一种接口来操作HBase,包括创建表、插入数据、查询数据以及实现分页等操作。本文将深入探讨如何使用HBase Java API进行数据访问和分页查询。 首先,我们要...

    hadoop2.2.0+Hbase0.96+hive0.12详细配置

    在大数据处理领域,Hadoop、HBase和Hive是三个非常重要的组件,它们共同构建了一个高效、可扩展的数据存储和分析平台。本文将详细介绍如何在Linux环境下搭建Hadoop2.2.0、HBase0.96和Hive0.12的集群环境。 首先,...

    在windows上安装Hbase

    在Windows上安装HBase 本文将指导您如何在Windows平台上安装HBase,包括配置详解。安装完成后,您将能够配置集群。 一、前提条件 在安装HBase前,需要安装Cygwin和Hadoop。这两个软件的安装不在本文的讨论范围内...

Global site tag (gtag.js) - Google Analytics