
on Docker에서 IoT용 데이터스토어 준비 - Part1: Single Node 설치
2022-10-04 last update
8 minutes reading 시계열 데이터베이스 카산드라 도커 IoT CoreOSIoT용 데이터스토어로 사용할 수 있는 시계열 데이터베이스를 조사하고 있습니다. 오픈 소스 Blueflood 및 KairosDB와 상용 IoT 플랫폼의 ThingWorx 백엔드에 Cassandra가 채용되고 있습니다.
IoT용 시계열 데이터베이스는 백엔드에 Cassandra나 MongoDB, HBase를 사용하는 경우가 많은 것 같습니다. 상용이라면 희귀 한 지목. 이 의 BaaS는 DynamoDB 를, TempoIQ 는 이전 TempoDB 라고 불렸지만, 회사명을 바꾸어 엔터프라이즈용 센서 데이터 분석에 특화한 서비스가 되었습니다.
Blueflood KairosDB InfluxDB OpenTSDB Druid TempoIQ ThingWorx
IoT용 데이터스토어에는 Cassandra 기반이라면 궁합이 좋을 것 같은 생각이 들기 때문에, Docker에 Cassandra의 학습 환경을 준비하려고 합니다. 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
CoreOS 클러스터 중 하나에 로그인합니다. 잠시 로그인하지 않으면 버전이
Docker 버전은
spotify/docker-cassandra 의 Docker 이미지를 사용합니다. 최초의 Single Node 기동이므로, fleet의 unit 파일은 작성하지 않고 직접
Cassandra 클라이언트의 cassandra-cli를 시작합니다. Cassandra 버전은
RDB의 데이터베이스에 해당하는 키스페이스를 확인합니다.
SQL라이크에 문의할 수 있는 CQL을 확인합니다.
키스페이스를 확인합니다.
CQL에는
IoT에 적합한 시계열 데이터베이스
IoT용 시계열 데이터베이스는 백엔드에 Cassandra나 MongoDB, HBase를 사용하는 경우가 많은 것 같습니다. 상용이라면 희귀 한 지목. 이 의 BaaS는 DynamoDB 를, TempoIQ 는 이전 TempoDB 라고 불렸지만, 회사명을 바꾸어 엔터프라이즈용 센서 데이터 분석에 특화한 서비스가 되었습니다.
spotify/docker-cassandra
IoT용 데이터스토어에는 Cassandra 기반이라면 궁합이 좋을 것 같은 생각이 들기 때문에, Docker에 Cassandra의 학습 환경을 준비하려고 합니다. Docker Registry Hub 에서 좋은 Docker 이미지를 찾습니다.
몇 가지를 발견했지만 Luigi 또는 Snakebite가 마음에 들었으므로 Spotify의 Docker 이미지를 사용해보십시오. Spotify는 재생 목록 개인화에 Cassandra를 사용합니다.
CoreOS 호스트
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
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.
[[email protected]]
RDB의 데이터베이스에 해당하는 키스페이스를 확인합니다.
[[email protected]] 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