java - 在 Cassandra 中使用 sstabledump 时 /tmp 挂载为 noexec 时出现 java.lang.UnsatisfiedLinkError
问题描述
我收到以下错误
/opt/apache-cassandra-3.0.15/tools/bin/sstabledump mc-41-big-Data.db
ERROR 15:02:20 Failed to link the C library against JNA. Native methods will be unavailable.
java.lang.UnsatisfiedLinkError: /tmp/jna--694687132/jna5914196415835358399.tmp: /tmp/jna--694687132/jna5914196415835358399.tmp: failed to map segment from shared object: Operation not permitted
at java.lang.ClassLoader$NativeLibrary.load(Native Method) ~[na:1.8.0_282]
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1934) ~[na:1.8.0_282]
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1817) ~[na:1.8.0_282]
at java.lang.Runtime.load0(Runtime.java:810) ~[na:1.8.0_282]
at java.lang.System.load(System.java:1088) ~[na:1.8.0_282]
at com.sun.jna.Native.loadNativeDispatchLibraryFromClasspath(Native.java:761) ~[jna-4.0.0.jar:4.0.0 (b2)]
at com.sun.jna.Native.loadNativeDispatchLibrary(Native.java:736) ~[jna-4.0.0.jar:4.0.0 (b2)]
at com.sun.jna.Native.<clinit>(Native.java:131) ~[jna-4.0.0.jar:4.0.0 (b2)]
at org.apache.cassandra.utils.NativeLibraryLinux.<clinit>(NativeLibraryLinux.java:53) ~[apache-cassandra-3.0.15.jar:3.0.15]
at org.apache.cassandra.utils.NativeLibrary.<clinit>(NativeLibrary.java:86) [apache-cassandra-3.0.15.jar:3.0.15]
at org.apache.cassandra.utils.UUIDGen.hash(UUIDGen.java:363) [apache-cassandra-3.0.15.jar:3.0.15]
at org.apache.cassandra.utils.UUIDGen.makeNode(UUIDGen.java:342) [apache-cassandra-3.0.15.jar:3.0.15]
at org.apache.cassandra.utils.UUIDGen.makeClockSeqAndNode(UUIDGen.java:291) [apache-cassandra-3.0.15.jar:3.0.15]
at org.apache.cassandra.utils.UUIDGen.<clinit>(UUIDGen.java:42) [apache-cassandra-3.0.15.jar:3.0.15]
at org.apache.cassandra.config.CFMetaData$Builder.build(CFMetaData.java:1399) [apache-cassandra-3.0.15.jar:3.0.15]
at org.apache.cassandra.tools.SSTableExport.metadataFromSSTable(SSTableExport.java:122) [apache-cassandra-3.0.15.jar:3.0.15]
at org.apache.cassandra.tools.SSTableExport.main(SSTableExport.java:180) [apache-cassandra-3.0.15.jar:3.0.15]
Exception in thread "main" java.lang.UnsatisfiedLinkError: org.apache.cassandra.utils.NativeLibraryLinux.getpid()J
at org.apache.cassandra.utils.NativeLibraryLinux.getpid(Native Method)
at org.apache.cassandra.utils.NativeLibraryLinux.callGetpid(NativeLibraryLinux.java:122)
at org.apache.cassandra.utils.NativeLibrary.getProcessID(NativeLibrary.java:391)
at org.apache.cassandra.utils.UUIDGen.hash(UUIDGen.java:363)
at org.apache.cassandra.utils.UUIDGen.makeNode(UUIDGen.java:342)
at org.apache.cassandra.utils.UUIDGen.makeClockSeqAndNode(UUIDGen.java:291)
at org.apache.cassandra.utils.UUIDGen.<clinit>(UUIDGen.java:42)
at org.apache.cassandra.config.CFMetaData$Builder.build(CFMetaData.java:1399)
at org.apache.cassandra.tools.SSTableExport.metadataFromSSTable(SSTableExport.java:122)
at org.apache.cassandra.tools.SSTableExport.main(SSTableExport.java:180)
我jna.tmpdir=/data/cassandra/tmp
根据我在 stacker 中找到的一些帖子添加了,但它仍然出现相同的错误。有什么建议吗?
解决方案
在 bash 配置文件中创建一个条目>>>
export JVM_OPTS="$JVM_OPTS -Djna.tmpdir=/var/lib/cassandra/tmp"
然后为立即生效,请执行以下 source 命令:
source ~/.bash_profile
还请在“var/lib/cassandra/”中创建一个具有用户访问/所有权的目录“tmp”。
上述解决方案对我有用。
推荐阅读
- android - 在android的AlertDialog中处理Edittext
- makefile - Makefile 跟踪目标未找到但存在并运行它
- javascript - 如何正确使用任何和/或未知函数参数
- flutter - 向列表中添加新项目后,如何在颤振中更新列表?
- inno-setup - Inno 设置 - 添加动画 gif
- python - 如何在保持 .py 源代码可编辑的同时将 python 打包为 exe?
- python - range(1:len(df)) 将 NaN 分配给数据帧中的最后一行
- python - 是否有执行浏览器中打开的所有 jupyter notebook 的一键快捷方式?
- python - 使用 Python 将变量写入 Excel 中的精确单元格
- sql - 如何有效地标记 SQL 中的连续变化