使用Java连接到Hbase映射器

使用Java连接到Hbase映射器,hbase,mapr,Hbase,Mapr,您好,我正在运行hbase VMWare sandbox MapR-sandbox-For-Hadoop-3.1.0VM。我没有对沙盒进行任何更改。我可以通过浏览器访问控制面板。在另一个linux虚拟机上,我安装了eclipse和hbase客户端。我有一个java程序,我想在其中创建一个hbase表,但无法连接。请帮忙 正如你在下面看到的,我得到了一个错误 错误client.HConnectionManager$HConnectionImplementation:检查“zookeeper.zno

您好,我正在运行hbase VMWare sandbox MapR-sandbox-For-Hadoop-3.1.0VM。我没有对沙盒进行任何更改。我可以通过浏览器访问控制面板。在另一个linux虚拟机上,我安装了eclipse和hbase客户端。我有一个java程序,我想在其中创建一个hbase表,但无法连接。请帮忙

正如你在下面看到的,我得到了一个错误

错误client.HConnectionManager$HConnectionImplementation:检查“zookeeper.znode.parent”中配置的值。可能与主机中配置的不匹配

然后

timesorg.apache.hadoop.hbase.MasterNotRunningException:重试1次

(请参阅下面的完整stacktraace)

我的应用程序使用

System.setProperty("java.library.path", "/opt/mapr/lib");
conf = HBaseConfiguration.create();  
conf.set("zookeeper.znode.parent", "/maprdemo");
conf.set("hbase.zookeeper.quorum", "16.49.150.79");
conf.set("hbase.zookeeper.property.clientPort", "5181");
conf.set("hbase.client.retries.number", "2");
admin = new HBaseAdmin(conf); 
System.out.println(admin.isMasterRunning());
POM包括

<dependency>
    <groupId>org.apache.hbase</groupId>
    <artifactId>hbase</artifactId>
    <version>0.94.13-mapr-1401-m7-3.1.0</version>
</dependency>

看起来您正在尝试访问M7 mapr本机表(这是HBase API的不同实现)

动物园管理员的Z节点在M7中是不相关的。所以下面的几行没有区别

conf.set("zookeeper.znode.parent", "/maprdemo");
conf.set("hbase.zookeeper.quorum", "16.49.150.79");
conf.set("hbase.zookeeper.property.clientPort", "5181");
它也不需要运行hbase主机和区域服务。因此,在沙箱上找不到运行的主服务。但它安装在节点上

maprcli node services -nodes `cat /opt/mapr/hostname` -hbmaster restart

您可以手动启动它并重新运行应用程序。

您可以使用属性conf.set(“mapr.hbase.default.db”)更改访问方式

按照Nabeel的建议,在使用HBase时,必须设置znode父级等

请注意,这仅适用于mapr表的二进制表。
对于JSON Mapr db表,您可以使用OJAI API。

澄清一下:如果您只想测试master运行,请使用上面的命令重新启动hbmaster并继续。如果要测试M7,请尝试在不启动主机的情况下直接访问表。
maprcli node services -nodes `cat /opt/mapr/hostname` -hbmaster restart