웹사이트 검색

고가용성 Hive 설치 및 구성 방법 – 7부


HiveHadoop 생태계의 데이터 웨어하우스 모델입니다. Hadoop 위에서 ETL 도구로 작동할 수 있습니다. Hive에서 HA(고가용성)를 활성화하는 것은 Namenode 및 Resource Manager와 같은 마스터 서비스에서 수행하는 것과 유사하지 않습니다.

Hive(Hiveserver2)에서는 자동 장애 조치가 발생하지 않습니다. Hiveserver2(HS2)가 실패하면 실패한 HS2에서 작업 실행이 실패합니다. 작업이 다른 HiveServer2에서 실행될 수 있도록 작업을 다시 제출해야 합니다. 따라서 HS2에서 HA를 활성화하는 것은 클러스터HS2 구성 요소 수를 늘리는 것뿐입니다.

이 문서에서는 Hive고가용성을 설치하고 활성화하는 단계를 살펴보겠습니다.

요구사항

  • CentOS/RHEL 7에 Hadoop 서버를 배포하기 위한 모범 사례 – 1부
  • Hadoop 전제 조건 및 보안 강화 설정 - 2부
  • CentOS/RHEL 7에서 Cloudera Manager를 설치 및 구성하는 방법 – 3부
  • CentOS/RHEL 7에서 CDH를 설치하고 서비스 배치를 구성하는 방법 – 4부
  • 네임노드의 고가용성을 설정하는 방법 – 5부
  • Resource Manager의 고가용성을 설정하는 방법 – 6부

시작하자…

Hive 설치 및 구성

1. 아래 URL에서 Cloudera Manager에 로그인한 후 Cloudera Manager –> 서비스 추가로 이동합니다. .

http://13.233.129.39:7180/cmf/home

2. 'Hive' 서비스를 선택합니다.

3. 노드에 서비스를 할당합니다.

  • 게이트웨이 – 사용자가 Hive에 액세스할 수 있는 클라이언트 서비스입니다. 일반적으로 이 서비스는 사용자 전용 Edge 노드에 배치됩니다.
  • Hive Metastore – Hive 메타데이터를 저장하기 위한 중앙 저장소입니다.
  • WebHCat 서버 – HCatalog 및 기타 Hadoop 서비스용 웹 API입니다.
  • Hiveserver2 – Hive에서 쿼리 실행을 위한 클라이언트 인터페이스입니다.

서버를 선택한 후 '계속'을 클릭하여 계속 진행하세요.

4. Hive Metastore에는 메타데이터를 저장하기 위한 기본 데이터베이스가 필요합니다. 여기서는 CDH가 내장된 기본 PostgreSQL 데이터베이스를 사용하고 있습니다.

아래에 언급된 데이터베이스 세부정보는 자동으로 입력되며, 언급된 데이터베이스가 즉시 생성되므로 '연결 테스트'는 건너뜁니다. 실시간으로 외부 데이터베이스에 데이터베이스를 생성하고 연결을 테스트해야 계속 진행됩니다. 완료한 후 '계속'을 클릭하세요.

5. Hive Warehouse 디렉터리를 구성합니다. /user/hive/warehouse는 Hive 테이블을 저장하기 위한 기본 디렉터리 경로입니다. '계속'을 클릭하세요.

6. Hive 설치가 시작됩니다.

7. 설치가 완료되면 '완료' 상태를 얻을 수 있습니다. 계속 진행하려면 '계속'을 클릭하세요.

8. Hive 설치 및 구성이 성공적으로 완료되었습니다. 설치 절차를 완료하려면 '마침'을 클릭하세요.

9. Cloudera Manager Dashboard를 통해 Cluster에 추가된 Hive 서비스를 확인할 수 있습니다.

10. Hive인스턴스에서 Hiveserver2를 볼 수 있습니다. master1Hiveserver2를 추가했습니다.

Cloudera Manager –> Hive –> 인스턴스 –> Hiveserver2.

Hive에서 고가용성 활성화

11. 다음으로 Cloudera Manager –> Hive –> 작업 –> 로 이동하여 Hive 역할을 추가합니다. 역할 인스턴스를 추가합니다.

12. Hiveserver2를 추가로 배치할 서버를 선택하세요. 2개 이상 추가할 수 있으며 제한은 없습니다. 여기서는 master2Hiveserver2를 추가합니다.

13. 서버를 선택한 후 '계속'을 클릭하세요.

14. Hiveserver2Hive 인스턴스에 추가됩니다. Cloudera Manager로 이동하여 시작해야 합니다. –> Hive –> 인스턴스 –> (Hiveserver2 선택 새로 추가됨) –> 선택된 항목에 대한 작업 –> < Strong>시작.

15. Hiveserver2master2에서 시작되면 '완료' 상태가 표시됩니다. 닫기를 클릭합니다.

16. Hiveserver2s가 모두 실행되고 있는 것을 볼 수 있습니다.

Hive 가용성 확인

씬 클라이언트인 Beeline과 명령줄을 통해 Hiveserver2를 연결할 수 있습니다. JDBC 드라이버를 사용하여 연결을 설정합니다.

17. Hive Gateway가 실행 중인 서버에 로그인합니다.

[tecmint@master1 ~]$ beeline

18. Hiveserver2를 연결하려면 JDBC 연결 문자열을 입력하세요. 이와 관련하여 문자열은 기본 포트 번호가 10000Hiverserver2(master2)를 언급하고 있습니다. 이 연결 문자열은 master2에서 실행 중인 Hiveserver2에만 연결됩니다.

beeline> !connect "jdbc:hive2://master1.linux-console.net:10000"

19. 샘플 쿼리를 실행합니다.

0: jdbc:hive2://master1.linux-console.net:10000> show databases;

이는 내장되어 있는 기본 데이터베이스입니다.

20. Hive 세션을 종료하려면 아래 명령을 사용하세요.

0: jdbc:hive2://master1.linux-console.net:10000> !quit

21. 동일한 방법을 사용하여 master2에서 실행되는 Hiveserver2를 연결할 수 있습니다.

beeline> !connect "jdbc:hive2://master2.linux-console.net:10000"

23. Zookeeper Discovery 모드에서 Hiveserver2를 연결할 수 있습니다. 이 방법에서는 연결 문자열에서 Hiveserver2를 언급할 필요가 없으며 대신 Zookeeper를 사용하여 사용 가능한 Hiveserver2를 검색합니다.

여기서는 타사 로드 밸런서를 사용하여 사용 가능한 Hiverserver2 간에 로드 밸런싱을 수행할 수 있습니다. 아래 구성은 Cloudera Manager –> Hive –> 구성으로 이동하여 Zookeeper 검색 모드를 활성화해야 합니다.

24. 다음으로 "HiveServer2 Advanced Configuration Snippet" 속성을 검색하고 + 기호를 클릭하여 아래 속성을 추가합니다.

Name : hive.server2.support.dynamic.service.discovery
Value : true
Description : <any description>

25. 속성을 입력한 후 '변경사항 저장'을 클릭하세요.

26. 구성을 변경했으므로 서비스를 다시 시작하려면 주황색 기호를 클릭하여 영향을 받는 서비스를 다시 시작해야 합니다.

27. '오래된 서비스 다시 시작'을 클릭합니다.

28. 두 가지 옵션을 사용할 수 있습니다. 클러스터가 라이브 프로덕션 중인 경우 가동 중단을 최소화하기 위해 롤링 재시작을 선호해야 합니다. 새로 설치하는 동안 두 번째 옵션인 '클라이언트 구성 재배포'를 선택하고 '지금 다시 시작'을 클릭할 수 있습니다.

29. 재시작이 성공적으로 완료되면 '완료' 상태가 표시됩니다. 프로세스를 완료하려면 '마침'을 클릭하세요.

30. 이제 Zookeeper Discovery 모드를 사용하여 Hiveserver2를 연결하겠습니다. JDBC 연결에서 Zookeeper 서버를 포트 번호 2081와 함께 사용하는 데 필요한 문자열입니다. Cloudera Manager –> Zookeeper –> 인스턴스 –>로 이동하여 Zookeeper 서버를 수집합니다(서버 이름을 기록해 두세요).

Zookeeper가 있는 3개의 서버이며, 포트 번호는 2181입니다.

master1.linux-console.net:2181
master2.linux-console.net:2181
worker1.linux-console.net:2181

31. 이제 beeline으로 들어가세요.

[tecmint@master1 ~]$ beeline

32. 아래 언급된 대로 JDBC 연결 문자열을 입력합니다. 서비스 검색 모드Zookeeper 네임스페이스를 언급해야 합니다. 'hiveserver2'는 Hiveserver2의 기본 네임스페이스입니다.

beeline>!connect "jdbc:hive2://master1.linux-console.net:2181,master2.linux-console.net:2181,worker1.linux-console.net:2181/;serviceDiscoveryMode=zookeeper;zookeeperNamespace=hiveserver2"

33. 이제 세션이 master1에서 실행되는 Hiveserver2에 연결되었습니다. 샘플 쿼리를 실행하여 유효성을 검사하세요. 데이터베이스를 생성하려면 아래 명령어를 사용하세요.

0: jdbc:hive2://master1.linux-console.net:2181,mast> create database tecmint;

34. 아래 명령을 사용하여 데이터베이스를 나열하십시오.

0: jdbc:hive2://master1.linux-console.net:2181,mast> show databases;

35. 이제 Zookeeper 검색 모드에서 고가용성을 검증하겠습니다. Cloudera Manager로 이동하여 위에서 테스트한 master1Hiveserver2를 중지합니다.

Cloudera Manager –> Hive –> 인스턴스 –> (master1에서 Hiveserver2 선택) ) –> 선택한 작업 –> 중지.

36. '중지'를 클릭하세요. 중지되면 '완료' 상태가 됩니다. Hive –> 인스턴스로 이동하여 master1Hiveserver2를 확인하세요.

37. beeline에 들어가서 Zookeeper Discovery와 동일한 JDBC 연결 문자열을 사용하여 Hiveserver2에 연결합니다. 모드는 위 단계에서 했던 것과 같습니다.

[tecmint@master1 ~]$ beeline

beeline>!connect "jdbc:hive2://master1.linux-console.net:2181,master2.linux-console.net:2181,worker1.linux-console.net:2181/;serviceDiscoveryMode=zookeeper;zookeeperNamespace=hiveserver2"

이제 master2에서 실행되는 Hiveserver2에 연결됩니다.

38. 샘플 쿼리로 확인하세요.

0: jdbc:hive2://master1.linux-console.net:2181,mast> show databases;

결론

이 문서에서는 고가용성을 갖춘 클러스터Hive 데이터 웨어하우스 모델을 보유하기 위한 자세한 단계를 수행했습니다. 실시간 프로덕션 환경에서는 3개 이상의 Hiveserver2Zookeeper 검색 모드가 활성화된 상태로 배치됩니다.

여기에서는 모든 Hiveserver2가 공통 네임스페이스 아래 Zookeeper에 등록되어 있습니다. Zookeeper는 동적으로 사용 가능한 Hiveserver2를 검색하고 Hive 세션을 설정합니다.