Apache Cassandraの開発環境を構築する


概要

Apache Cassandraをソースからビルドして実行し、デバッグするところまで実施する手順を紹介します。
大まかには以下の流れです。

  1. CentOSサーバーのセットアップ
  2. ソースからCassandraをビルドする
  3. IntelliJでCassandraを実行・デバッグしてみる
  4. コミュニティに登録する

環境情報

Cassandraのビルドや実行は、CentOS7のサーバーで行います。そのため、virtualboxなどを用いて、CentOS7サーバを用意しておきます。Java 8もインストールしておきます。

  • OS:CentOS 7
  • Java 8
[shoshii@cassandra-1 cassandra]$ java -version
openjdk version "1.8.0_242"
OpenJDK Runtime Environment (build 1.8.0_242-b08)
OpenJDK 64-Bit Server VM (build 25.242-b08, mixed mode)

手順

1. CentOSサーバーのセットアップ

以下はCentOSサーバーでの作業です。

ant

antをインストールします。

RPMパッケージをダウンロード

$ curl -O http://mirror.centos.org/altarch/7/os/aarch64/Packages/ant-1.9.4-2.el7.noarch.rpm

インストール

$ rpm -ivh ant-1.9.4-2.el7.noarch.rpm

バージョン確認

$ ant -version
Apache Ant(TM) version 1.9.4 compiled on November 5 2018

xwindow

今回はIntelliJをCentOS上で稼働させたいので、xwindowをインストールします。

  1. $ sudo yum groupinstall -y "X Window System"
  2. $ sudo yum groupinstall -y "GNOME Desktop"
  3. $ sudo reboot

VNC Server

今回は、MacからCentOS7にリモートデスクトップ接続をするため、VNC Serverをインストールします。

$ sudo yum install -y tigervnc-server

デスクトップを起動します。

$ vncserver -geometry 1980x1080

Macから、リモートデスクトップで接続できるか確認します。

  • Finder -> 移動 -> サーバーへ接続 -> vnc://<CentOSのhost>:5901

注意:ポート番号は、起動しているリモートデスクトップサーバーの数に依ります。1つ目に起動したサーバーに接続する場合、ポート番号は5901になるようです。


注意:接続ができない場合、firewalldが有効になっている可能性があります。sudo systemctl status firewalldなどで状態確認後、セキュリティ上問題なければ停止・無効化します。

停止

$ sudo systemctl stop firewalld

無効化

$ sudo systemctl disable firewalld

IntelliJ IDEA

IntelliJ IDEA Community 版をインストールします。
MacではなくCentOSにインストールする点、ご注意ください

  1. CentOSサーバーのブラウザで、JetBrain ToolBoxサイトにアクセスし、ToolBoxの tar.gz(Linux)をダウンロード
  2. 上記の圧縮ファイルを解凍し、中身を実行
  3. IntelliJ IDEA Community Edition を installする。インストール後の状態:

2. ソースコードのビルドと実行

CentOSサーバーでの作業です。
CentOSのセットアップが済んだら、Cassandraのソースをダウンロードしビルドします。
Community doc developmentを参考にして実施していきます。

公式のリポジトリからクローンしてきます。

$ git clone https://gitbox.apache.org/repos/asf/cassandra.git cassandra

ブランチを確認してみます。

[shoshii@cassandra-1 cassandra]$ cd cassandra
[shoshii@cassandra-1 cassandra]$ git branch -a
* trunk
  remotes/origin/HEAD -> origin/trunk
  remotes/origin/cassandra-1.0
  remotes/origin/cassandra-1.1
  remotes/origin/cassandra-1.2
  remotes/origin/cassandra-2.0
  remotes/origin/cassandra-2.1
  remotes/origin/cassandra-2.2
  remotes/origin/cassandra-3.0
  remotes/origin/cassandra-3.11
  remotes/origin/cassandra-4.0
  remotes/origin/cassandra-4.0.0
  remotes/origin/trunk

今回は、バージョン4.0をターゲットにします。

[shoshii@cassandra-1 cassandra]$ git checkout cassandra-4.0
Branch cassandra-4.0 set up to track remote branch cassandra-4.0 from origin.
Switched to a new branch 'cassandra-4.0'
[shoshii@cassandra-1 cassandra]$ 

antでビルドします。

[shoshii@cassandra-1 cassandra]$ ant
Buildfile: /home/shoshii/qiita/cassandra/build.xml

validate-build-conf:
...
略
...
      [jar] Building jar: /home/shoshii/qiita/cassandra/build/tools/lib/fqltool.jar

BUILD SUCCESSFUL
Total time: 20 seconds
[shoshii@cassandra-1 cassandra]$ 

ant generate-idea-filesでIntelliJ 向けのファイルをビルドします。

[shoshii@cassandra-1 cassandra]$ ant generate-idea-files
Buildfile: /home/shoshii/qiita/cassandra/build.xml
...
略
...
BUILD SUCCESSFUL
Total time: 1 second
[shoshii@cassandra-1 cassandra]$ 

3. IntelliJでCassandraを実行・デバッグしてみる

MacからVNC接続でCentOSのデスクトップにアクセスします。

  • CentOSで実行:$ vncserver -geometry 1980x1080
  • Macで実行:Finder -> 移動 -> サーバーへ接続 -> vnc://<CentOSのhost>:5901

IntelliJを起動します。

  • アプリケーション -> プログラミング -> IntelliJ IDEA Community Edition

cloneしたcassandraのディレクトリをプロジェクトとして開きます。

  • ツールメニュー -> File -> Open -> git clone した cassandra ディレクトリ

Cassandraの実行

Cassandraを実行します。

  • ツールメニュー -> Run -> Run Cassandra

Cassandraに、クライアントツールで接続してみます。

1.CentOSサーバーにMacのターミナルやCentOSの端末でSSHログイン
2.Cassandraをcloneしたディレクトリに移動

[shoshii@cassandra-1 cassandra]$ pwd
/home/shoshii/qiita/cassandra

3.cqlsh起動

[shoshii@cassandra-1 cassandra]$ bin/cqlsh
Python 2.7 support is deprecated. Install Python 3.6+ or set CQLSH_NO_WARN_PY2 to suppress this message.

Connected to Test Cluster at 127.0.0.1:9042
[cqlsh 6.0.0 | Cassandra 4.0.1-SNAPSHOT | CQL spec 3.4.5 | Native protocol v5]
Use HELP for help.
cqlsh> 

起動中のCassandraに接続が成功しました。
cqlshは、Cassandraに各種コマンドを実行するためのクライアントツールです。データのselectやinsertもこのツールで行うことができます。

4.cqlshコマンド実行
試しに、desc keyspacesコマンドでキースペース一覧を表示してみます。

cqlsh> desc keyspaces;

system       system_distributed  system_traces  system_virtual_schema
system_auth  system_schema       system_views   test                 

cqlsh> 

Cassandraのデバッグ

次に、Cassandraをデバッグ実行します。

まず、先程起動したCassandraプロセスを停止します。
* ツールメニュー -> Run -> Stop Cassandra をクリックします

  • src/java/org/apache/cassandra/service/CassandraDaemon.java を開きます。このファイルには、Cassandraデーモンプロセスを起動する時の処理が書かれています。
  • setupメソッドの先頭にブレークポイントを入れてみます。
  • ツールメニュー -> Run -> Debug Cassandra をクリックします ステップ実行を開始できました。

4. コミュニティに登録する

Apache Cassandraのコミュニティに登録し、各種情報を受け取れるようにします。Cassandraを利用する上での質問をしたり、開発の議論に参加することもできます。

Community ページにアクセスし、MLに参加します

Slackチャネルもあるようですが、apache.orgドメインのメールアドレスがないと参加できない?ようです(調査中)

ML

  • User ML [email protected] へメール送信 -> 送信されてくるメールの案内に従い登録
  • Dev ML [email protected] へメール送信 -> 送信されてくるメールの案内に従い登録

参考

参考にさせていただいたページです。

以上です。