이제 설치된 카산드라 위에 YCSB를 돌려보자.

전에도 말했듯이 소스로 받는 것이 조금 불편할 수 있으나 확실한 동작을 보장한다고 할 수 있으므로 소스로 가겠다 ㄱㄱㄱㄱ

이번엔 git을 이용해서 받아보자

# git clone git://github.com/brianfrankcooper/YCSB.git

git이 없으면

# apt-get install git-core

다 받아졌으면 YCSB폴더로 들어가서 빌드를 하자. 이번엔 maven을 사용한다.

# mvn clean package

역시 maven이 없으면 설치

# apt-get install maven2

하다가 에러가 났다.


으아니! 문제는 asm-3.1.jar 파일이군!

받아준다

http://www.java2s.com/Code/Jar/a/Downloadasm31jar.htm

문제가 발생한 디렉토리에 덮어씌워주고 다시

# mvn clean package


끝나면 workload를 돌리면 된다.

script를 짜도 되고 걍 돌려도 된다.


(뒤에 처자는 애교로 넘기져)


만약 다음과 같은 오류가 발생한다면 이것은 client disclosed를 의미하는 내용이기 때문에

무시해도 상관 없다고 한다.

DEBUG [pool-2-thread-2] 2011-10-05 12:00:49,374 CustomTThreadPoolServer.java (line 197) Thrift transport error occurred during processing of message. org.apache.thrift.transport.TTransportException        at org.apache.thrift.transport.TIOStreamTransport.read(TIOStreamTransport.java:132)        at org.apache.thrift.transport.TTransport.readAll(TTransport.java:84)        at org.apache.thrift.transport.TFramedTransport.readFrame(TFramedTransport.java:129)        at org.apache.thrift.transport.TFramedTransport.read(TFramedTransport.java:101)        at org.apache.thrift.transport.TTransport.readAll(TTransport.java:84)        at org.apache.thrift.protocol.TBinaryProtocol.readAll(TBinaryProtocol.java:378)        at org.apache.thrift.protocol.TBinaryProtocol.readI32(TBinaryProtocol.java:297)        at org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin(TBinaryProtocol.java:204)        at org.apache.cassandra.thrift.Cassandra$Processor.process(Cassandra.java:2877)        at org.apache.cassandra.thrift.CustomTThreadPoolServer$WorkerProcess.run(CustomTThreadPoolServer.java:187)        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)        at java.lang.Thread.run(Thread.java:636) DEBUG [pool-2-thread-2] 2011-10-05 12:00:49,376 ClientState.java (line 94) logged out: #<User allow_all groups=[]>

자세한 내용은 여기



이번에 연구실에서 진행하는 프로젝트를 위해 YCSB를 돌려봐야 되는데

이를 위해 Nosql DB인 Cassandra를 설치해 보겠다.


1. 다운로드

apt-get 으로도 설치할 수 있는 것 같지만 나는 최신버전은 필요 없기도 하고 물리적으로 접근할 수 없는 노드에서 설치해야하기에 관리하기가 편하기도 하고 소스코드에서 설치하는게 뭔가 안심되기도 하기 때문에 소스코드에서부터 설치하도록 하겠다.


다운로드 : http://cassandra.apache.org/


0.8.10 버전을 받아 설치하도록 하겠당!

# wget http://apache.mirror.cdnetworks.com/cassandra/0.8.10/apache-cassandra-0.8.10-src.tar.gz


2. 압축풀기

# tar -xvzf apache-cassandra-x.xx.xx-src.tar.gz


3. 자바 버전 확인

카산드라는 자바 1.6 이상의 버전에서 돌아간다.

OpenJDK, Sun 모두에서 돌아가니 버전만 간단하게 확인하고 넘어가자

# java -version


4. 환경설정

하나의 노드에 테스트용으로 설치할것이기 때문에 log폴더와 lib폴더 모두 설치폴더 안에 존재하도록 하기 위해서 폴더를 만들어준다.

(홈 디렉토리에서)

# mkdir {commitlog,log,saved_caches,data}

conf폴더에 들어가서 먼저 log4j-server.properties 파일을 보자.

중요한 부분은 log4j.rootLogger부분의 INFO를 DEBUG로 바꿔주자
이래야 서버에서 나오는 다양한 메세지들을 확인할 수 있다.

앞에서 설정한 로그폴더로 로그를 받을 수 있게 설정하자.

log4j.appender.R.File=~/log/system.log

나와서 이제 cassandra.yaml로 들어가자

data_file_directories: ~/data

commitlog_directory: ~/commitlog

saved_caches_directory: ~/saved_caches

위에서 폴더를 만들었던 곳으로 각각 고쳐준다.


만일, 하나의 컴퓨터에서 멀티 노드로 구성할 생각이라면 서로 다른 디렉토리를 사용하는것이 바람직하겠다.

또한, 아랫부분의 listen_address와 rpc_address부분도 loopback을 사용해서 127.0.0.2 같이 바꾸어야 한다.


cassandra-env.sh 파일로 넘어온다.

이 파일의 JMX_PORT부분도 위의 하나의 컴퓨터에서 멀티 노드를 구성할 때에는 서로 다르게 지정해야 한다.

5. 빌드

ant나 maven을 사용해서 빌드하면 된다.

6. 돌려본다

# bin/cassandra -f

+ Recent posts