Posting

Machbase의 최신 소식을 지금 만나보세요

[MACHBASE 기초] 도커 이미지 설치

다운로드에 소요되는 시간을 제외하면, 프로그램을 설치하고, 테스트하는데 가장 편한 방법이 도커를 사용하는 것이라고 생각합니다. 도커에 대한 자세한 사용법이나 설치법이 궁금하시다면 다음의 링크를 참고해 주세요

위에서 사용한 도커 버젼은 “17.06.0-ce” 입니다.

machbase@localhost:~$ docker --version 
Docker version 17.06.0-ce, build 02c1d87 

STEP 01. MACHBASE 이미지 다운로드

MACHBASE 도커 이미지 다운로드는 아래와 같이 매우 간단합니다. 최초로 다운로드 할 때는 꽤 많은 파일을 받아야 하지만, 업데이트할 떄는 일부만 받기 때문에 빠르게 진행할 수 있습니다.

machbase@localhost:~$ sudo docker pull machbase/machbase
Using default tag: latest
latest: Pulling from machbase/machbase
7ee37f181318: Pull complete 
df5ffabe5e97: Pull complete 
ae2040ed51a1: Pull complete 
3ce7010d244b: Pull complete 
2538b201d2a6: Pull complete 
7b2d7b983298: Pull complete 
e373e27d649c: Pull complete 
8723dd51b741: Pull complete 
67b38fb11afa: Pull complete 
08c0e916d620: Pull complete 
062b053f6c9a: Pull complete 
7d3330570ca9: Pull complete 
556b2dead613: Pull complete 
da803df15b5a: Pull complete 
d795743db7b8: Pull complete 
a7a11d9d1996: Pull complete 
468b283d8d33: Pull complete 
ac139db316f6: Pull complete 
e55f53aaa5c7: Pull complete 
bd74e4fa8b8b: Pull complete 
951a56f8e523: Pull complete 
2dec0c6abd8b: Pull complete 
1f783140bfaf: Pull complete 
3dc719fe2a8c: Pull complete 
4ef2fde43015: Pull complete 
Digest: sha256:9200aaf2de6e1695a57188fafd901a0a519d9deaeac66f0ba9274e9a13aba35d
Status: Downloaded newer image for machbase/machbase:latest

STEP 02. 도커 실행

아래는 실행 명령어로 도커를 실행한 것입니다. 콘솔에서 입력을 받기 때문에 -it 명령을 사용해서 수행해 주세요.

machbase@localhost:~$ docker run -it machbase/machbase
* Restarting OpenBSD Secure Shell server sshd [ OK ] 
-----------------------------------------------------------------
Machbase Administration Tool
Release Version - 3.5.0.826b8f2.official 
Copyright 2014, InfiniFlux Corp. or its subsidiaries
All Rights Reserved
-----------------------------------------------------------------
Waiting for Machbase server start.
Machbase server started successfully.
SERVER HAS BEEN RESET
SERVER STARTED, PID : 78
Connection URL : http://172.17.0.2:5001

STEP 03. machsql로 테스트

현재는 도커내부에서 새로운 쉘에 로그인한 상태이기 때문에 작업이나 가능합니다. 초기 ID와 PW는 다음과 같습니다. quit 명령어로 machsql을 종료할 수 있습니다.

  • ID : SYS
  • PW : MANAGER
machbase@15f5ed3f8c98:~$ machsql
=================================================================
Machbase Client Query Utility
Release Version 3.5.0.826b8f2.official
Copyright 2014 InfiniFlux Corporation or its subsidiaries.
All Rights Reserved.
=================================================================
Machbase server address (Default:127.0.0.1) : 
Machbase user ID (Default:SYS) 
Machbase User Password : 
MACHBASE_CONNECT_MODE=INET, PORT=5656
Type 'help' to display a list of available commands.
Mach> select * from m$tables;
NAME TYPE DATABASE_ID ID USER_ID COLCOUNT 
-------------------------------------------------------------------------------------------------------------------------------
M$SYS_COLLECTOR_COLUMNS 1 -1 1000049 0 11 
M$COLUMNS 1 -1 1000043 0 13 
M$SYS_COLUMNS 1 -1 1000042 0 13 
M$SYS_INDEX_COLUMNS 1 -1 1000045 0 9 
M$SYS_COLLECTOR_SOURCES 1 -1 1000050 0 7 
M$SYS_TABLESPACE_DISKS 1 -1 1000020 0 8 
M$SYS_COLLECTORS 1 -1 1000048 0 25 
M$SYS_TABLES 1 -1 1000038 0 8 
M$TABLES 1 -1 1000040 0 8 
M$SYS_INDEXES 1 -1 1000044 0 15 
M$SYS_USERS 1 -1 1000046 0 4 
M$SYS_TABLESPACES 1 -1 1000016 0 5 
M$SYS_COLLECTORMANAGERS 1 -1 1000047 0 7 
[13] row(s) selected.
Elapsed time: 0.000
Mach> quit

STEP 04. 로딩 테스트

내부 튜토리얼을 사용해서 데이터 로딩과 쿼리를 수행해 보겠습니다. 아래의 디렉토리로 이동을 해 주세요.

machbase@15f5ed3f8c98:~$ cd $MACHBASE_HOME/tutorials/csvload/
machbase@15f5ed3f8c98:~/machbase_home/tutorials/csvload$ ls -al
total 127696
drwxr-xr-x 2 machbase machbase 4096 Aug 3 03:08 .
drwxr-xr-x 10 machbase machbase 4096 Aug 3 03:08 ..
-rw-r--r-- 1 machbase machbase 246769 Aug 3 03:08 awards.csv
-rw-r--r-- 1 machbase machbase 259 Aug 3 03:08 create_sample2_table.sql
-rw-r--r-- 1 machbase machbase 231 Aug 3 03:08 create_sample_table.sql
-rwxr-xr-x 1 machbase machbase 60 Aug 3 03:08 load_awards.sh
-rwxr-xr-x 1 machbase machbase 486 Aug 3 03:08 load_sample.sh
-rwxr-xr-x 1 machbase machbase 474 Aug 3 03:08 load_sample2.sh
-rw-r--r-- 1 machbase machbase 130477124 Aug 3 03:08 sample_data.csv

준비된 스크립트인 load_sample.sh를 수행하면 자동으로 100만건의 데이터가 로딩됩니다. 100만건 로딩에 약 5.2초 걸렸습니다. 초당 약 20만건의 데이터를 처리한 것입니다.

machbase@15f5ed3f8c98:~/machbase_home/tutorials/csvload$ sh ./load_sample.sh 
+ machsql -s 127.0.0.1 -u sys -p manager -f create_sample_table.sql
=================================================================
Machbase Client Query Utility
Release Version 3.5.0.826b8f2.official
Copyright 2014 InfiniFlux Corporation or its subsidiaries.
All Rights Reserved.
=================================================================
MACHBASE_CONNECT_MODE=INET, PORT=5656
Type 'help' to display a list of available commands.
Mach> CREATE TABLE SAMPLE_TABLE
(
srcip IPV4,
srcport INTEGER,
dstip IPV4,
dstport INTEGER,
protocol SHORT,
eventlog VARCHAR(1204),
eventcode SHORT,
eventsize LONG
);
Created successfully.
Elapsed time: 0.093
+ csvimport -t sample_table -d sample_data.csv -a -F _arrival_time YYYY-MM-DD HH24:MI:SS
-----------------------------------------------------------------
Machbase Data Import/Export Utility.
Release Version 3.5.0.826b8f2.official
Copyright 2014, InfiniFlux Corporation or its subsidiaries.
All Rights Reserved.
-----------------------------------------------------------------
NLS : US7ASCII EXECUTE MODE : IMPORT 
TARGET TABLE : sample_table DATA FILE : sample_data.csv 
IMPORT_MODE : APPEND FILED TERM : , 
ROW TERM : \n ENCLOSURE : " 
ARRIVAL_TIME : TRUE ENCODING : NONE 
HEADER : FALSE CREATE TABLE : FALSE 
Progress bar Imported records Error records
1000000 0
Import time : 0 hour 0 min 5.172 sec 
Load success count : 1000000
Load fail count : 0

STEP 05. 쿼리 테스트

쿼리 테스트에 로딩 된 레코드 수는 select count(*) from sample_table; 명령을 통해 확인한 결과 총 1000000건입니다. 

Mach> select count(*) from sample_table;
count(*) 
-----------------------
1000000 
[1] row(s) selected.
Elapsed time: 0.000

sample_table 의 구조를 확인하기 위해 desc sample_table;를 수행했습니다.

Mach> desc sample_table;
[ COLUMN ]
----------------------------------------------------------------
NAME TYPE LENGTH
----------------------------------------------------------------
SRCIP ipv4 15
SRCPORT integer 11
DSTIP ipv4 15
DSTPORT integer 11
PROTOCOL short 6
EVENTLOG varchar 1204
EVENTCODE short 6
EVENTSIZE long 20

이번에는 DSTIP의 종류와 개수를 한번 세어보겠습니다.  SQL 구문은 select dstip, count(dstip) from sample_table group by dstip 입니다. 총 75 종류의 인터넷 주소가 들어있습니다. SQL 명령은0.224초 만에 수행 완료되었습니다.

Mach> select dstip, count(dstip) from sample_table group by dstip ;
dstip count(dstip)
----------------------------------------
148.30.103.173 13431
31.224.72.52 13310
5.114.66.53 13253
118.179.107.47 13206
....... 생략 ........
219.229.142.218 13353
210.174.159.227 13424
220.192.100.45 13015
159.240.209.63 13287
[75] row(s) selected.
Elapsed time: 0.224

다음으로 sorting으로 sample_table의 DSTIP에서 가장 많이 등장하는 숫자부터 10개를 출력해보겠습니다. 100만건 ip주소에 대한 간단한 통계 분석은 0.25초 정도 걸렸습니다. 

Mach> select dstip, count(dstip) from sample_table group by dstip order by 2 desc limit 10;
dstip count(dstip)
----------------------------------------
121.67.24.216 13560
123.198.82.192 13545
185.22.195.164 13515
248.168.229.34 13465
166.144.72.55 13454
6.32.167.53 13453
66.114.157.127 13450
153.70.151.135 13449
157.54.162.47 13449
245.13.24.17 13437
[10] row(s) selected.
Elapsed time: 0.253

STEP 06. 외부에서 도커로 SSH 접속

SSH와 같은 도구로 외부에서 접속해 보도록 하겠습니다. 먼저 자신의 IP주소를 확인해주세요.

machbase@15f5ed3f8c98:~/machbase_home/tutorials/csvload$ ifconfig
eth0 Link encap:Ethernet HWaddr 02:42:ac:11:00:02 
inet addr:172.17.0.2 Bcast:0.0.0.0 Mask:255.255.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:66 errors:0 dropped:0 overruns:0 frame:0
TX packets:1 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0 
RX bytes:11139 (11.1 KB) TX bytes:42 (42.0 B)

lo Link encap:Local Loopback 
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:12107 errors:0 dropped:0 overruns:0 frame:0
TX packets:12107 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0 
RX bytes:122322696 (122.3 MB) TX bytes:122322696 (122.3 MB)

현재 IP가 172.17.0.2로 잡혀 있습니다. ID와 PW는 다음과 같습니다. ssh로 접속합니다.

  • ID : machbase
  • PW : machbase
machbase@localhost:~$ ssh machbase@172.17.0.2
machbase@172.17.0.2's password: ********
Welcome to Ubuntu 14.04 LTS (GNU/Linux 4.4.0-83-generic x86_64)
* Documentation: https://help.ubuntu.com/
The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

수동으로 bash를 수행하면 다음과 같이 출력됩니다.

$ bash
machbase@15f5ed3f8c98:~$ env | grep MACH
MACHBASE_HOME=/home/machbase/machbase_home

지금부터는 도커를 로컬에서 실행한 것과 동일한 환경입니다.

STEP 07.  외부에서 도커로 MWA 접속하기

외부에서 도커로 MWA에 접속하기 위해서는 도커를 최초 실행할 때 나오는 도움말 URL로 접속해야 합니다.

machbase@localhost:~$ docker run -it machbase/machbase
......................생략.......................
Machbase server started successfully.
SERVER HAS BEEN RESET
SERVER STARTED, PID : 78
Connection URL : http://172.17.0.2:5001 <================= 여기

이제 웹 브라우저에서 위에서 나온 http://172.17.0.2:5001로 접속해 봅시다. 아래의 화면에서 ID와 PW를 입력해 주세요. 

  • ID : admin
  • PW : machbase

마치며

도커는 설치와 테스트에 있어서 편리한 환경을 제공해주는 훌륭한 도구입니다. 마크베이스 또한 도커 환경에서 성능의 큰 변화 없이 잘 구동됩니다. 운영 환경이 여의치 않다면 도커 환경에서 MACHBASE에서 사용하는 것도 좋을 것 같습니다.

연관 포스트

C언어로 Binary data를 Machbase에 넣기

1.개요 Data를 다루다 보면 numeric, varchar 형 데이터뿐만 아니라 JPG, PNG, MP3와 같은 Binary data도 database에 저장해야 할 때가 존재한다. 그러나 일반 data들과는 달리 Binary

[MACHBASE 연동] Android studio에서 JDBC 연결하기

마크베이스 기술지원본부 이현민 1. 개요 수많은 데이터들이 많은 환경에서 생성되고 있는 오늘날, 우리 현대인들의 동반자인 스마트폰 또한 데이터생성의 주체로써 또는 전달자로서 알게 모르게 그 구실을