web-dev-qa-db-ja.com

JNAネイティブサポートライブラリElasticsearch6.xを読み込めません

Debian 7 (wheezy)にElasticsearch6.xをインストールしました。 service elasticsearch startで始めようとしましたが、エラーメッセージが表示されます

root@debian:~# Sudo -i service elasticsearch start
[FAIL] Starting Elasticsearch Server: failed!

nano /var/log/elasticsearch/elasticsearch.logでelasticsearchログファイルを調べようとしましたが、このエラーが発生しました

[2017-12-14T11:25:39,153][WARN ][o.e.b.Natives            ] unable to load JNA native support library, native methods will be disabled.
Java.lang.UnsatisfiedLinkError: Native library (com/Sun/jna/linux-x86/libjnidispatch.so) not found in resource path ([file:/usr/share/elasticsearch/lib/lucene-spatial-$
        at com.Sun.jna.Native.loadNativeDispatchLibraryFromClasspath(Native.Java:962) ~[jna-4.4.0-1.jar:4.4.0 (b0)]
        at com.Sun.jna.Native.loadNativeDispatchLibrary(Native.Java:922) ~[jna-4.4.0-1.jar:4.4.0 (b0)]
        at com.Sun.jna.Native.<clinit>(Native.Java:190) ~[jna-4.4.0-1.jar:4.4.0 (b0)]
        at Java.lang.Class.forName0(Native Method) ~[?:1.8.0_151]
        at Java.lang.Class.forName(Class.Java:264) ~[?:1.8.0_151]
        at org.elasticsearch.bootstrap.Natives.<clinit>(Natives.Java:45) [elasticsearch-6.1.0.jar:6.1.0]
        at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.Java:103) [elasticsearch-6.1.0.jar:6.1.0]
        at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.Java:171) [elasticsearch-6.1.0.jar:6.1.0]
        at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.Java:322) [elasticsearch-6.1.0.jar:6.1.0]
        at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.Java:121) [elasticsearch-6.1.0.jar:6.1.0]
        at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.Java:112) [elasticsearch-6.1.0.jar:6.1.0]
        at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.Java:86) [elasticsearch-6.1.0.jar:6.1.0]
        at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.Java:124) [elasticsearch-cli-6.1.0.jar:6.1.0]
        at org.elasticsearch.cli.Command.main(Command.Java:90) [elasticsearch-cli-6.1.0.jar:6.1.0]
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.Java:92) [elasticsearch-6.1.0.jar:6.1.0]
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.Java:85) [elasticsearch-6.1.0.jar:6.1.0]
[2017-12-14T11:25:39,212][WARN ][o.e.b.Natives            ] cannot check if running as root because JNA is not available
[2017-12-14T11:25:39,212][WARN ][o.e.b.Natives            ] cannot install system call filter because JNA is not available
[2017-12-14T11:25:39,215][WARN ][o.e.b.Natives            ] cannot register console handler because JNA is not available
[2017-12-14T11:25:39,256][WARN ][o.e.b.Natives            ] cannot getrlimit RLIMIT_NPROC because JNA is not available
[2017-12-14T11:25:39,256][WARN ][o.e.b.Natives            ] cannot getrlimit RLIMIT_AS beacuse JNA is not available
[2017-12-14T11:25:39,256][WARN ][o.e.b.Natives            ] cannot getrlimit RLIMIT_FSIZE because JNA is not available

どうすればこれを修正できますか? Javaをインストールしましたが、それはversion javac 1.8.0_151です。

私のコードで何がうまくいかない可能性がありますか? `

6
Gagantous

さて、私は解決策を見つけました。どうやら私のVMメモリストレージ(RAM)は1 GB-2 GBだったので、VMのRAM容量を少なくとも4GBに増やし、マシンを再起動します。そして、エラスティック検索は問題なく動作し始めました。

0
Gagantous
  1. /etc/sysconfig/elasticsearchに移動します
  2. ES_Java_OPTS="-Djna.tmpdir=/var/lib/elasticsearch/tmp"を追加します。

    (新しいElasticsearchの場合は、Djava.io.tmpdirの代わりにDjna.tmpdirを使用してください)

  3. systemctl start elasticsearchまたはservice start elasticsearchを使用してElasticsearchを開始します。
  4. /var/lib/elasticsearch/内に作成されたtmpフォルダを確認できます。
  5. このフォルダには、elasticsearchユーザーの実行権限が必要です
  6. 名前i -l /var/lib/elasticsearchで権限を確認してください
  7. 権限ファイルに以下のような権限があることを確認してください

    dr-xr-xr-x root          root          /
    drwxr-xr-x root          root          var
    drwxr-xr-x root          root          lib
    drwxr-x--- elasticsearch elasticsearch elasticsearch
    

問題が解決されることを願っています。

9
rajdeepbs29

/tmp/ディレクトリの権限を確認してください。 noexecがあったに違いありません。

/tmpは、JNAをサポートするためにexecが必要です。回避策は、elasticsearchsysconfigファイルでtmpディレクトリを指定することです。

export Java_OPTS="-Djava.io.tmpdir=$ES_HOME/tmp"のようなもの

$ES_HOME/tmpディレクトリがあり、elasticsearchユーザーがそのディレクトリへの書き込み権限を持っていることを確認してください。

強化されたOSを使用していたため、またデフォルトのumaskが0027であるため、この問題が発生しました。

5
deppfx

コマンドプロンプトから実行すると、Windows 1でも同じ問題が発生しました。

unable to load JNA native support library, native methods will be disabled.

これを解決するには、管理者権限でelasticsearch.exeを実行するだけで十分でした([スタート]をクリック-> [コマンド]と入力-> [コマンドプロンプト]を右クリック-> [名前を付けて実行]を選択管理者 ")

1
napets