我正在尝试在 Azure HDinsight 群集上运行 Halyard。
升降索:https://merck.github.io/Halyard/
Azure 的 HBase 版本:https://docs.microsoft.com/en-us/azure/hdinsight/hbase/apache-hbase-overview
以下步骤成功:
- ssh 到主 HBase 节点:-ssh.azurehdinsight.net,端口为 22
- 使用 list commond 运行 HBase shell。
- 下载 Halyard sdk
- 运行 ./console 并创建测试存储库
当我尝试打开该存储库进行一些测试查询时,下一步失败了。出现以下错误:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/client/TableDescriptorBuilder
at com.msd.gin.halyard.common.HalyardTableUtils.getTable(HalyardTableUtils.java:162)
at com.msd.gin.halyard.common.HalyardTableUtils.getTable(HalyardTableUtils.java:146)
at com.msd.gin.halyard.sail.HBaseSail.initialize(HBaseSail.java:201)
at com.msd.gin.halyard.sail.HBaseSail.initialize(HBaseSail.java:194)
at org.eclipse.rdf4j.repository.sail.SailRepository.initializeInternal(SailRepository.java:151)
at org.eclipse.rdf4j.repository.base.AbstractRepository.initialize(AbstractRepository.java:34)
at org.eclipse.rdf4j.repository.manager.LocalRepositoryManager.createRepository(LocalRepositoryManager.java:273)
at org.eclipse.rdf4j.repository.manager.RepositoryManager.getRepository(RepositoryManager.java:424)
at org.eclipse.rdf4j.console.command.Open.openRepository(Open.java:80)
at org.eclipse.rdf4j.console.command.Open.execute(Open.java:65)
at org.eclipse.rdf4j.console.Console.executeCommand(Console.java:376)
at org.eclipse.rdf4j.console.Console.start(Console.java:337)
at org.eclipse.rdf4j.console.Console.main(Console.java:239)
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hbase.client.TableDescriptorBuilder
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 13 more
我不知道该如何解决这个问题。 kinit 步骤是否必不可少?这个 Azure-ready-made-HBase 是否不提供对 HBase 和 Hadoop java 类的访问?
由于我缺乏经验,因此欢迎提供任何帮助,包括从哪里开始学习我想要的堆栈中的元素的参考。
答案1
通过使用 Halyard 2.2 版本而不是 3.0 夜间版本解决了问题。