我正在尝试与一个简单的java应用程序中的maprdb表进行交互,该应用程序在一个m3mapr集群的节点中运行。似乎我可以连接到集群,但显然我不能正确连接到表。以下是代码片段:
Configuration configuration = new Configuration();
configuration.set("hbase.zookeeper.quorum", "192.168.2.1,192.168.2.2,192.168.2.3");
configuration.set("hbase.zookeeper.property.clientPort", "5181");
configuration.set("mapr.htable.impl", "com.mapr.fs.MapRHTable");
configuration.set("hbase.table.namespace.mappings", "*:/user/mapr/");
configuration = HBaseConfiguration.create(configuration);
HConnection connection = HConnectionManager.createConnection(configuration);
System.out.println("Is Master running? " + connection.isMasterRunning());
String tableName = args[0];
HTable table = (HTable) connection.getTable(tableName.getBytes());
for (HColumnDescriptor columnFamily : table.getTableDescriptor().getColumnFamilies()) {
System.out.println("Column family: " + columnFamily.getNameAsString());
}
我有一个名为“/user/mapr/test\u table”的表(我在mapr web控制台中看到它,可以通过 hbase shell
). 使用表名的任何合理参数运行代码只会返回以下异常:
org.apache.hadoop.hbase.TableNotFoundException: /user/mapr/test_table
at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.getHTableDescriptor(HConnectionManager.java:2750)
at org.apache.hadoop.hbase.client.HTable.getTableDescriptor(HTable.java:701)
at it.noovle.bigdata.hadoop.MaprDBLocalTest.main(MaprDBLocalTest.java:49)
在一些地方,我读到了maprdb没有必要通过zookeeper连接。一般来说是真的还是只适用于m7?我现在正在跑步。
有没有从JavaHBaseAPI中寻址MAPRDB表的特定方法?在 hbase shell
我只使用'/user/mapr/test\u table'。
有人可以分享一个m3集群运行示例的好例子吗?
2条答案
按热度按时间roejwanj1#
mapr允许您根据安装使用:
数据库
mapr数据库
表的“名称”定义这是“mapr db”还是“hbase”表:
完整路径(带/)是mapr db表
/apps/my_tables/users
简单字符串是hbase表users
然后,根据表的名称,客户机到达集群的方式会有所不同:mapr db:将使用cldb(默认值为server:7222)
hbase:将使用zookeeper(默认值为server:5181)
客户端代码在mapr db或hbase之间没有变化,只有表名和“configuration”发生了变化,我对配置的意思是:
您必须安装和配置mapr客户端
必须确保将所有依赖项都放在类路径中(hadoop客户机、hbase mapr客户机)
我这里有一个小项目
mv1qrgav2#
要连接到mapr db,您不需要连接到zookeeper。要打开表,必须提供绝对路径。例如/user/mapr/test\u表。下面附上一个简单的例子:
这是hbase-site.xml,它来自mapr沙盒。