좀 규모가 되는 hadoop cluster에 데이터노드를 추가하고 balancer를 돌리면 시간이 엄청 오래 걸림.

이것은 아무 설정도 안건드렸을 경우 balancer의 기본 대역폭 설정이 1M (1048576) 이기 때문.


데이터노드들이 기가비트 네트워크에 들어 있어 대역폭에 여유가 있는 상황이라면 대역폭을 늘여서 데이터노드 간 데이터 밸런스를 후딱 맞추고 치워버리고 싶을텐데,

이럴 땐 아래 명령어를 통해 일시적으로(not persistent) 대역폭을 늘일 수 있음.


// balancer 대역폭을 100M로 올림

[root@localhost]# $HADOOP_HOME/bin/hdfs dfsadmin -setBalancerBandwidth 104857600


이렇게 설정해 놓고 hdfs balancer를 실행하면 엄청나게 향상된 스피드를 확인할 수 있을 것임.

(물론 데이터노드 간 bandwidth가 받쳐줘야 함)


저 명령어는 일시적인데,

만약 영구적으로 설정하고 싶다면 hdfs-site.xml 에 dfs.datanode.balance.bandwidthPerSec 속성으로 설정하면 됨.

<property>
    <name>dfs.datanode.balance.bandwidthPerSec</name>
    <value>104857600</value>
</property>





[참조]

http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/HDFSCommands.html#dfsadmin

https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml






.

Posted by bloodguy
,