한 10년전쯤인가, 그때는 PHP + MySQL등등으로 RDB전성시대였었던것 같은데(물론 지금은 어떤지 알수 없다..) 최근에는 여기 저기서 NoSQL DB를 많이 사용하고 있는것 같다. 대용량 데이터를 처리하고 다뤄야 하는 데이터 싱크 용도로는 Cassandra 같은 분산 DB가 단연 최고이다.
오늘은 그래서 Cassandra를 한번 설치해봤다. Cassandra가 뭐고, 어떻게 동작하는 것인지는 설치부터 해놓고 이것 저것 만들어가면서 설명해도 모지라지 않으니 일단은 설치부터 해보자.
설치 및 실행 방법
1. 설치하는 방법
1. 다운로드 받기 (http://cassandra.apache.org/download/)
cassandra@ubuntu:~$ wget http://apache.mirror.cdnetworks.com/cassandra/1.1.6/apache-cassandra-1.1.6-bin.tar.gz
2. 압축풀기
cassandra@ubuntu:~$ tar xvfz apache-cassandra-1.1.6-bin.tar.gz
cassandra@ubuntu:~$ mkdir bin
cassandra@ubuntu:~$ mv apache-cassandra-1.1.6 ./bin
cassandra@ubuntu:~$ cd bin
cassandra@ubuntu:~/bin$ ln -s apache-cassandra-1.1.6 cassandra
3. 로그 설정이라던지, 각종 설정 변경하기는 아래 두개의 파일을 수정하면 됨.
cassandra@ubuntu:~/bin$ cd cassandra
cassandra@ubuntu:~/bin/cassandra$ cd conf
cassandra.yaml --> 기본적인 설정들
log4j-server.properties --> 로그 설정들.
2. 실행하는 방법
cassandra@ubuntu:~$ bin/cassandra/bin/cassandra
xss = -ea -javaagent:bin/cassandra/bin/../lib/jamm-0.2.5.jar -XX:+UseThreadPriorities -XX:ThreadPriorityPolicy=42 -Xms753M -Xmx753M -Xmn100M -XX:+HeapDumpOnOutOfMemoryError -Xss180k
INFO 07:44:21,693 Logging initialized
INFO 07:44:21,697 JVM vendor/version: Java HotSpot(TM) Client VM/1.6.0_37
INFO 07:44:21,697 Heap size: 779091968/780140544
INFO 07:44:21,698 Classpath: bin/cassandra/bin/../conf:bin/cassandra/bin/../build/classes/main:bin/cassandra/bin/../build/classes/thrift:bin/cassandra/bin/../lib/antlr-3.2.jar:bin/cassandra/bin/../lib/apache-cassandra-1.1.6.jar:bin/cassandra/bin/../lib/apache-cassandra-clientutil-1.1.6.jar:bin/cassandra/bin/../lib/apache-cassandra-thrift-1.1.6.jar:bin/cassandra/bin/../lib/avro-1.4.0-fixes.jar:bin/cassandra/bin/../lib/avro-1.4.0-sources-fixes.jar:bin/cassandra/bin/../lib/commons-cli-1.1.jar:bin/cassandra/bin/../lib/commons-codec-1.2.jar:bin/cassandra/bin/../lib/commons-lang-2.4.jar:bin/cassandra/bin/../lib/compress-lzf-0.8.4.jar:bin/cassandra/bin/../lib/concurrentlinkedhashmap-lru-1.3.jar:bin/cassandra/bin/../lib/guava-r08.jar:bin/cassandra/bin/../lib/high-scale-lib-1.1.2.jar:bin/cassandra/bin/../lib/jackson-core-asl-1.9.2.jar:bin/cassandra/bin/../lib/jackson-mapper-asl-1.9.2.jar:bin/cassandra/bin/../lib/jamm-0.2.5.jar:bin/cassandra/bin/../lib/jline-0.9.94.jar:bin/cassandra/bin/../lib/json-simple-1.1.jar:bin/cassandra/bin/../lib/libthrift-0.7.0.jar:bin/cassandra/bin/../lib/log4j-1.2.16.jar:bin/cassandra/bin/../lib/metrics-core-2.0.3.jar:bin/cassandra/bin/../lib/servlet-api-2.5-20081211.jar:bin/cassandra/bin/../lib/slf4j-api-1.6.1.jar:bin/cassandra/bin/../lib/slf4j-log4j12-1.6.1.jar:bin/cassandra/bin/../lib/snakeyaml-1.6.jar:bin/cassandra/bin/../lib/snappy-java-1.0.4.1.jar:bin/cassandra/bin/../lib/snaptree-0.1.jar:bin/cassandra/bin/../lib/jamm-0.2.5.jar
INFO 07:44:21,699 JNA not found. Native methods will be disabled.
INFO 07:44:21,710 Loading settings from file:/home/cassandra/bin/apache-cassandra-1.1.6/conf/cassandra.yaml
INFO 07:44:21,826 32bit JVM detected. It is recommended to run Cassandra on a 64bit JVM for better performance.
INFO 07:44:21,826 DiskAccessMode 'auto' determined to be standard, indexAccessMode is standard
INFO 07:44:22,008 Global memtable threshold is enabled at 248MB
INFO 07:44:22,239 Initializing key cache with capacity of 37 MBs.
INFO 07:44:22,249 Scheduling key cache save to each 14400 seconds (going to save all keys).
INFO 07:44:22,253 Initializing row cache with capacity of 0 MBs and provider org.apache.cassandra.cache.SerializingCacheProvider
INFO 07:44:22,258 Scheduling row cache save to each 0 seconds (going to save all keys).
INFO 07:44:22,353 Opening /home/cassandra/data/system/Versions/system-Versions-hf-1 (247 bytes)
INFO 07:44:22,379 Opening /home/cassandra/data/system/LocationInfo/system-LocationInfo-hf-6 (346 bytes)
INFO 07:44:22,385 Opening /home/cassandra/data/system/LocationInfo/system-LocationInfo-hf-5 (163 bytes)
INFO 07:44:22,445 Couldn't detect any schema definitions in local storage.
INFO 07:44:22,446 Found table data in data directories. Consider using the CLI to define your schema.
INFO 07:44:22,467 completed pre-loading (2 keys) key cache.
INFO 07:44:22,596 Replaying /home/cassandra/commitlog/CommitLog-1353080634664.log, /home/cassandra/commitlog/CommitLog-1353080634663.log
INFO 07:44:22,606 Replaying /home/cassandra/commitlog/CommitLog-1353080634664.log
INFO 07:44:22,615 Finished reading /home/cassandra/commitlog/CommitLog-1353080634664.log
INFO 07:44:22,616 Replaying /home/cassandra/commitlog/CommitLog-1353080634663.log
INFO 07:44:22,655 Finished reading /home/cassandra/commitlog/CommitLog-1353080634663.log
INFO 07:44:22,687 Enqueuing flush of Memtable-Versions@19288329(83/103 serialized/live bytes, 3 ops)
INFO 07:44:22,692 Writing Memtable-Versions@19288329(83/103 serialized/live bytes, 3 ops)
INFO 07:44:22,742 Completed flushing /home/cassandra/data/system/Versions/system-Versions-hf-2-Data.db (247 bytes) for commitlog position ReplayPosition(segmentId=1353080662588, position=0)
INFO 07:44:22,750 Log replay complete, 3 replayed mutations
INFO 07:44:22,777 Cassandra version: 1.1.6
INFO 07:44:22,777 Thrift API version: 19.32.0
INFO 07:44:22,780 CQL supported versions: 2.0.0,3.0.0-beta1 (default: 2.0.0)
INFO 07:44:22,846 Loading persisted ring state
INFO 07:44:22,849 Starting up server gossip
INFO 07:44:22,856 Enqueuing flush of Memtable-LocationInfo@29499086(29/36 serialized/live bytes, 1 ops)
INFO 07:44:22,859 Writing Memtable-LocationInfo@29499086(29/36 serialized/live bytes, 1 ops)
INFO 07:44:22,871 Completed flushing /home/cassandra/data/system/LocationInfo/system-LocationInfo-hf-7-Data.db (80 bytes) for commitlog position ReplayPosition(segmentId=1353080662588, position=363)
INFO 07:44:22,892 Starting Messaging Service on port 7000
INFO 07:44:22,904 Using saved token 77712367279614969246272394525491308416
INFO 07:44:22,911 Enqueuing flush of Memtable-LocationInfo@12254719(53/66 serialized/live bytes, 2 ops)
INFO 07:44:22,917 Writing Memtable-LocationInfo@12254719(53/66 serialized/live bytes, 2 ops)
INFO 07:44:22,944 Completed flushing /home/cassandra/data/system/LocationInfo/system-LocationInfo-hf-8-Data.db (163 bytes) for commitlog position ReplayPosition(segmentId=1353080662588, position=544)
INFO 07:44:22,959 Node master/192.168.0.20 state jump to normal
INFO 07:44:22,960 Bootstrap/Replace/Move completed! Now serving reads.
3.끝내는 방법
cassandra@ubuntu:~$ pkill -f 'java.*cassandra'
쉽다 너무..@.@
다음번에는 Cassandra의 Key,Column,Value에 대해서 설명하고 사용하는 것에 대해서 이야기하겠습니다.
'공부하고(?) > Linux' 카테고리의 다른 글
Proxy 환경에서 GIT 사용하기. (0) | 2013.06.04 |
---|---|
Ubuntu에 Perforce 서버 설치하기 (2) | 2012.11.27 |
우분투(Ubuntu)에 Sun JDK를 설치하고 나서 java 설정변경해주는법 (0) | 2012.11.17 |
Hadoop - MapReduce를 사용한 Inverted Index 만들어보기. (0) | 2012.11.12 |
Hadoop - MapReduce를 이용한 간단한 단어수 계산하는 방법 (0) | 2012.11.09 |