hdfs_balancer HDFS Balancer 수행 간단 수행 명령어 sudo -u hdfs hdfs balancer [-policy ] [-threshold ] [-blockpools ] [-include [-f | ]] [-exclude [-f | ]] [-idleiterations ] [-runDuringUpgrade] 옵션이 필요 이상으로 많은 것 처럼 보인다. 하지만 모두 필요에 의해서 만들어진 것이니 간단히 보고 넘어가면 좋을 듯 하다.hdfs dfsadmin -setBalancerBandwidth 1073741824 // 1GB로 대역폭을 변경 그 밖에도 parameter 설정을 통한 많은 옵션들이 존재한다. 자세한 사항은 아래를 참고하라. (https://community.hortonw..
* Apache HBase Write Path - Apache Hbase 는 hadoop의 HDFS를 기반으로 하는 database이다. HDFS 상의 파일은 생성 후에 오직 append 기능만을 제공하며 read 작업 수행 시 block 단위로 full-scan 이 이루어지는데, HBase를 사용하면 HDFS 상의 데이터를 랜덤액세스random access 하거나 업데이트update 가능하도록 해준다. HBase는 어떻게 low-latency로 이런 read/write 를 제공할 수 있을까? - Hbase write path는 hbase의 put/delete 연산이 어떻게 이루어지는지에 대한 방법을 나타낸 것으로 client 에서 시작하여 region server를 거쳐 결국에는 HFile이라고 불리는..
* HBase Shell commands - HBase shell을 통해 수행되는 operation을 통해서 HBase에서 제공하는 기초적인 기능 및 사용목적을 이해하고자 작성함 1) General HBase shell commands - status : cluster 상태를 보여주며, 추가옵션을 통해 상세정보를 확인> status > status 'simple' > status 'summary' > status 'detailed' - version : 설치된 HBase의 버전정보를 확인> version - whoami : 현재 hbase의 사용자를 확인> whoami 2) Table Management commands - alter : (1)table의 schema를 변경하기위해 사용된다. dictio..
* 데이터 버저닝Data Versioning - HBase의 특별한 기능 중 하나로 각 셀cell의 특정column 값에 여러 버전 을 저장할 수 있다. 각 버전에 타임스탬프timestamp를 사용하여 구현되었으며 내림차순으로 정렬된다. long integer 타입으로 millisecond로 환산되는데, 1970년 1월 1일 이후부터의 UTC 시간을 기록하고 있으며 이것을 유닉스시간UnixTime 이라고 한다. 그리고 최초의 시간을 Epoch라 한다. - Timestamp는 명시적으로 입력하는 것도 가능한데, default로 HBase는 각 cell의 변경을 3개 까지 보관하며 기본적으로 scan을 통해서 조회하게 되면 내림차순이기 때문에 가장 최신의 데이터가 조회된다. 또한 저장되어 있는 모든 vers..
* Shard와 Region의 구조 - 일반적으로 샤딩이란 논리적 테이블을 수평적으로 파티셔닝하여 레코드를 논리적으로 분할하는 것인데, 데이터를 분산저장하기 위해서 사용한다. 각 데이터를 적절한 장소로 라우팅routing 하기위해서는 해시함수와 같은 규칙을 미리 정의해야 한다. 수평적 파티션에서 하나의 파티션 용량이 가득 찬 경우 리샤딩reshard 작업이 수행되는데 이는 경우에 따라 데이터의 저장구조가 변경 될(파티션 간 경계를 재설정, 데이터 수평적 재분배 등) 필요가 있음으로 리소스의 비용이 많이 든다. 이때는 I/O가 높아짐으로 데이터 update가 제대로 안 일어날 수도 있다. Reshard 문제는 가상샤드(virtual shard)를 통해 어느정도 완화할 수 있다. 이것은 논리적 테이블을 매우..