View
HDFS Balancer 수행
sudo -u hdfs hdfs dfsadmin -setBalancerBandwidth 1073741824 // 1GB로 대역폭을 변경 |
sudo -u hdfs hdfs balancer -threshold 5 |
HDFS balancing을 수행해야 하는 경우는?
Hadoop을 운영하다보면 각 datanode 간 사용률의 차이가 커질 수 있다. 이렇게 balancing이 맞지 않는 경우 중 가장 흔하게 접할 수 있을 때는 신규 node/disk를 추가 하거나, 가끔 대량의 데이터를 삭제할 때이다. 새로운 데이터가 HDFS 상에 업로드 되는 경우 namenode는 데이터 적재량 낮은 datanode를 우선적으로 선정하여 block을 추가하게 되는데, 특정 node에 I/O가 집중되는 경우 성능 저하가 발생할 수 있다. 또 used capacity rate가 높은 datanode에 데이터가 전혀 적재가 안되는 것은 아니여서, 특정 datanode의 사용률이 임계치에 도달 한다면 Mapreduce, Hive, Hbase 등이 정상적으로 동작하지 않을 가능성이 높다. 따라서 일정 이상의 사용률이 차이가 난다면 HDFS의 balance를 맞춰주는 작업을 수행해야 한다. (http://namenode:50070)
HDFS balancing을 하면 안되는 경우?
만약 hdfs 위에 hbase 를 운영중이라고 한다면 hdfs balancer를 수행하는 것은 위험하다. 이미 Hbase RegionServer에서 locality를 가지고 있는 block들을 다른 datanode로 옮긴다면 성능상의 문제가 발생하기 때문이다. 만약 이미 hdfs balancer를 수행한 경우라면 성능 문제가 있는 table들에 대해서 major compaction을 수행해야 한다. 만약 hdfs balancer를 수행 하지 않은 경우라면 hbase의 balancer를 이용하여 balancing을 수행하거나 hbase 재기동 이후 major compaction의 스케쥴을 이용하여 region의 locality를 맞춰야 한다.
HDFS balancer 수행
Hortonwork의 Ambari나 Cloudera의 Cloudera Manager를 사용하는 경우 web UI를 통해 hdfs balancer를 수행할 수 있다. 만약 CLI를 더 선호하거나 web ui 에서 제공하지 않는 옵션을 사용하기 위해서는 아래와 같이 CLI를 사용해야 한다.
sudo -u hdfs hdfs balancer [-policy <policy>] [-threshold <threshold>] [-blockpools <comma-separated list of blockpool ids>] [-include [-f <hosts-file> | <comma-separated list of hosts>]] [-exclude [-f <hosts-file> | <comma-separated list of hosts>]] [-idleiterations <idleiterations>] [-runDuringUpgrade] |
|
위의 옵션으로 balancer를 수행하는 경우 굉장히 느리게 수행된다. 앞서 별다른 설정을 수행하지 않았다면 [dfs.datanode.balance.bandwidthPerSec] 값이 10485760(10MB)로 설정되어 있기 때문이다. 해당 설정 값을 더 크게 조절하거나 아래와 같이 balancer 실행 전에 동적으로 변경할 수 있다.
hdfs dfsadmin -setBalancerBandwidth 1073741824 // 1GB로 대역폭을 변경 |
그 밖에도 parameter 설정을 통한 많은 옵션들이 존재한다. 자세한 사항은 아래를 참고하라. (https://community.hortonworks.com/articles/43849/hdfs-balancer-2-configurations-cli-options.html)
'02.IT공부(간헐적취미) > 빅데이터' 카테고리의 다른 글
[HDFS] Hadoop 3.x new feature : Erasure coding (2) | 2018.11.22 |
---|---|
[BIGDATA] hadoop과 Object storage (0) | 2018.11.22 |
[Hive] 파티션 종류 및 특징 (0) | 2018.08.28 |
[Hive] Hive LLAP 메모리 설정 가이드 (0) | 2018.08.21 |
[HBase] WAL(Write Ahead Log)를 이용한 region 복구 (0) | 2018.07.11 |