Posting

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

[기초/설치] 리눅스 DEB 패키지 설치

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의 성능에 흥미가 생기셨다면 데이터를 더 넣고, 인덱스도 만들어서 제대로 테스트 해 보세요!!

연관 포스트

C언어로 Binary data를 Machbase에 넣기

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

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

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