HBase의 Zookeeper의 역할은 주로 replication이나 failover에 중요한 역할로 알려져 있다.
Zookeeper plays a key role in HBase Replication, where it manages/coordinates almost all the major replication activity, such as registering a slave cluster, starting/stopping replication, enqueuing new WALs, handling regionserver failover, etc.
출처 : http://blog.cloudera.com/blog/2012/07/hbase-replication-overview-2/
최근 hbase 에 zookeeper에 read/write locks을 할 수 있도록 0.95.0에 반영되었다. 0.95.0이후 버전을 사용하는 경우 lock기능이 작동된다.
HBASE-7305. ZK based Read/Write locks for table operations
zookeeper를 이용해 table operation시 locking하는데 사용한다. master가 table schema 변경시 동기(sync)를 지원한다.
Hbase설정에 따르면, 기본적으로 zookeeper를 lock용으로 쓰고 있음을 확인할 수 있다.
hbase.table.lock.enable
Set to true to enable locking the table in zookeeper for schema change operations. Table locking from master prevents concurrent schema modifications to corrupt table state.
Default: true
참고로 Row locks 을 쓴다고 해서 Zookeeper를 사용하지 않는다. 왜냐하면 구현상 하나의 row는 하나의 Region서버에 저장하기 때문이다. 이는 분산락(distributed lock)이 필요없다는 것이다. 따라서 대신 빠른 성능을 줄 수 있다. 또한, Region 서버가 새롭게 만들어지거나 재시작할때 row lock은 동작되지 않는다. 개런티를 전혀 할 수 없다.
그래서, Client코드에서 API(ClientProts, HTable 등등)를 통해서 lockRow, unlockRow하는 코드는 사라졌다.
출처 : https://issues.apache.org/jira/browse/HBASE-7315
'nosql' 카테고리의 다른 글
[hbase] 0.95.0부터 hbase clean 추가 (0) | 2013.05.14 |
---|---|
[hbase] ACID in HBase (0) | 2013.04.29 |
[Hbase] 버전별 성능 (0) | 2013.04.25 |
[hbase] Region Server 이슈 - HotSpotting 에 대한 번역 (0) | 2013.04.24 |
[hbase] Hbase 설치하기 (Fully Distributed mode) (1) | 2013.04.23 |