2020년 10월 11일 일요일

HADOOP HDFS [2] - CDH을 통한 리밸런싱 (Rebalancing)


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밸런서를 백그라운드에서 실행할지 최대속도는 어느정도일지 권장되는 값은 아래와 같다.

PropertyValues for Running the Balancer in the BackgroundValue for Running the Balancer at Maximum Speed
DataNode
dfs.datanode.balance.bandwidthPerSec10 MB10 GB
Balancer
dfs.balancer.moverThreads100020000
dfs.balancer.max-size-to-move10 GB100 GB
dfs.balancer.getBlocks.min-block-size10 MB100 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



댓글 없음:

댓글 쓰기