`
hunray
  • 浏览: 221013 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

java客户端访问hbase

阅读更多
hbase的安装和配置请看 http://hunray.iteye.com/admin/blogs/1774583

使用shell建表
create 'gpsinfo','gpsdata'
gpsinfo为表名
gpsdata为columnfamily

import java.io.IOException;
import java.util.Date;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.util.Bytes;

public class HbaseSave {

    public static void main(String[] args) throws Exception {
        //建表 create 'gpsinfo','gpsdata'
        Configuration HBASE_CONFIG = new Configuration();    
        HBASE_CONFIG.set("hbase.zookeeper.quorum", "192.168.3.206");  
        Configuration configuration = HBaseConfiguration.create(HBASE_CONFIG);  
        try {  
            HBaseAdmin admin =new HBaseAdmin(configuration);
            if (admin.tableExists("gpsinfo")) {
                System.out.println("表已经存在!");
                HTable table = new HTable(configuration, "gpsinfo");  
                Put put = new Put(Bytes.toBytes("0800025364"+new Date().getTime()));  
                put.add(Bytes.toBytes("gpsdata"),Bytes.toBytes("unitid"),Bytes.toBytes("0800025364"));  
                put.add(Bytes.toBytes("gpsdata"),Bytes.toBytes("lon"),Bytes.toBytes(111.321f));  
                put.add(Bytes.toBytes("gpsdata"),Bytes.toBytes("lat"),Bytes.toBytes(23.4687f));  
                put.add(Bytes.toBytes("gpsdata"),Bytes.toBytes("direction"),Bytes.toBytes(180));  
                put.add(Bytes.toBytes("gpsdata"),Bytes.toBytes("speed"),Bytes.toBytes(62.2f));  
                put.add(Bytes.toBytes("gpsdata"),Bytes.toBytes("locationstatus"),Bytes.toBytes(1));  
                put.add(Bytes.toBytes("gpsdata"),Bytes.toBytes("vehiclestatus"),Bytes.toBytes("点火"));  
                put.add(Bytes.toBytes("gpsdata"),Bytes.toBytes("gpstime"),Bytes.toBytes(new Date().getTime()));  
                put.add(Bytes.toBytes("gpsdata"),Bytes.toBytes("referenceposition"),Bytes.toBytes("意隆路22号"));  
                put.add(Bytes.toBytes("gpsdata"),Bytes.toBytes("rawdata"),Bytes.toBytes("7b334673124545711133447852217d"));  
                table.put(put);  
                table.close();
            }else{
                System.out.println("表不存在");
            }
            configuration.clear();
        } catch (IOException e) {  
            e.printStackTrace();  
        }
    }
 
}




在此过程中碰到的一些问题:
1. [root@localhost bin]# hadoop namenode -format
-bash: hadoop: command not found
将hadoop/bin路径加入PATH,需要重启机器
[root@localhost bin]# vi /etc/profile
export PATH=$JAVA_HOME/bin:$PATH:/root/Desktop/hadoop-1.1.1/bin

2. myeclipse连接报错:
警告: Possibly transient ZooKeeper exception: org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/master
2013-1-22 10:22:36 org.apache.hadoop.hbase.util.RetryCounter sleepUntilNextRetry
确保hbase正常启动了
禁用IPV6,将/etc/hosts文件里面的::1 localhost那一行删掉重启
关闭防火墙

3. hadoop启动,namenode日志文件中
org.apache.hadoop.hdfs.server.common.InconsistentFSStateException: Directory /var/log/hadoop_data/dfs/name is in an inconsistent state: storage directory does not exist or is not accessible.
at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:303)
at org.apache.hadoop.hdfs.server.namenode.FSDirectory.loadFSImage(FSDirectory.java:100)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.initialize(FSNamesystem.java:411)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.<init>(FSNamesystem.java:379)
at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:277)
at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:529)
at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1403)
at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1412)
格式化namenode
$ hadoop namenode –format

4. 客户端连接hbase报错:
java.net.UnknownHostException: unknown host: xiekang-pc
在本地配置host
192.168.3.206       xiekang-pc

5. java.net.ConnectException: Connection refused: no further information
org.apache.hadoop.hbase.ipc.HBaseClient$FailedServerException: This server is in the failed servers list: localhost/127.0.0.1:60000
服务器上master地址和localhost/127.0.0.1:60000对不上。
查看http://192.168.3.206:60010/master-status的master地址。


分享到:
评论
5 楼 因为青所以涩 2013-11-11  
我把配置中的所有地址用IP代替,终于解决了
4 楼 因为青所以涩 2013-11-08  
你好!我服务器运行hbase后,页面访问http://192.168.184.128:60010/master-status,显示的Master: node1:60000。
服务器中/etc/hosts内容如下,(只用了一台虚拟机来搭环境):
127.0.0.1 node1 localhost
::1      localhost6.localdomain6 localhost6
192.168.184.128  node1
=====--------------
但是我使用客户端连接,老是抛出这个异常
org.apache.hadoop.hbase.ipc.HBaseClient$FailedServerException: This server is in the failed servers list: node1/192.168.184.128:60000
你能帮我分析一下原因么?谢谢啦。
调用的代码为
Configuration conf = HBaseConfiguration.create();
   conf.set("hbase.zookeeper.property.clientPort", "2181");
   conf.set("hbase.zookeeper.quorum", "node1");
   conf.set("hbase.master", "node1:60000");
   conf.set(TableOutputFormat.OUTPUT_TABLE, "xtab");
HBaseAdmin admin = new HBaseAdmin(conf);
3 楼 a420144030 2013-05-08  
是这个问题,已经解决,谢谢
2 楼 hunray 2013-04-28  
127.0.0.1      localhost     
 
# The following lines are desirable for IPv6 capable hosts 
::1     localhost ip6-localhost ip6-loopback 
fe00::0 ip6-localnet 
ff00::0 ip6-mcastprefix 
ff02::1 ip6-allnodes 
ff02::2 ip6-allrouters 
ff02::3 ip6-allhosts 
 
192.168.1.106 hrkjsoft01-desktop 
192.168.1.99 slave99 
192.168.1.104 slave98 

master和slave都用这个配置试一试。
1 楼 a420144030 2013-04-22  
你好,能帮我看看吗?我的hbase出现问题:org.apache.hadoop.hbase.ipc.HBaseClient$FailedServerException: This server is in the failed servers list: hrkjsoft01-desktop/192.168.1.106:60000

master /etc/hosts
#127.0.0.1      localhost
127.0.0.1       hrkjsoft01-desktop

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

192.168.1.106 master
192.168.1.99 slave99
192.168.1.104 slave98



slave99 /etc/hosts

#127.0.0.1      localhost
127.0.0.1       hsweb localhost

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters


192.168.1.106 master  hrkjsoft01-desktop
192.168.1.99 slave99
192.168.1.104 slave98

相关推荐

    java 连接远程hbase 数据库

    1. **引入依赖**: 标签中的"java habse"暗示我们需要Java的HBase客户端库。描述中提到的"所有jar"通常指的是这些库。在Java项目中,这些依赖可以通过Maven或Gradle等构建工具管理。例如,在Maven的`pom.xml`文件中,...

    java-hbase开发包

    1. **HBase客户端API**:这是Java-HBase开发包的核心,提供了一组Java接口和类,用于连接到HBase集群,创建表,插入、查询和更新数据。例如,`HTableInterface` 和 `HBaseAdmin` 接口,以及 `Put`、`Get` 和 `Scan` ...

    Hbase 可视化客户端工具(非phoenix连接)

    例如,可以设置用户角色和权限,控制不同用户对HBase资源的访问。同时,它可能会实时显示HBase集群的状态,包括节点健康状况、内存使用情况、表和Region分布等,帮助管理员及时发现并解决问题。 对于数据分析,该...

    hbase单机搭建文档1

    如果需要使用 Java 客户端访问 HBase,首先要确保本地 `hosts` 文件包含了服务器的 IP 和 hostname 映射。编写 Java 代码(如 `HbaseTest.java`),实现对 HBase 的操作,包括创建表、查询数据、删除数据等。测试时...

    java访问hbase所需的jar包

    Java访问HBase所需的Jar包是实现Java应用程序与HBase交互的关键。HBase作为一个基于Hadoop文件系统的分布式列式存储数据库,其设计目标是处理大规模的数据并提供亚秒级的访问速度。为了在Java环境中顺利地操作HBase...

    java操作Hbase之从Hbase中读取数据写入hdfs中源码

    在Java中操作HBase,我们需要使用HBase的Java客户端API。首先,确保引入了所有必要的jar包,这些包通常包括hbase-client、hbase-common、hadoop-client等。这些依赖可以使用Maven或Gradle等构建工具管理,或者直接在...

    java代码使用thrift2操作hbase示例

    你需要配置HBase的环境变量,并且需要编译Thrift2生成的HBase IDL文件,生成对应的Java客户端代码。 2. **建立连接**:使用`HBaseConfiguration.create()`创建一个配置对象,然后通过`ConnectionFactory.create...

    java操作Hbase之实现表的创建删除源码

    HBase是一个分布式的、基于列族的NoSQL数据库,它构建在Hadoop之上,提供了高性能、低延迟的数据存储和访问能力。本教程将详细介绍如何使用Java API来创建和删除HBase表,并针对不使用Maven的初学者提供必要的jar包...

    java连接hbase的jar包

    Java连接HBase主要依赖于Apache HBase提供的Java客户端库,这个库包含了所有必要的类和接口,使得Java应用程序能够与HBase进行交互。HBase是一个分布式、版本化的NoSQL数据库,基于Google的Bigtable设计,运行在...

    hbase的java client实例

    在Mapper和Reducer中,可以直接访问HBase的行键、列族和值。 最后,我们讨论**协处理器**。HBase的协处理器机制允许在RegionServer端执行自定义逻辑,从而提高数据处理效率和安全性。协处理器分为两种类型:`...

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

    以下是一个Maven项目的示例,导入了HBase客户端库: ```xml &lt;groupId&gt;org.apache.hbase &lt;artifactId&gt;hbase-client &lt;version&gt;1.4.6 ``` 接下来,我们将在Java程序中创建一个配置对象,通过它连接到HBase。这...

    java 通过thrift-0.9.1读取hbase表数据

    3. **编写Java代码**:使用生成的Java客户端代码,创建HBase连接,实例化Thrift客户端,然后调用其提供的方法来访问HBase表。通常包括以下步骤: - 连接Thrift服务器:通过`TSocket`或`TFramedTransport`建立与...

    nosql-实验三HBase管理工具和客户端.docx

    HBase 客户端是指通过编程语言来访问和操作 HBase 数据库的客户端。常见的 HBase 客户端有 Java 客户端、Python 客户端等。 在 Java 中,可以使用 HBase 的 Java API 来访问和操作 HBase 数据库。例如,用户可以...

    封装hbase以便java调用

    - **安全性**:封装可以添加权限控制,确保只有授权的代码才能访问HBase。 - **扩展性**:封装层可以实现缓存、批量操作等功能,提高性能。 - **模块化**:封装有助于解耦应用和底层存储,使得更换或升级存储系统...

    hbase java api 访问 增加修改删除(一)

    在本文中,我们将深入探讨如何使用HBase的Java API进行数据的增加、修改和删除操作。HBase是一个基于Google Bigtable...在实际项目中,还可以考虑使用HBase的客户端库如HBaseAdmin和HTablePool,以简化管理和并发操作。

    hbase java api 所需最精简 jar

    HBase的Java客户端API提供了一系列的类和接口,使得开发者能够方便地在Java程序中创建、读取、更新和删除(CRUD)HBase表的数据。这些主要组件包括: 1. **HBase连接器(Connection)**:是访问HBase集群的入口点,...

    java开发hbase-1.2.1所需的jar包

    1. **HBase依赖**: 开发HBase应用程序时,首先需要在项目中引入HBase的客户端库。HBase 1.2.1的jar包通常包括`hbase-client.jar`,它包含了与HBase通信的所有必要API。 2. **Zookeeper**: HBase依赖Zookeeper进行...

    HBase使用的jar包

    1. **HBase客户端库**:这是与HBase交互的基础,包含了HBase的API,如`org.apache.hadoop.hbase.client.Connection`和`org.apache.hadoop.hbase.client.Table`等,用于创建连接、打开表、执行Get、Put、Scan等操作。...

    java集成hadoop-hbase用到的jar包

    首先,Java开发人员需要包含Hadoop的客户端库,这些库提供了访问Hadoop集群的接口。Hadoop的客户端jar包通常包含了HDFS(Hadoop Distributed File System)和MapReduce的相关API,允许你读写HDFS中的数据以及执行...

    hbase0.94java源代码

    这个源代码包是针对Java开发者的宝贵资源,可以帮助他们深入理解HBase的内部工作原理,优化自己的应用,以及对HBase进行定制化开发。 HBase的核心概念包括: 1. 表(Table):HBase的数据存储在表中,每个表由行键...

Global site tag (gtag.js) - Google Analytics