Cassandra インストール (Single-Node)

## 本記事の想定オーディエンスと目的
Cassandra を初めてインストールする人．
私自身が，最もシンプルな Single-Node のインストールで躓いたので，初めての方のお助けになればと思いました．
同趣向の記事は日本語・英語ともに数本ありますが，バージョンや環境の違いによる影響で，2017年11月時点では，そのままだと上手くいかないようです．
（逆に本記事も，近い将来，無用になると予想されますが，少なくとも現時点で，スムーズにインストールできる内容を書き記したいと思います）

## 環境
新規に構築した VirtualBox 上の CentOS-7 仮想マシンを想定します．
使用する Cassandra のバージョンは現時点の最新 3.11.1 です．こちらが Java 9 に未対応ですので，Java 8 を使用するのが肝要です（私は Java 9 を使用してハマりました）

詳細は以下の通りです．
Windows 10
VirtualBox 5.1.28
CentOS-7-x86_64-Minimal-1611
Java SE 8u151 (jdk1.8.0_151)
apache-cassandra-3.11.1

## 参考にしたサイト

主に以下の 2つの英文サイトを参考にしました．

[How To Install Cassandra and Run a Single-Node Cluster On a Ubuntu VPS](https://www.digitalocean.com/community/tutorials/how-to-install-cassandra-and-run-a-single-node-cluster-on-a-ubuntu-vps)
2013年の記事です．

[Cassandra Tutorial](https://www.tutorialspoint.com/cassandra/cassandra_installation.htm)
書かれた時期は不明ですがさらに古いようです．
無事インストールに成功後は，よいチュートリアルだと思います．

# 1. Java 8 インストール
※Java 9 をインストールすると Cassandra が起動しませんのでご注意ください．

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

ご自身の環境に合ったものをローカル PC にダウンロードします．
私は jdk-8u151-linux-x64.tar.gz をダウンロードしました．

仮想マシンにこの .tar.gz を格納するための適当なディレクトリを作成します（私は root 直下に temp を作成しました）

```
# mkdir ~/temp/
```
WinSCP などでここに先ほどダウンロードした .tar.gz を格納し，解凍します．

```
# cd ~/temp/
# tar zxvf jdk-8u151-linux-x64.tar.gz
```

解凍した JDK を /usr/local/ 下に移します（ディレクトリ名は /java/）

```
# mv jdk1.8.0_151 /usr/local/java/
```

パスを通します．/etc/profile をエディタで開いて

```
# vi /etc/profile
```

以下を profile の最後に記述．

```
JAVA_HOME=/usr/local/java/jdk1.8.0_151
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
JRE_HOME=/usr/local/java/jdk1.8.0_151
PATH=$PATH:$HOME/bin:$JRE_HOME/bin
export JAVA_HOME
export JRE_HOME
export PATH
```
Java Alternatives を設定します．

```
# update-alternatives --install "/usr/bin/java" "java" "/usr/local/java/jdk1.8.0_151/bin/java" 1
# update-alternatives --install "/usr/bin/javac" "javac" "/usr/local/java/jdk1.8.0_151/bin/javac" 1
# update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/local/java/jdk1.8.0_151/bin/javaws" 1
# update-alternatives --set java /usr/local/java/jdk1.8.0_151/bin/java
# update-alternatives --set javac /usr/local/java/jdk1.8.0_151/bin/javac
# update-alternatives --set javaws /usr/local/java/jdk1.8.0_151/bin/javaws

```
仮想マシンを再起動．

```
# reboot
```
# 2. Cassandra インストール

オフィシャルサイトからのミラーサイトから apache-cassandra-3.11.1-bin.tar.gz をダウンロードします．

http://www.apache.org/dyn/closer.lua/cassandra/3.11.1/apache-cassandra-3.11.1-bin.tar.gz

先ほど作成した仮想マシンの /temp/ ディレクトリに，WinSCP などで .tar.gz を格納し，解凍します．

```
# cd ~/temp/
# tar zxvf apache-cassandra-3.11.1-bin.tar.gz
```
解凍した Cassandra を /etc/ 下に移します（ディレクトリ名は /cassandra/）

```
# mv apache-cassandra-3.11.1 /etc/cassandra/
```
ログ等に使用するフォルダを作成し，書込み権限を付与します．

```
# mkdir /var/lib/cassandra/
# mkdir /var/log/cassandra/
# chmod 777 /var/lib/cassandra/
# chmod 777 /var/log/cassandra/
```
パスを通します．/etc/profile をエディタで開いて

```
# vi /etc/profile
```
以下を profile の最後に記述．

```
export CASSANDRA_HOME=/etc/cassandra
export PATH=$PATH:$CASSANDRA_HOME/bin
```
再起動．

```
# reboot
```
# 3. Cassandra 作業用のユーザを作成し起動へ

root user のまま Cassandra を起動しようとすると下記メッセージが出ますので，別にユーザを作ります．

```
Running Cassandra as root user or group is not recommended - please start Cassandra using a different system user.
If you really want to force running Cassandra as root, use -R command line option.
```
```
# useradd user
```
/etc/cassandra/ ディレクトリにアクセス権を付与．

```
# chmod -R 777 /etc/cassandra/
```
ユーザ変更．

```
# su user
$ cassandra -f
```
これで起動します（停止は Ctrl + c)

セッションを複製し，ユーザを変更し，CQL シェルを起動．

```
# su user
$ cqlsh
```
CQL シェルが下記の通り起動すれば，インストールと起動に成功しています．

```
[hadoop@localhost root]$ cqlsh
Connected to Test Cluster at 127.0.0.1:9042.
[cqlsh 5.0.1 | Cassandra 3.11.1 | CQL spec 3.4.4 | Native protocol v4]
Use HELP for help.
cqlsh>
```