얼마 전 업무를 하다가

Apache HBase 에서는 client 와 Region Server 사이에서 통신은 어떻게 이루어질까 하는 의문이 들었다.

그래서 HBase 소스를 보니 HBase 에서는 모든 통신을 ZooKeeper 를 통해서 한다는걸 알았다.

소스 상에서는 ZooKeeper 에다가 node 에 변경을 가하고 끝이다.

그러면 HBase 를 띄울 때 같이 실행된 ZKWatcher 에서는 해당 node 를 계속 listen 하고 있다가 node 가 변경되면 뭔가의 작업이 이루어지는 구조였다.

그래서 mapper 가 많은데 mapper 에서 HTable 을 열어서 뭔가의 작업을 하면 항상 ZooKeeper max connection 에러가 나서 Region Server 가 몇개 죽거나 그랬다

애초에 mapper 에서 HTable.delete() 를 한다는게 말이 안되는 거였다.

왜냐하면 HTable 을 열고 뭔가 작업을 하면 HBase cluster 전체에 있는 Region Server 전체가 실행할 것이다 근데 그걸 모든 mapper 에서 실행했으니 ZooKeeper max connection 을 초과하는게 당연한 얘기일 것이다.


그리고 가끔 Apache incubator project list 를 보는데 Ratis 라는 project 를 보니 ZooKeeper 와 비슷한 project 였다.

Ratis project 는 Raft 알고리즘의 구현체이다.

Raft 알고리즘은 대표적인 합의 알고리즘(Consensus algorithm)인 Paxos 보다 이해가 쉽고 구현이 쉬운 알고리즘이라고 소개하고 있다.

구글링 해보면 합의 알고리즘이란 분산환경에서 신뢰성을 보장하도록 하는 알고리즘으로 최근 블록체인이 이슈가 되면서 합의 알고리즘 포스팅도 많아진 것 같다.


다음 포스팅은 Raft Protocol 논문을 읽고 요약해봐야겠다

'[프로그래밍]' 카테고리의 다른 글

Apache Ratis 소개  (3) 2018.03.21
java 로 KMP 알고리즘  (0) 2017.12.21
dfs 알고리즘을 java 로 구현하기  (0) 2017.02.16
[IntelliJ] SVN 커밋 시 'is out of date' 에러 문제  (0) 2015.10.23
rsync 로 CRAN mirroring  (0) 2015.10.06
GIS shp 파일 변환  (0) 2015.07.28
Posted by FeliZ_하늘..

댓글을 달아 주세요

  1. FeliZ_하늘.. 2018.03.26 19:56 신고  댓글주소  수정/삭제  댓글쓰기

    https://www.youtube.com/watch?v=JEpsBg0AO6o

  2. FeliZ_하늘.. 2018.03.26 19:56 신고  댓글주소  수정/삭제  댓글쓰기

    https://www.youtube.com/watch?v=YbZ3zDzDnrw

  3. FeliZ_하늘.. 2018.10.22 21:15 신고  댓글주소  수정/삭제  댓글쓰기

    아마 이때부터 장비 노후화가 진행된 것 같다
    BulkLoad 를 하면 hdfs schema 가 다르면 copy 를 하고 schema 가 같으면 move 를 하는데 thread 를 여러개 만들어서 실행한다
    이때 thread 개수는 nrThreads = conf.getInt("hbase.loadincremental.threads.max", Runtime.getRuntime().availableProcessors()); 이다. (BulkLoad source 중)
    일할 때 이것마저 여러개를 실행하니
    node 의 IO 가 급격히 올라가고 ssh 도 접속이 힘들어지더니
    Ambari 에서는 Heartbeat Lost 됐다가 결국엔 reboot 됐다
    그래서 BulkLoad 를 순차로 실행하도록 수정하거나 thread 개수를 수정하거나 해야했다

'[Java]' 카테고리의 다른 글

java 에서 숫자의 자릿수 알아내기  (0) 2018.01.20
remote visual vm  (0) 2016.12.18
RxJava  (0) 2016.02.23
BigInteger 최대공약수 gcd 최소공배수 lcm 구하기  (0) 2016.02.22
java 로 클립보드 사용하기  (0) 2015.10.30
java 로 동영상 처리  (0) 2015.10.28
Posted by FeliZ_하늘..

댓글을 달아 주세요

'[프로그래밍]' 카테고리의 다른 글

Apache Ratis 소개  (3) 2018.03.21
java 로 KMP 알고리즘  (0) 2017.12.21
dfs 알고리즘을 java 로 구현하기  (0) 2017.02.16
[IntelliJ] SVN 커밋 시 'is out of date' 에러 문제  (0) 2015.10.23
rsync 로 CRAN mirroring  (0) 2015.10.06
GIS shp 파일 변환  (0) 2015.07.28
Posted by FeliZ_하늘..

댓글을 달아 주세요