data-generate

빅데이타 인프라를 구축했는데 막상 뭔가 테스트 해보고 싶어도 돌릴만한 예제가 없는 분들을 위해서 만들어 본 라이브러리입니다. 뭐 대단한 것은 아니고 ‘ID,TIMESTAMP,TRANSACTION’ 형식으로 세개짜리 필드로 은행권 로그를 모방했습니다. 일단 급한대로 만들어 쓸려고 만든것이기 때문에 더 만들어야 할게 많습니다. 나름 동접처리를 한다고 쓰레드 방식으로 동접으로 접속해서 처리하는 것도 시뮬레이션 했습니다.

추후에는 - 트랜잭션중에 자주 일어나는 것에 대한 빈도수 조절이 가능해질 것입니다. - 현재는 랜덤으로 사용자를 뽑아오지만 충성고객에 대한 범위를 지정할 수가 있을것입니다. - MAC 이나 IP Address 생성룰을 고민해서 붙일 수도 있을것입니다.




결과입니다. 


EDITED:

TIMESTAMP 가 yyyyMMddHHmmss 에서 yyyyMMddHHmmss.SSS 형식으로 밀리세컨드까지 표현하게 바꼈습니다. 


사용법

  • 설명 보기
$ java -jar data-generate.jar 
  • 예제
$ java -jar data-generate.jar -a 1000000 -f 2014-03-07 -t 2014-05-06

2014년 3월 7일 부터 2014년 5월 6일까지 하루에 백만개의 로그를 생성하는 명령입니다.

License

Copyright © 2014 Comjuck

Distributed under the Eclipse Public License either version 1.0 or (at your option) any later version.



data-generate.jar



하둡에서 파생된 로그를 수집하고 , 분석할 수 있는 오픈소스 솔루션입니다. 물론 로그를 분석하는 것은 하둡의 맵-리듀스를 이용합니다.

하둡 자체가 로그를 분석하기 위한 목적으로 태어났기 때문에, 로그를 수집하는 솔루션은 어찌보면 당연하게 하둡에서 파생될 수 밖에 없었을 거라 생각합니다.

설치법 자체는 간단합니다. 척와 소스를 내려 받습니다.

http://ftp.daum.net/apache/hadoop/chukwa/chukwa-0.4.0/ 여기에 가면 있습니다.

  
   $ cd ~/work
   $ tar xvzf chukwa-0.4.0.tar.gz
   $ cd chukwa-0.4.0
   $ ant

  
하면 컴파일 되면서 설치 완료 입니다.
척와를 제대로 동작시키기 위해서는 하둡이 설치되어 있어야 합니다.

하둡 설치는 예전 문서를 참조하시면 됩니다.

   ~/work/hadoop-1.0.2


에 하둡이 설치되어 있다고 가정합니다. 버젼은 1.0.2 버젼입니다. 그리고 물론 하둡은 떠 있는 상태여야만 합니다.

chukwa-env.sh 파일을 열어서 간단하게 편집해줍니다.

   $ cd ~/work/chukwa-0.4.0/
   $ emacs conf/chukwa-env.sh

chukwa-env.sh 내용


   export JAVA_HOME=/usr/lib/jvm/default-java
  
   export HADOOP_HOME="/home/crazia/work/hadoop-1.0.2"
   export HADOOP_CONF_DIR="/home/crazia/work/hadoop-1.0.2/conf"

   export chukwaRecordsRepository="/chukwa/"

   export CHUKWA_PID_DIR=/home/crazia/tmp/chukwa/pidDir

   export CHUKWA_LOG_DIR=/home/crazia/tmp/chukwa/log

 
위와 같은 부분을 찾아서 자신의 환경에 맞춰서 변경해줍니다.

  
$ emacs conf/collectors


collectors 내용
  
http://localhost:8080


이부분은 콜렉터 (로그 저장하는 데몬)가 떠 있는 위치를 지정하는 것입니다.

  
$ emacs conf/initial_adaptors

initial_adaptors 내용

  
   # add org.apache.hadoop.chukwa.datacollection.adaptor.ExecAdaptor Iostat 60 /usr/bin/iostat -x -k 55 2 0
   # add org.apache.hadoop.chukwa.datacollection.adaptor.ExecAdaptor Df 60 /bin/df -l 0
   # add org.apache.hadoop.chukwa.datacollection.adaptor.ExecAdaptor Sar 60 /usr/bin/sar -q -r -n ALL 55 0
   add org.apache.hadoop.chukwa.datacollection.adaptor.ExecAdaptor Top 60 /usr/bin/top -b -n 1 -c 0

앞의 세개는 루트 권한을 필요로 하기 때문에 # 처리 해 줍니다.

   $ cd ~/work/hadoop-1.0.2
   $ cp hadoop-core-1.0.2.jar hadoop-1.0.2-core.jar

   구동되는데 이 파일 (hadoop-1.0.2-core.jar) 이 필요합니다.

  
   $ cd ~/work/chukwa-0.4.0/lib
   $ cp ~/work/hadoop-1.0.2/lib/commons-configuration-1.6.jar .

컬렉터를 띄우는데 이 파일 (commons-configuration-1.6.jar) 이 필요하더군요.

이제 컬렉터를 띄워줍니다.

   $ cd ~/work/chuckwa-0.4.0
   $ bin/start-collectors.sh

로 띄우고

 
  $ bin/chukwa agent


로 agent 를 띄워줍니다.
  
http://localhost:50070 에서 실제로 파일이 저장되는지 확인해 봅니다. 대략 5분마다 한번씩  저장됩니다.


 HBase  구동시에 만약 다음과 같은 에러가 발생한다면

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/home/crazia/work/hbase-0.92.0/lib/slf4j-log4j12-1.5.8.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/crazia/work/hadoop-1.0.1/lib/slf4j-log4j12-1.4.3.jar!/org/slf4j/impl/StaticLoggerBinder.class]

 클래스패스에  slf4j-log4j12  관련  jar  가 여러개 있어서 이런 현상이 발생하는 것입니다. 제 경우에는 hbase 에는 1.5.8  버젼과 하둡 (hadoop) 에는 1.4.3 버젼이 중첩해서 있어서 발생하는 문제였습니다.

한 버젼으로 통일하고 단 한개만 클래스패스에 존재하게 바꾸어 줍니다. 제 경우에는 hbase 안에 있는 jar 를 hadoop 쪽에 옮겨주고 지워버렸습니다.

아래 사이트 참조해서 해결했습니다.

http://www.slf4j.org/codes.html#multiple_bindings


+ Recent posts