java - 从 Java 应用程序连接到 Kerberos 安全的 HBase 集群

标签 java hbase apache-zookeeper kerberos apache-nifi

我尝试使用以下代码连接到 hbase:

@测试 public void onTrigger() 抛出异常 {

    TestRunner runner = getTestRunner();
      runner.run();

}

私有(private) TestRunner getTestRunner() 抛出 FileNotFoundException、InitializationException {

    final TestRunner runner = TestRunners.newTestRunner(PutAllHBaseAVRO.class);
    runner.setProperty(PutAllHBaseAVRO.TABLE_NAME, "myTable");
    runner.setProperty(PutAllHBaseAVRO.COLUMN_FAMILY, "cf");
    runner.setProperty(PutAllHBaseAVRO.BATCH_SIZE, "10000");

    getHBaseClientService(runner);

    runner.setProperty(PutAllHBaseAVRO.ROW_ID,"Row1");

    // runner.setProperty(PutAllHBaseAVRO.HBASE_CLIENT_SERVICE, hBaseClient);
    runner.setProperty(PutAllHBaseAVRO.ROW_FIELD_REVERSE_STATEGY, "Reverse");
    runner.setProperty(PutAllHBaseAVRO.TS_FIELD_NAME, "dateTimeValue");
    runner.setProperty(PutAllHBaseAVRO.TS_FIELD_FORMAT, "yyyy-MM-dd'T'HH:mm:ssZ");
    return runner;
}

私有(private) HBaseMyClientService getHBaseClientService(最终 TestRunner 运行程序)抛出 InitializationException {

    final HBaseMyClientService hBaseClient = new HBase_1_1_2_MyClientService();


    runner.setProperty(HBaseMyClientService.HADOOP_CONF_FILES, "../hbase-site.xml, ../core-site.xml");

    runner.addControllerService("HBaseMyClientService", hBaseClient);

    //runner.setProperty("Kerberos Principal", "myKerberosPrincipal");

    //runner.setProperty("Kerberos Keytab", "/mypath.keytab");

   // runner.setProperty(HBaseMyClientService.ZOOKEEPER_QUORUM, "hbaseClient");

   // runner.enableControllerService(hBaseClient);

    return hBaseClient;

}

并得到一个错误。不明白为什么我会犯这样的错误:

“HBase 客户端服务”无效,因为需要 HBase 客户端服务 针对“../hbase-site.xml、../core-site.xml”验证的“Hadoop 配置文件”无效,因为“Hadoop 配置文件”不是受支持的属性

最佳答案

TestRunner 是为处理器创建的,您可以在创建它时看到它并说“newTestRunner(PutAllHbaseAvro.class)”。当您调用 runner.setProperty(name, value) 时,它会尝试在处理器上设置该属性,但您的处理器没有 hadoop conf 文件属性,而服务有它。要在服务上设置它,您必须进行不同的调用runner.setProperty(service, name, value)

关于java - 从 Java 应用程序连接到 Kerberos 安全的 HBase 集群,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55795047/

相关文章:

hadoop - HBase LZO表扫描导致RegionServer关闭

java - 频繁发生 ZooKeeper CONNECTIONLOSS 事件?

nodes - 我如何知道 zookeeper 节点是持久节点还是临时节点?

java - 仅给出与 JMenuItem 关联的字符串,是否可以从 JMenu 中删除 JMenuItem

Java JSON 返回一个数组作为值

java - 最简单的 Gui 测试 Java 重绘

hadoop - Hbase rowkey 用于跟踪实体的状态并避免全表扫描

hadoop - 您会推荐使用 Hadoop/HBASE 吗?

docker - Apache Kafka 集群未连接到 Docker 上的 Zookeeper

Java - 如何显示一个输入对话框,其中包含一个下拉列表,每个项目都有一个图标?