Ubuntu는 데비안 계열 리눅스 중 가장 많이 사용되는 OS입니다. 이번에는 RPM 패키지에 이어 DEB 패키지로 Ubuntu에 MACHBASE를 설치하는 방법 소개해 드리겠습니다. 설치 환경은 다음과 같습니다.
- CPU : Intel(R) Xeon(R) CPU E5-2690 v4 @ 2.60GHz
- Memory : 8GB
- OS : Ubuntu 14.04
MACHBASE 홈페이지에서 다운로드를 신청하면 최신 버전의 다운로드 링크를 받으실 수 있습니다.
STEP 01. 설치
deb 패키지는 sudo dpkg -i
로 설치를 수행합니다.
sudo dpkg -i machbase-community-3.5.0.826b8f2.community-LINUX-X86-64-release.deb machbase@mb:~$ sudo dpkg -i machbase-community-3.5.0.826b8f2.community-LINUX-X86-64-release.deb Selecting previously unselected package machbase. (데이터베이스 읽는중 …현재 1124024개의 파일과 디렉터리가 설치되어 있습니다.) Preparing to unpack machbase-community-3.5.0.826b8f2.community-LINUX-X86-64-release.deb … Unpacking machbase (3.5.0) … machbase (3.5.0) 설정하는 중입니다 … Create database —————————————————————– Machbase Administration Tool Release Version – 3.5.0.826b8f2.community Copyright 2014, InfiniFlux Corp. or its subsidiaries All Rights Reserved —————————————————————– Database created successfully. Ulimit check 65536 PASS Machbase startup —————————————————————– Machbase Administration Tool Release Version – 3.5.0.826b8f2.community Copyright 2014, InfiniFlux Corp. or its subsidiaries All Rights Reserved —————————————————————– Waiting for Machbase server start. Machbase server started successfully. MWA startup SERVER HAS BEEN RESET SERVER STARTED, PID : 26907 Connection URL : http://192.168.0.148:5001 Machbase has been installed in : /opt/machbase/ To start Machbase, run the command : service machbased start To change server port, run the command : service machbased port To use interactive SQL, execute : machsql Documentation is available at http://www.machbase.com/document Processing triggers for ureadahead (0.100.0-16) … |
간편하게 한번에 설치가 완료되었습니다. /opt/machbase/current 디렉토리에 설치가 되었고, 각 디렉토리의 세부 내용은 다음과 같습니다. 심볼릭 링크로 각기 버전에 다시 설치하게 됩니다.
machbase@mb:~$ ls -al /usr/bin/machsql lrwxrwxrwx 1 root root 33 8월 3 18:14 /usr/bin/machsql -> /opt/machbase/current/bin/machsql machbase@mb:~$ ls -al /opt/machbase/current lrwxrwxrwx 1 root root 28 8월 3 18:14 /opt/machbase/current -> /opt/machbase/versions/3.5.0 machbase@mb:~$ ls -al /opt/machbase/versions/3.5.0/ 합계 64 drwxrwxr-x 16 machbase machbase 4096 8월 3 18:14 . drwxrwxr-x 3 machbase machbase 4096 8월 3 18:14 .. drwxrwxr-x 3 machbase machbase 4096 8월 3 18:14 3rd-party drwxrwxr-x 2 machbase machbase 4096 8월 3 18:14 bin drwxrwxr-x 6 machbase machbase 4096 8월 3 18:14 collector drwxrwxr-x 2 machbase machbase 4096 8월 3 18:14 conf drwxrwxr-x 3 machbase machbase 4096 8월 3 18:16 dbs drwxrwxr-x 3 machbase machbase 4096 8월 3 18:14 doc drwxrwxr-x 2 machbase machbase 4096 8월 3 18:14 include drwxrwxr-x 2 machbase machbase 4096 8월 3 18:14 install drwxrwxr-x 2 machbase machbase 4096 8월 3 18:14 lib drwxrwxr-x 2 machbase machbase 4096 8월 3 12:52 meta drwxrwxr-x 9 machbase machbase 4096 8월 3 18:14 sample drwxrwxr-x 2 machbase machbase 4096 8월 3 18:14 trc drwxrwxr-x 10 machbase machbase 4096 8월 3 18:14 tutorials drwxrwxr-x 3 machbase machbase 4096 8월 3 18:14 webadmin |
혹시나 설치에 실패한 분들은 도커를 활용해서 다시 시도해 보시기 바랍니다. 그래도 안된다면 다음의 몇가지 내용을 확인해 주세요.
CHECK 01. Ulimit
MACHBASE를 설치하기 위해서는 운영체제의 환경을 일부 변경해야 합닌다. limits.conf 에 다음과 같은 변경이 되었는지 확인해 주세요.
sudo vi /etc/security/limits.conf |
명령을 수행하여 아래와 같이 설정되어 있는지 확인해 주세요
* hard nofile 65535 * soft nofile 65535 |
위와 같이 되어 있지 않다면, 변경하고 다시 reboot해 주세요. 그리고 다음과 같이 변경된 내용을 확인합니다.
machbase@mb:~$ ulimit -Sn 65536 |
CHECK 02. 환경변수 설정
deb 패키지로 설치를 하면 일부 환경변수가 자동으로 설정되지 않습니다..bashrc에 아래의 내용을 추가하고, 다시 로그인해 주세요.물론 설정하지 않아도 기본적인 툴을 사용할 수 있지만, 라이브리러를 원활하게 사용하기 위해서는 아래의 내용을 적용해야 합니다.
export MACHBASE_HOME=/opt/machbase/current export PATH=$MACHBASE_HOME/bin:$PATH export LD_LIBRARY_PATH=$MACHBASE_HOME/lib:$LD_LIBRARY_PATH |
명령을 수행하고 다음과 같이 확인해 주세요.
machbase@mb:~$ env | grep MACH MACHBASE_HOME=/opt/machbase/current machbase@mb:~$ |
설정이 완료되었습니다. 재로그인 하거나 환경변수를 다시 리로드해 주세요.
STEP 02. 데이터베이스 종료
데이터베이스는 ROOT 권한을 통해서 종료해야 합니다.
machbase@mb:/opt/machbase/current/tutorials/csvload$ sudo service machbased stop [sudo] password for machbase: —————————————————————– Machbase Administration Tool Release Version – 3.5.0.826b8f2.community Copyright 2014, InfiniFlux Corp. or its subsidiaries All Rights Reserved —————————————————————– Waiting for Machbase server shut down… Machbase server shut down successfully. |
STEP 03. 데이터베이스 재구동
재구동 또한 ROOT 권한으로 수행합니다.
machbase@mb:/opt/machbase/current/tutorials/csvload$ sudo service machbased start —————————————– Machbase Administration Tool Release Version – 3.5.0.826b8f2.community Copyright 2014, InfiniFlux Corp. or its subsidiaries All Rights Reserved —————————————– Waiting for Machbase server start. Machbase server started successfully. |
STEP 04. 성능 테스트
설치를 완료했으니 MACHBASE의 성능을 한번 측정해 보겠습니다. 매뉴얼에 있는 1분 튜토리얼을 참고해 주세요.
https://doc.machbase.com/1-min-tutorial/load-csv-file.html
machbase@mb:~$ cd $MACHBASE_HOME/tutorials/csvload/ machbase@mb:/opt/machbase/current/tutorials/csvload$ ls -al 합계 127696 drwxrwxr-x 2 machbase machbase 4096 7월 31 15:48 . drwxrwxr-x 10 machbase machbase 4096 7월 31 15:48 .. -rw-rw-r– 1 machbase machbase 246769 7월 20 10:59 awards.csv -rw-rw-r– 1 machbase machbase 259 7월 20 10:59 create_sample2_table.sql -rw-rw-r– 1 machbase machbase 231 7월 20 10:59 create_sample_table.sql -rwxrwxr-x 1 machbase machbase 60 7월 20 10:59 load_awards.sh -rwxrwxr-x 1 machbase machbase 486 7월 20 10:59 load_sample.sh -rwxrwxr-x 1 machbase machbase 474 7월 20 10:59 load_sample2.sh -rw-rw-r– 1 machbase machbase 130477124 7월 20 10:59 sample_data.csv |
sample_data.csv에 100만 라인의 샘플 데이터가 있는 것을 확인할 수 있습니다.
machbase@mb:/opt/machbase/current/tutorials/csvload$ wc -l sample_data.csv 1000000 sample_data.csv |
내용을 잠깐 확인하면 아래와 같습니다. 웹 로그 데이터가 100만 건 들어있는 것으로 보입니다.
machbase@mb:/opt/machbase/current/tutorials/csvload$ head sample_data.csv 2015-05-20 06:00:00,63.214.191.124,2296,122.195.164.32,5416,12,GET /twiki/bin/view/Main/TWikiGroups?rev=1.2 HTTP/1.1,200,5162 2015-05-20 06:00:07,212.237.153.79,6203,71.129.68.118,8859,67,GET /twiki/bin/view/Main/WebChanges HTTP/1.1,200,40520 2015-05-20 06:00:07,243.9.49.80,344,122.195.164.32,6203,46,GET /twiki/bin/view/Main/TWikiGroups?rev=1.2 HTTP/1.1,200,5162 2015-05-20 06:00:07,232.191.241.129,5377,174.47.129.59,1247,17,GET /mailman/listinfo/hsdivision HTTP/1.1,200,6291 2015-05-20 06:00:07,121.67.24.216,2296,212.237.153.79,6889,68,GET /twiki/bin/view/TWiki/WebTopicEditTemplate HTTP/1.1,200,3732 2015-05-20 06:00:07,31.224.72.52,450,100.46.183.122,10541,20,GET /twiki/bin/view/Main/WebChanges HTTP/1.1,200,40520 2015-05-20 06:00:07,210.174.159.227,6180,173.149.119.202,6927,2,GET /twiki/bin/rdiff/TWiki/AlWilliams?rev1=1.2&rev2=1.1 HTTP/1.1,200,5234 2015-05-20 06:00:07,210.174.159.227,10124,16.194.51.72,10512,69,GET /twiki/bin/rdiff/TWiki/AlWilliams?rev1=1.2&rev2=1.1 HTTP/1.1,200,5234 2015-05-20 06:00:07,60.48.99.15,12333,85.183.139.166,12020,64,GET /robots.txt HTTP/1.1,200,68 2015-05-20 06:00:07,81.227.25.139,5883,96.128.212.177,2042,56,GET /twiki/bin/oops/TWiki/TextFormattingRules?template=oopsmore¶m1=1.37¶m2=1.37 HTTP/1.1,200,11400 |
STEP 05. 데이터 로딩
이제 본격적으로 데이터를 로딩해 봅시다. 먼저 튜토리얼에 있는 load_sample.sh의 내용을 수행해 주세요.
machbase@mb:/opt/machbase/current/tutorials/csvload$ cat load_sample.sh #!/bin/sh …. 주석 제거 machsql -s 127.0.0.1 -u sys -p manager -f create_sample_table.sql ## 스키마를 만드는 명령어 csvimport -t sample_table -d sample_data.csv -a -F “_arrival_time YYYY-MM-DD HH24:MI:SS” ## 데이터를 로딩하는 명령어 |
load_sample.sh를 수행합니다.
machbase@mb:/opt/machbase/current/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.community 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.094 + 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.community 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 2.892 sec Load success count : 1000000 Load fail count : 0 |
놀랍게도 2.8초 만에 100만건이 로딩되었습니다. 참고로 이번 포스트의 수행 환경은 다음과 같습니다.
- Intel(R) Core(TM) i5-4570 CPU @ 3.20GHz 4개
- 삼성 SSD 300G
- 우분투 14.04
STEP 06. 쿼리 수행
데이터 로딩이 완료되었으니 간단하게 쿼리를 수행해 보겠습니다. machsql 을 사용하면 되는데 ID와 PW는 다음과 같습니다.
- ID : SYS
- PW : MANAGER
대소문자는 구별하지 않습니다.
machbase@mb:/opt/machbase/current/tutorials/csvload$ machsql ======================================================== Machbase Client Query Utility Release Version 3.5.0.826b8f2.community 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> show tables; NAME TYPE ——————————————————- SAMPLE_TABLE LOG [1] row(s) selected. Elapsed time: 0.000 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 Mach> select count(*) from sample_table; count(*) ———————– 1000000 [1] row(s) selected. Elapsed time: 0.000 |
백만 건의 데이터가 거이 바로 출력됩니다. 이번에는 group by 구문을 수행해 보겠습니다. 100만건 그룹 개수가 75개입니다. 그리고 총 수행시간은 0.22초입니다.
Mach> select srcip, count(srcip) from sample_table group by srcip; srcip count(srcip) —————————————- 148.30.103.173 13389 생략……………………………… 159.240.209.63 13425 [75] row(s) selected. Elapsed time: 0.224 |
이번에는 상위 10개만 뽑아 보겠습니다. ORDER BY로 정렬하고 상위 10개를 뽑는데 0.24초가 걸렸습니다.
Mach> select srcip, count(srcip) from sample_table group by srcip order by 2 desc limit 10; srcip count(srcip) —————————————- 96.128.212.177 13594 173.149.119.202 13546 219.229.142.218 13537 69.99.246.62 13511 239.81.105.222 13501 86.45.186.17 13487 231.146.69.51 13483 248.168.229.34 13472 105.9.103.49 13472 115.18.128.171 13468 [10] row(s) selected. Elapsed time: 0.244 |
마치며
간단하게 매뉴얼에 있는 대로 설치하고, 쿼리를 수행해 보았습니다.
- 100만건 로딩 : 2.2초
- group by : 0.2초
MACHBASE의 성능에 흥미가 생기셨다면 데이터를 더 넣고, 인덱스도 만들어서 제대로 테스트 해 보세요!!