尝试通过Java访问HBase时出错

时间:2012-02-16 12:54:57

标签: hadoop hbase

我正在尝试通过Java将数据写入HBase。这是我正在使用的代码:

import java.io.IOException;
import org.apache.hadoop.conf.Configurable;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.util.Bytes;


public class MyLittleHBaseClient 
{
    public static void main(String[] args) throws IOException 
    {
        HBaseConfiguration config = new HBaseConfiguration();
        HTable table = new HTable(config, "myLittleHBaseTable");
        Put p = new Put(Bytes.toBytes("myLittleRow"));
        p.add(Bytes.toBytes("myLittleFamily"), Bytes.toBytes("someQualifier"),
        Bytes.toBytes("Some Value"));
        table.put(p);
    }
}

我尝试将conf.set("hbase.master","localhost:51310")放在51310我的Hbase主服务器运行的位置。我的区域服务器位于"localhost:13184"。上面的代码与我在互联网上找到的唯一相似的是{ {1}}说“没有这样的方法”。 遇到的错误是org.apache.hadoop.hbase.client.NoServerForRegionException:尝试定位根区域超时。我的IDE是oracle Jdeveloper。我已经添加了所有jar文件,jps显示所有运行正常的服务器。我不知道我做错了什么。互联网上的所有示例都在他们的代码中显示HBaseConfiguration.create()。我使用过Hbase- 0.90.4

2 个答案:

答案 0 :(得分:0)

对代码进行一些更改应该让它运行。

更改以下内容:

 HBaseConfiguration config = new HBaseConfiguration();

为:

Configuration config = HBaseConfiguration.create();

如果您要连接到localhost,请按照上面的说明设置hbase.master的值。如果要连接到远程HBase存储,请设置以下内容:

conf.set("hbase.zookeeper.quorum","<host name>")

和这个

conf.set("hbase.zookeeper.property.clientPort","<client port used by zookeeper>")

最后添加

conf.set("hbase.master","<host name>:<port>")

第一步,在hosts文件(linux中的/ etc / hosts)中设置适当的主机名,并将其设置为计算机的IP地址。现在,将该主机名作为zookeeper仲裁的值。此步骤很重要,因为 HBase仅识别主机名而不识别IP地址

第二步,通过检查 / hbase / conf 目录下的配置文件找出zookeeper使用的客户端端口

答案 1 :(得分:0)

连接到远程系统时,您可以使用此代码进行配置

config.set("hbase.zookeeper.quorum", args[0]);// ip of hbase server(remote)
config.set("hbase.zookeeper.property.clientPort", args[1]);// portno : 2181 default
编辑hbase目录中的conf / regionservers文件,在其中添加Hbase服务器(Remote) (我这样做了,并不需要编辑etc / hosts以在我的办公室网络中获得hbase服务器) 即在编辑后,区域服务器看起来像

本地主机
远程hbase服务器的IP地址

例如
本地主机
10.132.258.366