1. HDFS Balancers
기존 클러스테어 새로운 DataNode를 지속적으로 추가하기 떄문에 HDFS데이터가 항상 균일하게 배포되지 않을 수 있다. 따라서 HDFS는 블록 배치를 분석하고 데이터균형을 조정하는 밸런서 유틸리티를 제공한다. 밸런서는 단일 DataNode의 개별 볼륨 간에 균형을 유지하지는 않는다.
2. CDH를 이용한 HDFS Balancer Configuration
[ 밸런서 임계값 ]
HDFS Balancer는 일반적으로 CDH서비스가 설치될 때 추가된다. 밸런서의 기본 임계값은 10%로, 각 데이터노드의 디스크 사용량이 클러스터의 전체 사용량과 10% 이하로 차이가 남을 의미한다.
예를 들어 데이터노드의 전체 사용량이 40%라면 각 클러스터는 30~50% 스토리지 용량을 사용하고 있으면 된다.
임계값을 변경하려면
1. HDFS서비스의 구성탭 선택
2. 범위->Balancer 선택
3. 범주->기본 선택
4. 재조정임계값 설정값 변경
5. 변경 후 저장
[ Concurrent Move 구성 ]
dfs.datanode.balance.max.concurrent.moves속성은 데이터 이동시 데이터노드 밸런서가 사용하는 최대 스레드 수를 설정한다.
값을 올리면 밸런싱 프로세스가 더 빨리완료될 수 있다. 반대로 값을 줄이면 재조정이 더디지만, 데이터노드의 다른 작업에 리소스를 더 많이 할당 할 수 있다.
값 변경은 아래와 같다.
1. HDFS서비스의 구성탭 선택
2. hdfs-site.xml에 대한 DataNode 고급 구성 스니펫(안전 밸브) 검색
3. Value값 변경
<property> <name>dfs.datanode.balance.max.concurrent.moves</name> <value>50</value> </property>
4. 변경 후 저장
[ 밸런서에 대한 권장 구성 ]
HDFS밸런서를 백그라운드에서 실행할지 최대속도는 어느정도일지 권장되는 값은 아래와 같다.
Property | Values for Running the Balancer in the Background | Value for Running the Balancer at Maximum Speed |
---|---|---|
DataNode | ||
dfs.datanode.balance.bandwidthPerSec | 10 MB | 10 GB |
Balancer | ||
dfs.balancer.moverThreads | 1000 | 20000 |
dfs.balancer.max-size-to-move | 10 GB | 100 GB |
dfs.balancer.getBlocks.min-block-size | 10 MB | 100 MB |
* Ref : https://docs.cloudera.com/documentation/enterprise/latest/topics/admin_hdfs_balancer.html#cmug_topic_5_14
3. 밸런서 실행
1. HDFS서비스 선택
2. 재조정 역할이 있는지 확인
3. 작업->재조정 실행
4. 블록 크기 구성
아래와 같은 설정을 통한 블록크기 조정으로 밸런싱 시 작업 효율을 늘릴 수 있다.
- dfs.balancer.getBlocks.size : Block Metadata Batch Size
- dfs.balancer.getBlocks.min-block-size : Minimum Block Size
댓글 없음:
댓글 쓰기