HDFS 및 HBase 리밸런싱

Q·2023년 9월 30일
0

✅ 개요

  • Hadoop Cluster의 상태를 모니터링 시스템을 통하여 플랫폼의 slave 서버들을 확인한 결과 일부 서버간의 현재 저장된 디스크 용량의 차이가 존재한다는 것을 확인
  • 한쪽 서버에 write requests count가 압도적으로 높다면, 데이터와 요청이 한쪽에 집중되어 있어 자원 분배가 잘 이루어지지 않았다고 판단할 수 있으며 이런 경우 HBase의 리밸런싱 기능을 사용하여 리전의 분산을 개선하거나, 클러스터 구성 및 설정을 조정하여 부하를 고르게 분산시켜 전체 클러스터 성능과 안정성을 개선해야 한다.
  • 따라서 HBase 리밸런싱을 진행

✅ 시나리오

⚡ HDFS 리밸런싱 작업 수행하기 전

  1. HDFS Balancer를 실행하기 전에 hdfs dfsadmin -report 명령어를 사용하여 클러스터 상태를 확인할 수 있다.

  2. HDFS Balancer를 실행 할 사용자 슈퍼유저 권한 추가 (shell 일때)

    1. hdfs-site.xml 파일에서 supergroup을 수정하여 사용자가 속한 그룹을 추가하거나, 특정 사용자를 슈퍼유저로 지정
    2. 예를 들어, 다음과 같이 hdfs-site.xml 파일에서 "supergroup" 속성을 수정할 수 있다.
    <property>
      <name>dfs.permissions.superusergroup</name>
      <value>xxxx</value>
    </property>
  3. HDFS Balancer를 실행 할 사용자 슈퍼유저 권한 추가 (Ambari 일때)

    1. Ambari Web UI에 로그인
    2. "Services" 탭을 클릭
    3. 왼쪽 패널에서 "HDFS"를 클릭
    4. 상단 메뉴에서 "Configs" 탭을 클릭
    5. "Custom hdfs-site" 섹션을 찾아 아래 "Add Property" 버튼을 클릭
    6. 속성 이름(Name)에 dfs.permissions.superusergroup를 입력하고, 값(Value)에 해당 그룹 이름을 입력한 후 "Add"를 클릭
    7. 변경 사항을 저장하기 위해 화면 우측 상단에 있는 "Save" 버튼을 클릭한다. 필요한 경우 변경 사항에 대한 설명을 입력할 수 있다.

⚡ HDFS 리밸런싱( shell )

  1. 다음으로, 리밸런싱을 시작하기 전에 사용률 임계값과 처리 속도 제한을 결정해야 한다. 이를 위해 다음의 옵션을 사용하여 HDFS Balancer를 실행할 수 있다:

    
    hdfs balancer [-policy <policy>] [-threshold <threshold>] [-bandwidth <bandwidth_per_second>]
    • <policy>: 사용할 정책을 선택 (예: datanode).
    • <threshold>: 사용률 차이의 허용치를 지정한다. 기본값은 10입니다.
    • <bandwidth_per_second>: 데이터 노드 간 이동하는 데이터의 최대 대역폭(바이트/초)을 지정한다. 기본값은 10MB/s이다.
  2. 예를 들어, 사용률 차이를 12로 설정하고 최대 대역폭을 50MB/s로 설정하려면 다음과 같이 실행한다:

    hdfs balancer -threshold 12 -bandwidth 52428800
  3. 리밸런싱 작업이 시작되면, balancer가 데이터 블록을 이동시켜 데이터 노드 간의 사용률을 균형있게 유지한다. 이 과정은 일정 시간이 소요될 수 있으며, 작업이 완료되면 결과가 출력된다.

  4. 작업이 완료된 후, 다시 hdfs dfsadmin -report 명령어를 사용하여 사용률이 균형을 이루었는지 확인

⚡ HDFS 리밸런싱( Ambari )

  1. Ambari 웹 UI에 로그인
  • (http://:8080)
  1. Services 탭을 클릭한 다음 왼쪽 메뉴에서 HDFS를 선택
  2. Service Actions 드롭다운 메뉴에서 Rebalance HDFS를 선택
  3. Start Balancer 버튼을 클릭하여 리밸런싱 작업을 시작

!! 주의 ) 암바리에서 HDFS Balancer를 눌렀을 때 빠르게 "OK"로 되었다면, 이는 HDFS Balancer 실행이 시작되었다는 것을 의미합니다. 이 말은 실제로 데이터가 이동되어 리밸런싱이 완료되었다는 것을 의미하지는 않는다.

HDFS Balancer는 백그라운드에서 실행되며, 클러스터의 데이터 분포를 조정하고 디스크 사용률 차이를 줄이는 작업을 수행한다. 이 프로세스는 클러스터 크기와 데이터 분포에 따라 몇 분에서 몇 시간 이상 걸릴 수 있다. Balancer의 진행 상황을 확인하려면, 해당 작업이 실행 중인 HDFS 노드에서 Hadoop 로그 파일을 확인해야 한다. 로그 파일은 일반적으로 /data0/var/log/hadoop/hdfs 디렉토리에 위치하며, 명령에서 -Dhadoop.log.dir-Dhadoop.log.file로 설정한 값에 따라 다르다.

ps aux | grep Balancer 명령어로 현재 백그라운드로 실행중인 작업을 확인 할 수 있다.


⚡ HBase 리밸런싱 작업 수행하기 전

  1. 클러스터 상태 확인
    • HBase 웹 UI, Hadoop 웹 UI, 각 노드의 상태, 그리고 기타 모니터링 도구를 사용하여 클러스터의 전반적인 상태를 파악
  2. 테이블 및 노드 통계 수집
    • HBase Shell의 status 명령어를 사용하여 테이블, 리전, 노드 단위로 통계를 수집합니다. 이를 통해 각 노드에서 처리되는 리전의 수, 요청 수, 데이터 크기 등의 정보를 파악
  3. 불균형 여부 확인
    • 수집된 통계를 바탕으로 불균형 여부를 확인한다. 예를 들어, 특정 노드의 리전 수나 요청 수가 다른 노드들과 비교해 높다면 불균형이 발생한 것으로 판단할 수 있다.
  4. 클러스터 설정 검토
    • 클러스터 설정 파일 (예: hbase-site.xml)을 검토하여 리밸런싱과 관련된 설정이 적절한지 확인한다. 예를 들어, hbase.master.loadbalance.bytablehbase.regionserver.region.split.policy와 같은 설정이 올바른 값으로 설정되어 있는지 확인해야 한다.
  5. 리밸런싱 전략 결정
    • 불균형이 발견되면, 리밸런싱 작업을 수행하여 문제를 해결해야 한다. 리밸런싱 전략은 클러스터의 상황에 따라 다르며, 리전의 수를 균등하게 분산시키거나, 요청 수를 균등하게 분산시키는 등의 방법을 선택할 수 있다.
  6. 리밸런싱 작업 수행
    • 결정된 리밸런싱 전략에 따라 작업을 수행한다.

HBase 리밸런싱 작업( Ambari )

  1. Ambari 웹 UI에 로그인
  • (http://:8080)
  1. Services 탭을 클릭한 다음 왼쪽 메뉴에서 HBase를 선택
  2. Service Actions 드롭다운 메뉴에서 Balancer를 선택
  3. Start Balancer 버튼을 클릭하여 리밸런싱 작업을 시작

HBase 리밸런싱 작업(shell)

  1. HBase shell을 시작
hbase shell
  1. HBase shell에서 다음 명령을 실행하여 리밸런싱 작업을 시작
balancer
  1. 리밸런싱 작업이 완료되면 "true" 또는 "false"가 출력, "true"는 리밸런싱이 수행되었음을 나타내며, "false"는 리밸런싱이 필요하지 않거나 이미 진행 중인 경우이다.
profile
Data Engineer

0개의 댓글