Java 지원

Java 지원 (Support for Java)

Apache Cassandra를 컴파일하고 실행하기 위한 Java 버전의 지원 매트릭스는 표 1에 상세히 나와 있어요. 빌드 버전은 세로 축이고 실행 버전은 가로 축이에요.

출처: Support for Java

본문

Java 지원 매트릭스 Java 11 (Run) Java 17 (Run)
Java 11 (Build) 지원 지원
Java 17 (Build) 지원 안 함 CI에서 실험적

Java 17로 빌드된 Apache 5.0 소스 코드는 Java 11로 실행할 수 없어요. 모든 바이너리 릴리스는 Java 11로 빌드돼요.

Java 11로 빌드하기

먼저 Java 11을 설치해요. 예를 들어 RedHat Linux에 Java 11을 설치하는 명령은 다음과 같아요.

$ sudo yum install java-11-openjdk

환경 변수 JAVA_HOMEPATH를 설정해요.

$ export JAVA_HOME=/usr/lib/jvm/java-11-openjdk
$ export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

Git에서 Apache Cassandra 5.0 소스 코드를 의존성과 함께 다운로드하고 설치해요.

$ git clone https://github.com/apache/cassandra.git

Cassandra가 이미 실행 중이라면 다음 명령으로 Cassandra를 중지해요.

$ ./nodetool stopdaemon

build.xml 빌드 스크립트가 있는 cassandra 디렉터리에서 소스 코드를 빌드해요. Apache Ant는 JAVA_HOME 환경 변수에 설정된 Java 버전을 사용해요.

$ cd ~/cassandra
$ ant

Apache Cassandra 5.0이 Java 11로 빌드돼요. bash 스크립트에서 CASSANDRA_HOME 환경 변수를 설정해요. 또한 PATH 변수에 CASSANDRA_HOME/bin을 추가해요.

$ export CASSANDRA_HOME=~/cassandra
$ export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$CASSANDRA_HOME/bin

Java 11 또는 Java 17 중 어느 것으로든 Apache Cassandra 5.0을 실행하려면, PATH 환경 변수에 있는 CASSANDRA_HOME/bin 디렉터리에서 Cassandra 애플리케이션을 실행해요.

$ cassandra

Cassandra를 실행하는 데 사용된 Java 버전은 Cassandra가 시작될 때 출력돼요. 예를 들어 Java 11을 사용하면 실행 출력에 다음과 유사한 출력 스니펫이 포함되어야 해요.

INFO  [main] 2019-07-31 21:18:16,862 CassandraDaemon.java:480 - Hostname: ip-172-30-3-
146.ec2.internal:7000:7001
INFO  [main] 2019-07-31 21:18:16,862 CassandraDaemon.java:487 - JVM vendor/version: OpenJDK
64-Bit Server VM/11.0.3
INFO  [main] 2019-07-31 21:18:16,863 CassandraDaemon.java:488 - Heap size:
1004.000MiB/1004.000MiB

다음 출력은 단일 노드 Cassandra 5.0 클러스터가 시작되었음을 나타내요.

INFO  [main] 2019-07-31 21:18:19,687 InboundConnectionInitiator.java:130 - Listening on
address: (127.0.0.1:7000), nic: lo, encryption: enabled (openssl)
...
...
INFO  [main] 2019-07-31 21:18:19,850 StorageService.java:512 - Unable to gossip with any
peers but continuing anyway since node is in its own seed list
INFO  [main] 2019-07-31 21:18:19,864 StorageService.java:695 - Loading persisted ring state
INFO  [main] 2019-07-31 21:18:19,865 StorageService.java:814 - Starting up server gossip
INFO  [main] 2019-07-31 21:18:20,088 BufferPool.java:216 - Global buffer pool is enabled,
when pool is exhausted (max is 251.000MiB) it will allocate on heap
INFO  [main] 2019-07-31 21:18:20,110 StorageService.java:875 - This node will not auto
bootstrap because it is configured to be a seed node.
...
...
INFO  [main] 2019-07-31 21:18:20,809 StorageService.java:1507 - JOINING: Finish joining ring
INFO  [main] 2019-07-31 21:18:20,921 StorageService.java:2508 - Node 127.0.0.1:7000 state
jump to NORMAL

Java 17로 빌드하기

Java 17로 Apache Cassandra 5.0을 빌드한다면, 먼저 Java 17을 설치하고 환경 변수를 설정해야 해요. 예를 들어 RedHat Linux에 Java 17을 다운로드하고 설치하려면 다음 명령을 실행해요.

$ yum install java-17-openjdk

환경 변수 JAVA_HOMEPATH를 설정해요.

$ export JAVA_HOME=/usr/lib/jvm/java-11-openjdk
$ export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

일반적인 문제 (Common Issues)

Java 17로 빌드된 Apache Cassandra 5.0 소스 코드는 Java 17에서만 실행할 수 있어요. Java 17로 빌드된 코드를 Java 11로 실행하면 다음 오류 메시지가 출력돼요.

$ export JAVA_HOME=/usr/lib/jvm/java-11-openjdk
$ export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

더 알아보기 (Learn more)