我正在尝试通过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
答案 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