hbase에서 zookeeper의 znode 생성시 path의 의 단계가 많을 수록 고달파진다.
atomic operation이라 'mkdir -p 디렉토리명'처럼 한번에 node 설정이 안되어서 일일히 아래와 같이 넣어야 하는데.. 이 방식은 jvm이 총 5번 뜨고 매번 connection을 맺는 구조라 그리 좋지 않다.
${HBASE_HOME}/bin/hbase zkcli create '/apache' null >> "${ZK_LOG_FILE}" 2>&1
${HBASE_HOME}/bin/hbase zkcli create '/apache/phase' null >> "${ZK_LOG_FILE}" 2>&1
${HBASE_HOME}/bin/hbase zkcli create '/apache/phase/local' null >> "${ZK_LOG_FILE}" 2>&1
${HBASE_HOME}/bin/hbase zkcli create '/apache/phase/local/config' null >> "${ZK_LOG_FILE}" 2>&1
${HBASE_HOME}/bin/hbase zkcli create '/apache/phase/local/config/zoo' 'true' >> "${ZK_LOG_FILE}" 2>&1
이럴 때에는 ruby의 'zk'모듈(https://github.com/zk-ruby/zk)을 사용하면 된다.
자세한 예제는 아래에 있다. 예제는 single thread와 event queue 방식이 있다.
https://github.com/zk-ruby/zk/wiki
간단히 사용할 것이라 다음과 같이 적용했다.
require 'zk'
zk = ZK.new('localhost:2181')
zk.register('/apache/phase/local/config/zoo') {}
begin
zk.create('/apache', '')
rescue ZK::Exceptions::NodeExists => msg
puts msg
end
begin
zk.create('/apache/phase', '')
rescue ZK::Exceptions::NodeExists =>msg
puts msg
end
zk.close!
'Ruby' 카테고리의 다른 글
[ruby] irb 빠른 종료 (부제 : alias) (0) | 2014.09.14 |
---|---|
[ruby] tab누르면 자동완성(auto completion) / irb 색상 예쁘게 하기 (0) | 2014.09.14 |
[ruby] expect (0) | 2014.08.29 |
java 개발자를 위한 ruby 공부 (only 링크) (0) | 2014.08.24 |
[ruby] 디버그(debug) 쉽게 하기 (0) | 2014.08.19 |