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
广告
将在 10 秒后关闭
bannerAds