HBase 실행 모드: Standalone과 Distributed

HBase 실행 모드: Standalone과 Distributed (HBase run modes: Standalone and Distributed)

HBase를 어떤 환경에서 실행할 것인지에 따라 동작 방식이 달라져요. standalone 모드와 분산 모드가 무엇인지, 각각 언제 사용하는지 이해하는 페이지입니다.

출처: 문서

본문

HBase에는 standalone과 distributed 두 가지 실행 모드가 있어요. 기본적으로 HBase는 standalone 모드로 실행돼요. 어떤 모드든 HBase conf 디렉터리의 파일을 편집해 HBase를 설정해야 해요. 최소한 conf/hbase-env.sh를 편집해 HBase가 어떤 java를 사용할지 알려줘야 해요. 이 파일에서 힙 크기와 JVM의 기타 옵션, 로그 파일의 선호 위치 등 HBase 환경 변수를 설정해요. JAVA_HOME을 java 설치의 루트를 가리키도록 설정하세요.

Standalone HBase

기본 모드예요. Standalone 모드는 quickstart 섹션에서 설명하는 내용이에요. Standalone 모드에서 HBase는 HDFS를 사용하지 않아요 — 대신 로컬 파일시스템을 사용해요 — 그리고 모든 HBase 데몬과 로컬 ZooKeeper를 같은 JVM에서 실행해요. ZooKeeper는 잘 알려진 포트에 바인딩되어 클라이언트가 HBase와 통신할 수 있어요.

HDFS 위의 Standalone HBase (Standalone HBase over HDFS)

때로 유용한 standalone hbase의 변형으로, 모든 데몬이 단일 JVM 안에서 실행되지만 로컬 파일시스템 대신 HDFS 인스턴스에 영속화해요.

간단한 배포 프로파일을 원하고, 로드가 가볍지만 데이터가 노드의 오고감(comings and goings)을 넘어 영속되어야 할 때 이 프로파일을 고려할 수 있어요. 데이터가 복제되는 HDFS에 쓰는 것은 후자를 보장해줘요.

이 standalone 변형을 구성하려면 hbase-site.xml을 편집해 hbase.rootdir을 HDFS 인스턴스의 디렉터리를 가리키게 하고 hbase.cluster.distributed를 false로 설정하세요. 예:

hbase.rootdir hdfs://namenode.example.org:9000/hbase hbase.cluster.distributed false

Distributed

분산 모드는 세분화할 수 있는데, 분산이지만 모든 데몬이 단일 노드에서 실행되는 pseudo-distributed와 데몬이 클러스터의 모든 노드에 퍼져 있는 fully-distributed가 있어요. pseudo-distributed 대 fully-distributed라는 명칭은 Hadoop에서 왔어요.

Pseudo-distributed 모드는 로컬 파일시스템을 대상으로 실행할 수도 있고 Hadoop Distributed File System(HDFS) 인스턴스를 대상으로 실행할 수도 있어요. Fully-distributed 모드는 HDFS에서만 실행할 수 있어요. HDFS 설정 방법은 Hadoop 문서를 참고하세요. Hadoop 2에서 HDFS를 설정하는 좋은 실습 가이드는 https://web.archive.org/web/20221007121526/https://www.alexjf.net/blog/distributed-systems/hadoop-yarn-installation-definitive-guide/에서 볼 수 있어요.

Pseudo-distributed

quickstart 챕터에 quickstart가 추가됐어요. quickstart-pseudo를 참고하세요. 원래 이 섹션에 있던 정보 중 일부는 거기로 옮겨졌어요.

Pseudo-distributed 모드는 단순히 단일 호스트에서 실행되는 fully-distributed 모드예요. 이 HBase 설정은 테스트와 프로토타이핑 목적으로만 사용하세요. 프로덕션이나 성능 평가에는 이 설정을 사용하지 마세요.

Fully-distributed

기본적으로 HBase는 stand-alone 모드로 실행돼요. stand-alone 모드와 pseudo-distributed 모드 둘 다 소규모 테스트를 위해 제공돼요. 프로덕션 환경에는 분산 모드가 권장돼요. 분산 모드에서 여러 HBase 데몬 인스턴스가 클러스터의 여러 서버에서 실행돼요.

pseudo-distributed 모드와 마찬가지로 fully distributed 설정은 hbase.cluster.distributed 속성을 true로 설정해야 해요. 일반적으로 hbase.rootdir은 고가용성(highly-available) HDFS 파일시스템을 가리키도록 구성돼요.

또한 클러스터는 여러 클러스터 노드가 RegionServer, ZooKeeper QuorumPeer, 백업 HMaster 서버로 참여하도록 구성돼요. 이러한 설정 기본 사항은 모두 quickstart-fully-distributed에서 보여줘요.

분산 RegionServers (Distributed RegionServers)

일반적으로 클러스터에는 서로 다른 서버에서 실행되는 여러 RegionServer와 주·백업 Master 및 ZooKeeper 데몬이 포함돼요. master 서버의 conf/regionservers 파일에는 이 클러스터와 연결된 RegionServer의 호스트 목록이 들어 있어요. 각 호스트는 별도의 줄에 있어요. 이 파일에 나열된 모든 호스트는 master 서버가 시작·중지할 때 자동으로 RegionServer 프로세스가 시작·중지돼요.

ZooKeeper와 HBase (ZooKeeper and HBase)

HBase용 ZooKeeper 설정 지침은 ZooKeeper 섹션을 참고하세요.

예: 분산 HBase 클러스터 (Example: Distributed HBase Cluster)

이것은 분산 HBase 클러스터용 최소 구성(minimal) conf/hbase-site.xml이에요. 실제 작업에 사용되는 클러스터는 더 많은 커스텀 설정 매개변수를 포함할 거예요. 대부분의 HBase 설정 지시문에는 hbase-site.xml에서 값을 오버라이드하지 않는 한 사용되는 기본값이 있어요. 자세한 내용은 "Configuration Files"를 참고하세요.

hbase.rootdir hdfs://namenode.example.org:9000/hbase hbase.cluster.distributed true hbase.zookeeper.quorum node-a.example.com,node-b.example.com,node-c.example.com

이것은 conf/regionservers 파일 예시로, 클러스터에서 RegionServer를 실행해야 하는 노드 목록을 담고 있어요. 이 노드들에는 HBase가 설치되어 있어야 하고 Master 서버와 동일한 conf/ 디렉터리 내용을 사용해야 해요.

node-a.example.com node-b.example.com node-c.example.com

이것은 conf/backup-masters 파일 예시로, 백업 Master 인스턴스를 실행해야 하는 각 노드의 목록을 담고 있어요. 백업 Master 인스턴스는 기본 Master를 사용할 수 없게 되지 않는 한 유휴 상태로 대기해요.

node-b.example.com node-c.example.com

분산 HBase Quickstart (Distributed HBase Quickstart)

여러 ZooKeeper, 백업 HMaster, RegionServer 인스턴스를 가진 간단한 3노드 클러스터 구성의 실습은 quickstart-fully-distributed를 참고하세요.

절차: HDFS 클라이언트 설정 (Procedure: HDFS Client Configuration)

  1. 주목할 점: Hadoop 클러스터에서 서버 측 설정이 아닌 HDFS 클라이언트용 설정 지시문 같은 HDFS 클라이언트 설정 변경을 했다면, HBase가 이 설정 변경을 보고 사용할 수 있게 하려면 다음 방법 중 하나를 사용해야 해요.

hbase-env.sh의 HBASE_CLASSPATH 환경 변수에 HADOOP_CONF_DIR에 대한 포인터를 추가하세요.

$HBASE_HOME/conf 아래에 hdfs-site.xml(또는 hadoop-site.xml)의 복사본이나 더 나은 방법으로 심링크를 추가하세요. 또는 HDFS 클라이언트 설정이 소량뿐이라면 hbase-site.xml에 추가하세요.

이와 같은 HDFS 클라이언트 설정의 예는 dfs.replication이에요. 예를 들어 복제 팩터 5로 실행하려 한다면, 위의 작업을 해서 설정을 HBase에 사용 가능하게 만들지 않는 한 HBase는 기본값 3으로 파일을 만들어요.

클래식 패키지와 BYO Hadoop 패키지 사이의 선택 (Choosing between the Classic Package and the BYO Hadoop Package)

HBase 3.0부터 HBase는 두 개의 바이너리 패키지를 포함해요. 클래식 패키지는 HBase와 Hadoop 구성 요소를 모두 포함하는 반면, Hadoop이 없는 "Bring Your Own Hadoop" 패키지는 Hadoop 구성 요소를 생략하고 기존 Hadoop 설치의 파일을 사용해요. 클래식 바이너리 패키지 파일명은 hbase-VERSION-bin.tar.gz(예: hbase-3.0.0-bin.tar.gz)이고, Hadoop이 없는 패키지는 hbase-byo-hadoop-VERSION-bin.tar.gz(예: hbase-byo-hadoop-3.0.0-bin.tar.gz)예요.

클러스터 노드에 이미 Hadoop이 설치되어 있다면 Hadoop이 없는 패키지를 사용할 수 있어요. 이 경우 HADOOP_HOME 환경 변수가 설정되어 Hadoop 설치를 가리키는지 확인해야 해요. 이를 보장하는 가장 쉬운 방법은 hbase-env.sh에 설정하는 거예요. 위에서 설명한 것처럼 Hadoop 설정 파일이 HBase 클래스패스에 존재하는지도 여전히 확인해야 해요.

BYO Hadoop 패키지의 장점 (Advantages of the BYO Hadoop package:)

  • Hadoop 라이브러리를 교체할 필요가 없어요.
  • Hadoop과 HBase를 독립적으로 업그레이드하기 더 쉬워요(호환되는 버전을 사용하는 한).
  • 패키지와 설치 크기 모두 약 100 MB 더 작아요.

더 알아보기 (Learn more)