LoginSignup
12
12

More than 5 years have passed since last update.

Cassandra on DockerでIoT用データストアを用意する - Part1: Single Nodeインストール

Posted at

IoT用のデータストアとして使える時系列データベースを調査しています。オープンソースのBluefloodKairosDBや、商用IoTプラットフォームのThingWorxのバックエンドにCassandraが採用されています。

IoTに適した時系列データベース

IoT用の時系列データベースはバックエンドにCassandraやMongoDB、HBaseを使うケースが多いようです。商用だとRealtime.coのBaaSはDynamoDBを、TempoIQは以前TempoDBと呼ばれていましたが、社名を変えエンタープライズ向けのセンサーデータ解析に特化したサービスになりました。

spotify/docker-cassandra

IoT用のデータストアにはCassandraベースだと相性が良さそうな気がするので、DockerにCassandraの学習環境を用意しようと思います。Docker Registry Hubで良さそうなDockerイメージを探します。

いくつか見つかりましたが、LuigiSnakebiteが気に入っているので、SpotifyのDockerイメージを使ってみます。SpotifyではプレイリストのパーソナライゼーションにCassandraを使っています。

CoreOSホスト

CoreOSクラスタの1台にログインします。しばらくログインしないでいるとバージョンが522.4.0に上がっていました。

$ cat /etc/os-release
NAME=CoreOS
ID=coreos
VERSION=522.4.0
VERSION_ID=522.4.0
BUILD_ID=
PRETTY_NAME="CoreOS 522.4.0"
ANSI_COLOR="1;32"
HOME_URL="https://coreos.com/"
BUG_REPORT_URL="https://github.com/coreos/bugs/issues"

Dockerのバージョンは1.3.3です。

$ docker -version
docker version
Client version: 1.3.3
Client API version: 1.15
Go version (client): go1.3.2
Git commit (client): 54d900a
OS/Arch (client): linux/amd64
Server version: 1.3.3
Server API version: 1.15
Go version (server): go1.3.2
Git commit (server): 54d900a

Single Node起動

spotify/docker-cassandraのDockerイメージを使います。最初のSingle Node起動なので、fleetのunitファイルは作成せずに直接docker runで起動します。

$ docker run -d  --name cassandra spotify/cassandra

docker psで起動を確認します。

$ docker ps|head -2
CONTAINER ID        IMAGE                                       COMMAND                CREATED             STATUS              PORTS                                                                           NAMES
f955a0d522ce        spotify/cassandra:latest                    "cassandra-singlenod   44 seconds ago      Up 44 seconds       7001/tcp, 7199/tcp, 8012/tcp, 9042/tcp, 9160/tcp, 22/tcp, 61621/tcp, 7000/tcp   cassandra                                                                                 cassandra

docker execからコンテナのbashを起動して、Cassandraの動作確認をします。

$ docker exec -it cassandra /bin/bash

cassandra-cliの確認

Cassandraクライアントのcassandra-cliを起動します。Cassandraのバージョンは2.0.10です。

$ cassandra-cli
Connected to: "Test Cluster" on 127.0.0.1/9160
Welcome to Cassandra CLI version 2.0.10

The CLI is deprecated and will be removed in Cassandra 3.0.  Consider migrating to cqlsh.
CQL is fully backwards compatible with Thrift data; see http://www.datastax.com/dev/blog/thrift-to-cql3

Type 'help;' or '?' for help.
Type 'quit;' or 'exit;' to quit.

[default@unknown]

RDBのデータベース相当のキースペースを確認します。

[default@unknown] show keyspaces;
...
Keyspace: system_traces:
  Replication Strategy: org.apache.cassandra.locator.SimpleStrategy
  Durable Writes: true
    Options: [replication_factor:2]
  Column Families:

cqlshの確認

SQLライクに問い合わせができるCQLの確認をします。

$ cqlsh
Connected to Test Cluster at localhost:9160.
[cqlsh 4.1.1 | Cassandra 2.0.10 | CQL spec 3.1.1 | Thrift protocol 19.39.0]
Use HELP for help.
cqlsh>

キースペースを確認します。

cqlsh> DESCRIBE keyspaces;

system  system_traces

CQLにはCREATE TABLEで定義できるテーブルがあります。

cqlsh> DESCRIBE tables;

Keyspace system
---------------
IndexInfo                hints        range_xfers            sstable_activity
NodeIdInfo               local        schema_columnfamilies
batchlog                 paxos        schema_columns
compaction_history       peer_events  schema_keyspaces
compactions_in_progress  peers        schema_triggers

Keyspace system_traces
----------------------
events  sessions
12
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
12