Cassandra on Docker为物联网数据存储准备 – Part1:单节点安装
我正在研究可用作物联网数据存储的时序数据库。开源的Blueflood和KairosDB以及商业物联网平台ThingWorx的后端都采用了Cassandra。
适用于物联网的时序数据库
在物联网中使用的时序数据库通常会使用Cassandra、MongoDB或HBase作为后端存储。对于商业用途,Realtime.co的BaaS会使用DynamoDB,而TempoIQ在过去被称为TempoDB,现在更换了公司名称并专注于面向企业的传感器数据分析服务。
-
- Blueflood
-
- KairosDB
-
- InfluxDB
-
- OpenTSDB
-
- Druid
-
- TempoIQ
- ThingWorx
斯波提(Spotify)/ 都卡(Docker-Cassandra)
我认为用于物联网数据存储的 Cassandra 数据库与 Docker 的相容性似乎很好,所以我想准备一个 Cassandra 的学习环境在 Docker 上。我将在 Docker Registry Hub 上寻找合适的 Docker 镜像。
-
- spotify/docker-cassandra
-
- poklet/cassandra
- abh1nav/docker-cassandra
有几个选项,但由于Luigi和Snakebite喜欢,所以我们将尝试使用Spotify的Docker镜像。Spotify使用Cassandra来个性化播放列表。
-
- Personalization at Spotify using Cassandra
- Spotify scales to the top of the charts with Apache Cassandra at 40k requests/second
核心操作系统主机 (Natively in Chinese: Natively in Chinese: 核心操作系统主机)
登录到CoreOS集群中的一台主机。如果不登录一段时间,版本会升级到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
单节点启动
我们将使用Spotify/docker-cassandra的Docker镜像。由于是初始的单节点启动,我们将直接用docker run命令启动,而不需要创建fleet的unit文件。
$ 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