Apache Cassandraは、大量のデータを処理するように設計された、オープンソースのワイドカラムストアNoSQLデータベース管理システムです。 Cassandraを多数のサーバーに分散して、単一障害点のない高可用性を実現できます。一般に、オンライントランザクションアプリケーションのリアルタイム運用データストアとして、また大規模システムの読み取り集約型データベースとして機能するために使用されます。現在、Netflix、Digg、Adobe、Twitter、HP、IBM、Rackspace、Cisco、Redditなどの多くの組織で使用されています。
このガイドでは、ApacheCassandraをOracleLinux8にインストールする方法について説明します。
前提条件
- Atlantic.NetCloudPlatformでOracleLinux8を実行しているサーバー
- サーバーで構成されているrootパスワード
ステップ1-Atlantic.Netクラウドサーバーを作成する
まず、Atlantic.Netクラウドサーバーにログインします。 4GB以上のRAMを搭載したオペレーティングシステムとしてOracleLinuxを選択して、新しいサーバーを作成します。 SSH経由でクラウドサーバーに接続し、ページの上部で強調表示されているクレデンシャルを使用してログインします。
サーバーにログインしたら、次のコマンドを実行して、ベースシステムを最新の利用可能なパッケージで更新します。
dnf update -y
ステップ2–Java8をインストールする
dnf install epel-release python2 python2-pip java-1.8.0-openjdk -y
インストール後、次のコマンドを使用してJavaのインストールを確認します。
java -version
次の出力でJavaバージョンを取得します。
openjdk version "1.8.0_332" OpenJDK Runtime Environment (build 1.8.0_332-b09) OpenJDK 64-Bit Server VM (build 25.332-b09, mixed mode)
次に、cqlshコマンドラインユーティリティをインストールして、コマンドライン経由でCassandraに接続します。
pip2 install cqlsh
ステップ3–ApacheCassandraをインストールする
nano /etc/yum.repos.d/cassandra.repo
次の行を追加します:
[cassandra] name=Apache Cassandra baseurl=https://www.apache.org/dist/cassandra/redhat/40x/ gpgcheck=1 repo_gpgcheck=1 gpgkey=https://www.apache.org/dist/cassandra/KEYS
完了したらファイルを保存して閉じ、次のコマンドを使用してApacheCassandraをインストールします。
dnf install cassandra -y
ステップ4–Cassandraのサービスファイルを作成する
systemdを介してApacheCassandraサービスを管理するためのサービスファイルを作成することをお勧めします。次のコマンドで作成できます:
nano /etc/systemd/system/cassandra.service
次の行を追加します:
[Unit] Description=Apache Cassandra After=network.target [Service] PIDFile=/var/run/cassandra/cassandra.pid User=cassandra Group=cassandra ExecStart=/usr/sbin/cassandra -f -p /var/run/cassandra/cassandra.pid Restart=always [Install] WantedBy=multi-user.target
ファイルを保存して閉じてから、systemdデーモンをリロードして変更を適用します。
systemctl daemon-reload
次に、次のコマンドを使用してCassandraサービスを開始して有効にします。
systemctl start cassandra systemctl enable cassandra
Apache Cassandraのステータスを確認するには、次のコマンドを実行します。
systemctl status cassandra
次の出力が表示されます。
● cassandra.service - Apache Cassandra Loaded: loaded (/etc/systemd/system/cassandra.service; disabled; vendor preset: disabled) Active: active (running) since Sat 2022-04-30 07:54:46 EDT; 15s ago Main PID: 2170 (java) Tasks: 23 (limit: 23694) Memory: 1.1G CGroup: /system.slice/cassandra.service └─2170 /usr/bin/java -ea -da:net.openhft... -XX:+UseThreadPriorities -XX:+HeapDumpOnOutOfMemoryError -Xss256k -XX:+AlwaysPreTouch > Apr 30 07:55:00 oraclelinux cassandra[2170]: INFO [main] 2022-04-30 07:55:00,318 CassandraDaemon.java:640 - Classpath: /etc/cassandra/conf:/> Apr 30 07:55:00 oraclelinux cassandra[2170]: INFO [main] 2022-04-30 07:55:00,319 CassandraDaemon.java:642 - JVM Arguments: [-ea, -da:net.ope> Apr 30 07:55:00 oraclelinux cassandra[2170]: WARN [main] 2022-04-30 07:55:00,405 NativeLibrary.java:201 - Unable to lock JVM memory (ENOMEM)> Apr 30 07:55:00 oraclelinux cassandra[2170]: INFO [main] 2022-04-30 07:55:00,569 MonotonicClock.java:202 - Scheduling approximate time conve> Apr 30 07:55:00 oraclelinux cassandra[2170]: INFO [main] 2022-04-30 07:55:00,577 MonotonicClock.java:338 - Scheduling approximate time-check> Apr 30 07:55:00 oraclelinux cassandra[2170]: WARN [main] 2022-04-30 07:55:00,585 StartupChecks.java:143 - jemalloc shared library could not > Apr 30 07:55:00 oraclelinux cassandra[2170]: WARN [main] 2022-04-30 07:55:00,585 StartupChecks.java:187 - JMX is not enabled to receive remo> Apr 30 07:55:00 oraclelinux cassandra[2170]: INFO [main] 2022-04-30 07:55:00,590 SigarLibrary.java:44 - Initializing SIGAR library Apr 30 07:55:00 oraclelinux cassandra[2170]: WARN [main] 2022-04-30 07:55:00,603 SigarLibrary.java:174 - Cassandra server running in degrade> Apr 30 07:55:00 oraclelinux cassandra[2170]: WARN [main] 2022-04-30 07:55:00,604 StartupChecks.java:329 - Maximum number of memory map areas>
ステップ5–ApacheCassandraを確認する
Apache Cassandraが完全に起動するまでしばらく待ってから、次のコマンドを使用してApacheCassandraを確認します。
nodetool status
次のエラーが発生します:
nodetool: Failed to connect to '127.0.0.1:7199' - URISyntaxException: 'Malformed IPv6 address at index 7: rmi://[127.0.0.1]:7199'.
このエラーを解決するには、nodetoolの実行時に「レガシー」解析フラグを追加します。
nodetool -Dcom.sun.jndi.rmiURLParsing=legacy status
次の出力が得られるはずです:
Datacenter: datacenter1 ======================= Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 127.0.0.1 69.06 KiB 16 100.0% 91f2092e-f428-40f8-8093-efe820abe917 rack1
次に、cqlshユーティリティを使用してCassandraシェルに接続します。
cqlsh
接続すると、次の出力が表示されます。
Connected to Test Cluster at 127.0.0.1:9042 [cqlsh 6.0.0 | Cassandra 4.0.3 | CQL spec 3.4.5 | Native protocol v5] Use HELP for help. cqlsh>にHELPを使用します
ステップ6–Cassandraクラスター名を変更する
cqlsh
次に、次のコマンドでクラスター名を変更します。
cqlsh> UPDATE system.local SET cluster_name = 'Atlantic Cluster' WHERE KEY = 'local';
次に、次のコマンドを使用してCassandraシェルを終了します。
cqlsh> exit
次に、Apache Cassandraのメイン構成ファイルを編集し、新しいクラスター名を定義します。
nano /etc/cassandra/default.conf/cassandra.yaml
以下に示すように、Cassandraクラスター名を変更します。
cluster_name: 'Atlantic Cluster'
ファイルを保存して閉じ、Apache Cassandraを再起動して変更を適用します:
systemctl restart cassandra
次に、次のコマンドを使用してCassandraクラスター名を確認します。
cqlsh
次の出力で新しいクラスター名を取得する必要があります:
Connected to Atlantic Cluster at 127.0.0.1:9042 [cqlsh 6.0.0 | Cassandra 4.0.3 | CQL spec 3.4.5 | Native protocol v5] Use HELP for help.
結論
上記のガイドでは、ApacheCassandraをOracleLinux 8にインストールする方法を説明しました。これで、ApacheCassandraを使用して大規模なデータセットを処理および管理できるようになりました。 Atlantic.NetのVPSホスティングを試してみてください!