我已经安装了zookeeper和Hbase并启动了Hbase。它的运行我可以查看网络用户界面。
当我开始通过 hbase shell 引入它时,我无法连接到 hbase shell
HBase Shell
Use "help" to get list of supported commands.
Use "exit" to quit this interactive shell.
For Reference, please visit: http://hbase.apache.org/2.0/book.html#shell
Version 2.5.7, r6788f98356dd70b4a7ff766ea7a8298e022e7b95, Thu Dec 14 15:59:16 PST 2023
Took 0.0000 seconds
NotImplementedError: fstat unimplemented unsupported or native support failed to load; see https://github.com/jruby/jruby/wiki/Native-Libraries
initialize at org/jruby/RubyIO.java:1015
open at org/jruby/RubyIO.java:1156
initialize at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/irb/input-method.rb:141
initialize at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/irb/context.rb:70
initialize at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/irb.rb:410
initialize at uri:classloader:/irb/hirb.rb:50
<main> at classpath:/jar-bootstrap.rb:225
出现此错误。
HBase版本:2.5.7
Java 版本:11
按照错误消息中的链接到https://github.com/jruby/jruby/wiki/Native-Libraries,我们看到它说:
fstat 未实现
如果出现 NotImplementedError: fstat unimplemented unsupported or native support failed to load 失败
如果您继续使用 -Djruby.native.verbose=true 运行它,并且显示 java.lang.UnsatisfiedLinkError: 无法从 /tmp 执行或加载 jffi 二进制存根。将 TMPDIR 或 Java 属性 java.io.tmpdir 设置为未安装“noexec”的读/写路径。 jffi...因此无法从共享对象映射段:不允许操作然后[请参阅此处]了解更多信息(https://github.com/jruby/jruby/issues/1302#issuecomment-840735752)。
先不考虑格式问题,让我们点击该链接。它导致了对标题为“当 /tmp 不可写时,JRuby 无法加载 FFI 支持并出现模糊错误”的问题的评论(由用户rdp),内容如下:
对我来说(使用 jruby-complete-jar)设置 TEMPDIR 等。似乎不起作用。当运行 jruby-9.2.17.0/bin/jruby (可执行文件)时它工作得“很好”,但在使用 jar 时则不然,那么它需要 java -Djava.io.tmpdir=... -jar 指向可执行文件目录(或者从您具有可执行+写入权限的目录运行它,或者拥有具有可执行权限的 /tmp)。现在可以了:)
下面还有来自 JRuby 开发者headius的评论,他说:
基于这篇 SO 文章,除非通过属性指定,否则非 Windows 上的默认临时目录似乎始终是 /tmp,并且不会查看任何环境变量。然而,Windows 会查看 TMP 以及可能的其他位置(注册表?)。
根据阅读这些评论,您问题的可能根本原因似乎是:
/tmp
目录不可被您运行的用户写入(或者存在其他权限问题,阻止 Java / JRuby 使用它来存储临时文件);和-Djava.io.tmpdir=/path/to/temp/dir
JVM 选项传递给 java
可执行文件,或以其他方式设置 java.io.tmpdir
Java 系统属性 以指向临时文件的可用目录。 (您可能有一个 Unix 环境变量,例如 TMPDIR
指向这样的目录,但显然 Java 不尊重这些环境变量。)(至少)纠正这两个原因之一,您的错误应该希望消失。
(有关运行 JRuby 时设置 JVM 选项,另请参阅 https://github.com/jruby/jruby/wiki/JRuby-Java-Options-Files)