메뉴 건너뛰기

Bigdata, Semantic IoT, Hadoop, NoSQL

Bigdata, Hadoop ecosystem, Semantic IoT등의 프로젝트를 진행중에 습득한 내용을 정리하는 곳입니다.
필요한 분을 위해서 공개하고 있습니다. 문의사항은 gooper@gooper.com로 메일을 보내주세요.


Cloudera CDH/CDP HDFS Balancer설정및 수행

총관리자 2018.03.21 15:08 조회 수 : 169

*출처 : http://imp51.tistory.com/entry/HDFS-Balancer?category=658901


DataNode 추가/삭제의 경우 보유된 DataNode에 저장된 데이터를 전체 DataNode에 균등하게 배포하기 위해 HDFS에서 제공되는 Balancer 기능을 사용하여 데이터 조정을해야 합니다.

기본적으로 클러스터 사이즈가 큰 경우, HDFS Balancer에 이동되는 데이터의 규모가 일별 2TB로 제약되어 있기 때문에 매우 오랜 시간이 소요될 수 있습니다. 또한, 데이터 이동의 경우 NameNode의 메타 정보가 변경되기 때문에 Impala Daemon들에게 Balancer이후로 조정된 메타 정보를 인지하기 위해 Refreshment / Invalidate Metadata Command나 Catalog 서비스를 재시작이 요구되기도 합니다.

HDFS Balancers

HDFS 데이터는 예를 들면 기존 클러스터에 신규 DataNode를 추가 / 삭제하는 다양한 이유로 DataNode 전역에 균등하게 배분되어 있지 않을 수 있습니다. HDFS는 블록 배치 상태를 분석하고 DataNode간 데이터 균형을 제어하기 위한 Balancer 유틸을 제공합니다. Balancer는 클러스터 데이터 노드간의 데이터가 균등하게 배분될 때까지 데이터 블록을 이동시켜주는 역할을 담당합니다. Balancer는 데이터 노드 간의 데이터 분배의 역할을 담당하지, 단일 데이터 노드의 디스크 볼륨간의 데이터 조정 역할에는 관여를 하지 않습니다. 

Configuring and Running the HDFS Balancer Using Cloudera Manager

Cloudera Manager에서, HDFS Balancer 유틸은 Balancer 역할로 구성되어 있습니다. Balancer Role은 일반적으로 HDFS 서비스를 설치할 때 추가되며, Balancer 역할이 클러스터 노드에 추가되어 있지 않은 경우, 수동으로 Balancer Role을 추가할 수 있습니다. 

Configuring the Balancer Threshold

Balacner의 기본 임계값은 10%이며, 이는 개별 DataNode 디스크 사용량이 클러스터 전체 사용량과 10% 이내의 차이점이 존재하는지를 파악합니다. 예를 들어, 클러스터의 전체 DataNode의 사용량이 클러스터의 전체 디스크 저장 용량의 40%인 경우, 개별 DataNode의 디스크 사용량이 각 DataNode 디스크 저장 용량의 30%~50% 이내에 존재하는지 여부를 파악합니다. 이 유효한 범의를 초과하는 데이터 노드의 데이터에 대해 여부 또는 부족한 디스크 사용량을 보이는 데이터 노드로 데이터를 이동시키는 역할을 담당합니다. 임계값을 변경하기 위해서는,:

  1. HDFS 서비스로 이동 후, Configuration 탭을 클릭.
  2. "Scope > Balancer"를 선택.
  3. "Category > Main"를 선택
  4. Rebalancing Threshold 속성 값을 설정  

  5. 변경사항을 저장하기 위해서 "Save Changes"를 클릭.

Configuring Concurrent Moves

"dfs.datanode.balance.max.concurrent.moves" 옵션은 DataNode Balancer가 사용하는 최대 스레드의 수를 의미합니다. 이 옵션은 Balacner가 데이터를 이동하는 작업이 전체 DataNode의 리소스를 점유하여 정상적인 작업이 진행되는 현상을 방지하는 용도로 사용됩니다. 이 값을 늘리면 더 많은 Balancer Thread가 작업을 하기 때문에 데이터 이동을 좀 더 빠르게 진행할 수 있지만, 다른 정상적인 워크로드 작업과 리소스 경합을 할 가능성이 높아집니다. 또한 이 값을 작게 설정을 하면 데이터 Balacner 작업은 느리게 진행되지만 다른 워크로드의 작업과 데이터 노드의 리소스 경합이 될 가능성을 낮게 할 수 있습니다. 이 속성의 값을 변경하기 위해서는 Balancer와 DataNode의 두 옵션을 모두 수정해야 합니다. 

  • Datanode의 옵션을 구성하기 위해서는:

    • HDFS 서비스로 이동 후, Configuration 탭을 클릭.
    • DataNode Advanced Configuration Snippet (Safety Valve) for hdfs-site.xml를 선택.
    • 다음과 같이 구성 - 예를 들면, 50으로 설정.

      <property>
        <name>dfs.datanode.balance.max.concurrent.moves</name>
        <value>50</value>
      </property>
    • DataNode 재시작.
  • Balancer의 옵션을 구성하기 위해서:

    1. HDFS 서비스로 이동 후, Configuration 탭을 클릭.
    2. Balancer Advanced Configuration Snippet (Safety Valve) for hdfs-site.xml를 선택.
    3. 다음과 같이 구성 - 예를 들면, 50으로 설정.
      <property>
        <name>dfs.datanode.balance.max.concurrent.moves</name>
        <value>50</value>
      </property>

기타 옵션 : dfs.balance.bandwidthPerSec 

밸런서에 할당할 노드당 네트워크 대역폭은 일반적으로 사용 가능한 총 대역폭의 최대 10%으로 설정하는 것이 좋다고 합니다. 실제 프로덕션 환경에서 10Gb Ethernet인 경우 아래 설정값을 추천 합니다.
dfs.balance.bandwidthPerSec 10MB -> 최대 1GB

Running the Balancer

  1. HDFS 서비스로 이둥 후, HDFS 서비스에 Balancer 역할이 추가되어 있는지를 확인. 
  2. Actions > Rebalance를 차례로 선택.
  3. Rebalance 클릭. - 완료된 상태로 변경이 되며, Balancer가 성공적으로 실행된 것을 의미합니다. 


참고 문헌: 

- https://www.cloudera.com/documentation/enterprise/5-10-x/topics/admin_hdfs_balancer.html#xd_583c10bfdbd326ba--6eed2fb8-14349d04bee--780a

- https://www.cloudera.com/documentation/enterprise/properties/5-11-x/topics/cm_props_cdh580_hdfs.html



출처: http://imp51.tistory.com/entry/HDFS-Balancer?category=658901 [Slow but Surely!]

번호 제목 글쓴이 날짜 조회 수
438 [CDP7.1.7] oozie sqoop action으로 import혹은 export수행시 발생한 오류에 대한 자세한 로그 확인 하는 방법 gooper 2024.04.19 0
437 [CDP7.1.7, Replication]Encryption Zone내 HDFS파일을 비Encryption Zone으로 HDFS Replication시 User hdfs가 아닌 hadoop으로 수행하는 방법 gooper 2024.01.15 1
436 [CDP7.1.7]Hive Replication수행중 Specified catalog.database.table does not exist : hive.db명.table명 오류 발생시 조치방법 gooper 2024.04.05 1
435 [CDP7.1.7][Replication]Table does not match version in getMetastore(). Table view original text mismatch gooper 2024.01.02 2
434 [Cloudera Agent] Metadata-Plugin throttling_logger INFO (713 skipped) Unable to send data to nav server. Will try again. gooper 2022.05.16 7
433 [CDP7.1.7, Hive Replication]Hive Replication진행중 "The following columns have types incompatible with the existing columns in their respective positions " 오류 gooper 2023.12.27 7
432 [CDP7.1.7]Oozie job에서 ERROR: Kudu error(s) reported, first error: Timed out: Failed to write batch of 774 ops to tablet 8003f9a064bf4be5890a178439b2ba91가 발생하면서 쿼리가 실패하는 경우 gooper 2024.01.05 7
431 oozie의 sqoop action수행시 ooize:launcher의 applicationId를 이용하여 oozie:action의 applicationId및 관련 로그를 찾는 방법 gooper 2023.07.26 10
430 [CDP7.1.7]Encryption Zone내부/외부 간 데이터 이동(mv,cp)및 CTAS, INSERT SQL시 오류(can't be moved into an encryption zone, can't be moved from an encryption zone) gooper 2023.11.14 10
429 [EncryptionZone]User:testuser not allowed to do "DECRYPT_EEK" on 'testkey' gooper 2023.06.29 11
428 [CDP7.1.7]impala-shell수행시 간헐적으로 "-k requires a valid kerberos ticket but no valid kerberos ticket found." 오류 gooper 2023.11.16 11
427 [Encryption Zone]Encryption Zone에 생성된 table을 select할때 HDFS /tmp/zone1에 대한 권한이 없는 경우 gooper 2023.06.29 12
426 [Hadoop Encryption] Encryption Zone에 생성된 table에 Hue에서 insert 수행시 User:hdfs not allowed to do 'DECRYPT_EEK' ON 'testkey' 오류 gooper 2023.11.01 12
425 [Oracle 11g]Kudu table의 meta정보를 담고 있는 table_params의 백업본을 이용하여 특정 컬럼값을 update하는 Oracle SQL문 gooper 2023.09.04 13
424 Hadoop Clsuter에 이미 포함된 host의 hostname변경시 처리 절차 gooper 2023.03.24 14
423 [CDP7.1.7]EncryptionZone에 table생성및 권한 테스트 gooper 2023.09.26 14
422 [EncryptionZone]User:hdfs not allowed to do 'DECRYPT_EEK on 'enc_key'오류 gooper 2023.11.02 14
421 service name방식의 oracle을 메타정보 저장소로 사용할때 Hue Configuration설정하는 방법 총관리자 2022.02.12 15
420 [kerberos]Kerberos HA구성 참고 페이지 gooper 2022.08.31 15
419 [HA구성 이슈]oozie 2대를 L4로 HA구성했을때 발생하는 이슈 gooper 2023.01.17 15

A personal place to organize information learned during the development of such Hadoop, Hive, Hbase, Semantic IoT, etc.
We are open to the required minutes. Please send inquiries to gooper@gooper.com.

위로