Cassandra tmpdir Standort ändern

Cassandra tmpdir Standort ändern

Cassandra kann nicht gestartet werden, wenn /tmpauf eingestellt ist noexec, was heutzutage so ziemlich die Standardeinstellung ist:

java.lang.NoClassDefFoundError: Could not initialize class com.sun.jna.Native
        at org.apache.cassandra.utils.memory.MemoryUtil.allocate(MemoryUtil.java:82) ~[apache-cassandra-2.2.2.jar:2.2.2]
        at org.apache.cassandra.io.util.Memory.<init>(Memory.java:74) ~[apache-cassandra-2.2.2.jar:2.2.2]
        at org.apache.cassandra.io.util.Memory.allocate(Memory.java:97) ~[apache-cassandra-2.2.2.jar:2.2.2]
        at org.apache.cassandra.io.sstable.IndexSummary$IndexSummarySerializer.deserialize(IndexSummary.java:323) ~[apache-cassandra-2.2.2.jar:2.2.2]
        at org.apache.cassandra.io.sstable.format.SSTableReader.loadSummary(SSTableReader.java:836) ~[apache-cassandra-2.2.2.jar:2.2.2]
        at org.apache.cassandra.io.sstable.format.SSTableReader.load(SSTableReader.java:692) ~[apache-cassandra-2.2.2.jar:2.2.2]
        at org.apache.cassandra.io.sstable.format.SSTableReader.load(SSTableReader.java:664) ~[apache-cassandra-2.2.2.jar:2.2.2]
        at org.apache.cassandra.io.sstable.format.SSTableReader.open(SSTableReader.java:458) ~[apache-cassandra-2.2.2.jar:2.2.2]
        at org.apache.cassandra.io.sstable.format.SSTableReader.open(SSTableReader.java:363) ~[apache-cassandra-2.2.2.jar:2.2.2]
        at org.apache.cassandra.io.sstable.format.SSTableReader$4.run(SSTableReader.java:501) ~[apache-cassandra-2.2.2.jar:2.2.2]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[na:1.8.0_102]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[na:1.8.0_102]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) ~[na:1.8.0_102]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_102]
        at java.lang.Thread.run(Thread.java:745) [na:1.8.0_102]

Wenn ich die noexecFlagge von der /var/tmpHalterung entferneKassandrastartet ordnungsgemäß. Ich habe verschiedene Methoden ausprobiert, um den Speicherort des temporären Verzeichnisses in der cassandra-env.shDatei zu ändern:

JVM_OPTS="$JVM_OPTS -Djna.tmpdir=/home/cassandra/tmp"
JVM_OPTS="$JVM_OPTS -Djava.io.tmpdir=/home/cassandra/tmp"
JVM_OPTS="$JVM_OPTS -Dorg.xerial.snappy.tempdir=/home/cassandra/tmp"

Ich habe diese natürlich nicht alle auf einmal verwendet. Dies sind Lösungen, die ich im Internet gefunden habe, aber keine scheint zu funktionieren. Ich habe sogar versucht, TMPDIRam Anfang der cassandra-env.shDatei zu exportieren, aber ohne Erfolg. Es schlägt immer mit derselben Meldung fehl.

/tmpIch denke, es ist aus Sicherheitsgründen keine gute Idee, das Flag „noexec“ wegzulassen . Mir fehlt hier offensichtlich etwas Grundlegendes. Wie stelle ich das temporäre Verzeichnis /home/cassandra/tmpoder etwas Ähnliches ein?

Antwort1

Ah, sieht aus wiebeideOptionen müssen in der cassandra-env.shDatei vorhanden sein:

JVM_OPTS="$JVM_OPTS -Djna.tmpdir=/home/cassandra/tmp"
JVM_OPTS="$JVM_OPTS -Djava.io.tmpdir=/home/cassandra/tmp"

Antwort2

Ich musste der Datei auch eine TMPDIR-Umgebungsvariable hinzufügen cassandra-env.sh. Beispiel:

export TMPDIR=/home/cassandra/tmp

verwandte Informationen