Hive 란 무엇입니까? Archi강의 및 모드

Hive 란 무엇입니까?

Hive는 Hadoop Distributed File System(HDFS) 위에 개발된 ETL 및 데이터웨어하우징 도구입니다. Hive는 다음과 같은 작업을 수행하기 쉽게 해줍니다.

  • 데이터 캡슐화
  • 임시 쿼리
  • 대규모 데이터 세트 분석

Hive의 중요한 특징

  • Hive에서는 테이블과 데이터베이스가 먼저 생성된 다음 데이터가 이러한 테이블에 로드됩니다.
  • Hive는 테이블에 저장된 구조화된 데이터만 관리하고 쿼리하도록 설계된 데이터 웨어하우스입니다.
  • 구조화된 데이터를 처리하는 동안 Map Reduce에는 UDF와 같은 최적화 및 유용성 기능이 없지만 Hive 프레임워크에는 있습니다. 쿼리 최적화는 성능 측면에서 효과적인 쿼리 실행 방법을 의미합니다.
  • Hive의 SQL에서 영감을 받은 언어는 사용자를 Map Reduce 프로그래밍의 복잡성에서 분리합니다. 테이블, 행, 열, 스키마 등과 같은 관계형 데이터베이스 세계의 친숙한 개념을 재사용하여 학습을 용이하게 합니다.
  • Hadoop의 프로그래밍은 플랫 파일에서 작동합니다. 따라서 Hive는 디렉터리 구조를 사용하여 데이터를 "분할"하여 특정 쿼리의 성능을 향상시킬 수 있습니다.
  • Hive의 새롭고 중요한 구성 요소, 즉 스키마 정보를 저장하는 데 사용되는 Metastore입니다. 이 Metastore는 일반적으로 관계형 데이터베이스에 있습니다. 다음과 같은 방법을 사용하여 Hive와 상호 작용할 수 있습니다.
    • 웹 GUI
    • Java 데이터베이스 연결(JDBC) 인터페이스
  • 대부분의 상호 작용은 명령줄 인터페이스(CLI)를 통해 발생하는 경향이 있습니다. Hive는 Hive 쿼리 언어(HQL)를 사용하여 Hive 쿼리를 작성하는 CLI를 제공합니다.
  • 일반적으로 HQL 구문은 다음과 유사합니다. SQL 대부분의 데이터 분석가에게 익숙한 구문입니다. 아래 샘플 쿼리는 언급된 테이블 이름에 있는 모든 레코드를 표시합니다.
    • 샘플 쿼리 : 다음에서 *를 선택하세요.
  • Hive는 다음과 같은 네 가지 파일 형식을 지원합니다. TEXTFILE, SEQUENCEFILE, ORC 및 RCFILE (열 형식 파일 기록).
  • 단일 사용자 메타데이터 저장의 경우 Hive는 Derby 데이터베이스를 사용하고, 다중 사용자 메타데이터 또는 공유 메타데이터의 경우 Hive는 MYSQL을 사용합니다.

설정을 위해 MySQL 데이터베이스로 사용하고 메타데이터 정보 확인 Tutorial을 저장합니다. “HIVE 및 MYSQL 설치 및 구성”

Hive에 대한 몇 가지 핵심 사항은 다음과 같습니다.

  • HQL과 SQL의 주요 차이점은 Hive 쿼리가 기존 데이터베이스가 아닌 Hadoop의 인프라에서 실행된다는 것입니다.
  • Hive 쿼리 실행은 자동으로 생성된 일련의 맵 축소 작업과 유사합니다.
  • Hive는 클라이언트가 쿼리를 실행할 때 데이터를 쉽게 검색할 수 있도록 파티션 및 버킷 개념을 지원합니다.
  • Hive는 데이터 정리, 필터링 등을 위한 사용자 지정 특정 UDF(사용자 정의 함수)를 지원합니다. 프로그래머의 요구 사항에 따라 Hive UDF를 정의할 수 있습니다.

하이브와 관계형 데이터베이스

Hive를 사용하면 관계형 데이터베이스에서는 달성할 수 없는 몇 가지 독특한 기능을 수행할 수 있습니다. 페타바이트 단위의 엄청난 양의 데이터의 경우 이를 쿼리하고 몇 초 안에 결과를 얻는 것이 중요합니다. 그리고 Hive는 이를 매우 효율적으로 수행하며 쿼리를 빠르게 처리하고 단 몇 초 만에 결과를 생성합니다.

이제 무엇이 Hive를 그토록 빠르게 만드는지 살펴보겠습니다.

Hive와 관계형 데이터베이스의 주요 차이점은 다음과 같습니다.

관계형 데이터베이스는 “읽기 스키마 및 쓰기 스키마“. 먼저 테이블을 만든 다음 특정 테이블에 데이터를 삽입합니다. 관계형 데이터베이스 테이블에서는 삽입, 업데이트, 수정과 같은 기능을 수행할 수 있습니다.

하이브는 “읽기 전용 스키마“. 따라서 업데이트, 수정 등과 같은 기능은 이것과 함께 작동하지 않습니다. 일반적인 클러스터의 Hive 쿼리는 여러 데이터 노드에서 실행되기 때문입니다. 따라서 여러 노드에서 데이터를 업데이트하고 수정할 수 없습니다.(0.13 미만의 Hive 버전)

또한 Hive는 “많이 읽고 한 번만 쓰세요" 패턴. 즉, 테이블을 삽입한 후 최신 Hive 버전에서 테이블을 업데이트할 수 있습니다.

주의사항: 그러나 새 버전의 Hive에는 업데이트된 기능이 포함되어 있습니다. Hive 버전(Hive 0.14)에는 업데이트 및 삭제 옵션이 새로운 기능으로 제공됩니다.

하이브 Archi강의

하이브 Archi강의

위의 스크린샷은 다음을 설명합니다. 아파치 하이브 아키텍처의 세부 사항

Hive는 주로 3개의 핵심 부품으로 구성됩니다.

  1. 하이브 클라이언트
  2. 하이브 서비스
  3. 하이브 스토리지 및 컴퓨팅

하이브 클라이언트:

Hive는 다양한 유형의 애플리케이션과 통신하기 위한 다양한 드라이버를 제공합니다. Thrift 기반 애플리케이션의 경우 통신을 위해 Thrift 클라이언트를 제공합니다.

럭셔리 Java 관련 애플리케이션에 대해서는 JDBC 드라이버를 제공합니다. 모든 유형의 응용 프로그램 외에 ODBC 드라이버가 제공됩니다. 이러한 클라이언트와 드라이버는 다시 Hive 서비스의 Hive 서버와 통신합니다.

하이브 서비스:

클라이언트와 Hive의 상호작용은 Hive 서비스를 통해 수행할 수 있습니다. 클라이언트가 Hive에서 쿼리 관련 작업을 수행하려면 Hive 서비스를 통해 통신해야 합니다.

CLI는 명령줄 인터페이스로 DDL(데이터 정의 언어) 작업을 위한 Hive 서비스 역할을 합니다. 모든 드라이버는 위의 아키텍처 다이어그램에 표시된 대로 Hive 서버 및 Hive 서비스의 주 드라이버와 통신합니다.

Hive 서비스에 있는 드라이버는 기본 드라이버를 나타내며 모든 유형의 JDBC, ODBC 및 기타 클라이언트 특정 애플리케이션과 통신합니다. 드라이버는 추가 처리를 위해 다양한 애플리케이션의 요청을 메타 스토어 및 필드 시스템으로 처리합니다.

Hive 스토리지 및 컴퓨팅:

Meta store, File system, Job Client와 같은 Hive 서비스는 차례로 Hive 저장소와 통신하고 다음 작업을 수행합니다.

  • Hive에서 생성된 테이블의 메타데이터 정보는 Hive의 “Meta Storage Database”에 저장됩니다.
  • 쿼리 결과와 테이블에 로드된 데이터는 HDFS의 Hadoop 클러스터에 저장됩니다.

작업 실행 흐름:

작업 실행 흐름

위 스크린샷에서 Hadoop을 사용하는 Hive의 작업 실행 흐름을 이해할 수 있습니다.

Hive의 데이터 흐름은 다음 패턴에 따라 작동합니다.

  1. UI(사용자 인터페이스)에서 쿼리 실행
  2. 드라이버는 계획을 얻기 위해 컴파일러와 상호 작용합니다. (여기서 계획은 쿼리 실행을 의미) 프로세스 및 관련 메타데이터 정보 수집
  3. 컴파일러는 실행될 작업에 대한 계획을 만듭니다. 메타데이터 요청을 받기 위해 메타 저장소와 통신하는 컴파일러
  4. 메타 저장소는 메타데이터 정보를 다시 컴파일러로 보냅니다.
  5. 쿼리를 실행하기 위해 제안된 계획을 사용하여 드라이버와 통신하는 컴파일러
  6. 드라이버가 실행 엔진에 실행 계획 보내기
  7. 실행 엔진(EE)은 Hive와 Hadoop 간의 브리지 역할을 하여 쿼리를 처리합니다. DFS 작업을 위해.
  • EE는 먼저 이름 노드에 연결한 다음 데이터 노드에 연결하여 테이블에 저장된 값을 가져와야 합니다.
  • EE는 데이터 노드에서 원하는 레코드를 가져옵니다. 테이블의 실제 데이터는 데이터 노드에만 상주합니다. 네임 노드에서는 쿼리에 대한 메타데이터 정보만 가져옵니다.
  • 언급된 쿼리와 관련된 데이터 노드로부터 실제 데이터를 수집합니다.
  • 실행 엔진(EE)은 Hive에 있는 메타 스토어와 양방향으로 통신하여 DDL(데이터 정의 언어) 작업을 수행합니다. 여기서 CREATE, DROP 및 ALTERING 테이블과 데이터베이스와 같은 DDL 작업이 수행됩니다. 메타 스토어는 데이터베이스 이름, 테이블 이름 및 열 이름에 대한 정보만 저장합니다. 언급된 쿼리와 관련된 데이터를 가져옵니다.
  • EE(실행 엔진)는 이름 노드, 데이터 노드, 작업 추적기와 같은 Hadoop 데몬과 통신하여 Hadoop 파일 시스템 위에서 쿼리를 실행합니다.
  1. 드라이버에서 결과를 가져오는 중
  2. 실행 엔진으로 결과를 보냅니다. 데이터 노드에서 EE로 결과를 가져온 후에는 결과를 드라이버와 UI(프런트 엔드)로 다시 보냅니다.

Hive 실행 엔진을 통해 Hadoop 파일 시스템 및 해당 데몬과 지속적으로 접촉합니다. 작업 흐름 다이어그램의 점선 화살표는 Hadoop 데몬과의 실행 엔진 통신을 보여줍니다.

다양한 Hive 모드

Hive는 Hadoop의 데이터 노드 크기에 따라 두 가지 모드로 작동할 수 있습니다.

이러한 모드는,

  • 로컬 모드
  • 지도 축소 모드

로컬 모드를 사용하는 경우:

  • 하나의 데이터 노드가 있는 의사 모드로 Hadoop을 설치한 경우 이 모드에서 Hive를 사용합니다.
  • 단일 로컬 머신으로 제한되어 데이터 크기가 더 작은 경우 이 모드를 사용할 수 있습니다.
  • 로컬 머신에 있는 더 작은 데이터 세트의 처리 속도는 매우 빠릅니다.

맵 축소 모드를 사용하는 경우:

  • Hadoop에 여러 데이터 노드가 있고 데이터가 여러 노드에 분산되어 있는 경우 이 모드에서 Hive를 사용합니다.
  • 대량의 데이터 세트에 대해 수행되며 쿼리는 병렬 방식으로 실행됩니다.
  • 이 모드를 통해 더 나은 성능으로 대규모 데이터 세트를 처리할 수 있습니다.

하이브에서 이 속성을 설정하여 하이브가 어떤 모드로 작동할 수 있는지 언급할 수 있습니다. 기본적으로 맵 리듀스 모드에서 작동하며 로컬 모드에서는 다음 설정을 사용할 수 있습니다.

로컬 모드 세트에서 작동하는 하이브

SET mapred.job.tracker=로컬;

Hive 버전 0.7부터는 로컬 모드에서 맵 축소 작업을 자동으로 실행하는 모드를 지원합니다.

Hive Server2(HS2)란 무엇입니까?

HiveServer2(HS2)는 다음 기능을 수행하는 서버 인터페이스입니다.

  • 원격 클라이언트가 Hive에 대해 쿼리를 실행할 수 있도록 합니다.
  • 언급된 쿼리의 결과를 검색합니다.

최신 버전에는 다음과 같은 Thrift RPC 기반의 몇 가지 고급 기능이 있습니다.

  • 다중 클라이언트 동시성
  • 인증

요약

Hive는 Hadoop 생태계 기반의 ETL 및 데이터웨어하우스 도구로, 구조화되고 반구조화된 데이터를 처리하는 데 사용됩니다.

  • Hive는 Hadoop 생태계에 존재하는 데이터베이스로 DDL 및 DML 작업을 수행하고, 더 나은 데이터 쿼리 및 처리를 위해 HQL과 같은 유연한 쿼리 언어를 제공합니다.
  • 특정 제한 사항이 있는 RDMS에 비해 많은 기능을 제공합니다.

클라이언트 요구 사항을 충족하기 위한 사용자별 논리입니다.

  • 사용자 정의 스크립트와 사용자 정의 함수를 작성하고 배포하는 옵션을 제공합니다.
  • 또한 스토리지별 로직을 위한 파티션과 버킷을 제공합니다.