Hive는 비즈니스에서 널리 사용되는 빅 데이터 분석 도구이며 빅 데이터를 처음 사용하는 경우 시작하기에 좋은 곳입니다. 이 Apache Hive 강의에서는 Apache Hive의 기본 사항, 하이브가 필요한 이유, 해당 기능 및 기타 알아야 할 모든 것을 살펴봅니다.
먼저 Apache Hive가 구축되는 Hadoop 프레임워크를 이해해 봅시다.
아파치 하둡
Apache Hadoop은 무료이며 오픈 소스 기가바이트에서 페타바이트에 이르는 크기의 빅 데이터 세트를 저장하고 처리하기 위한 플랫폼입니다. Hadoop을 사용하면 데이터를 저장하고 분석하는 데 하나의 대형 컴퓨터가 필요하지 않고 수많은 컴퓨터를 클러스터링하여 방대한 데이터 세트를 병렬로 분석할 수 있습니다.
MapReduce 및 Hadoop 분산 파일 시스템은 두 가지 구성 요소입니다.
- MapReduce – MapReduce는 상용 하드웨어 클러스터에서 대량의 조직화, 반정형 및 비정형 데이터를 처리하기 위한 병렬 프로그래밍 기술입니다.
- HDFS – HDFS(Hadoop Distributed File System)는 데이터를 저장하고 처리하는 Hadoop 프레임워크 구성 요소입니다. 표준 하드웨어에서 실행되는 내결함성 파일 시스템입니다.
Sqoop, Pig 및 Hive를 포함하여 Hadoop 에코시스템의 다양한 하위 프로젝트(도구)는 Hadoop 모듈을 지원하는 데 사용됩니다.
- 하이브 – Hive는 MapReduce 계산을 수행하는 SQL 스타일 스크립트를 작성하기 위한 프레임워크입니다.
- 돼지 – Pig는 MapReduce 프로세스용 스크립트를 만드는 데 사용할 수 있는 절차적 프로그래밍 언어입니다.
- 스쿱 – Sqoop은 HDFS와 RDBMS 간에 데이터를 가져오고 내보내는 도구입니다.
아파치 하이브?
Apache Hive는 오픈 소스입니다. 데이터웨어 하우스 Apache HDFS(Hadoop Hadoop Distributed File System) 또는 Apache HBase와 같은 기타 데이터 저장 시스템에 직접 저장된 방대한 데이터 세트를 읽고, 쓰고, 관리하기 위한 프로그램입니다.
SQL 개발자는 Hive를 사용하여 일반 SQL 문과 비교할 수 있는 데이터 쿼리 및 분석을 위한 HQL(Hive Query Language) 문을 만들 수 있습니다. 긴 Java 코드를 배우고 작성할 필요를 제거하여 MapReduce 프로그래밍을 더 쉽게 만들기 위해 만들어졌습니다. 대신 HQL에 쿼리를 작성할 수 있으며 Hive는 맵을 빌드하고 기능을 줄입니다.
Apache Hive의 SQL과 유사한 인터페이스는 임시 검색을 수행하고 Hadoop 데이터를 요약하고 분석하기 위한 Gold Standard가 되었습니다. 클라우드에 포함될 때 컴퓨팅 네트워크, 이 솔루션은 특히 비용 효율적이고 확장 가능하므로 Netflix 및 Amazon을 비롯한 많은 회사에서 Apache Hive를 지속적으로 개발 및 개선하고 있습니다.
연혁
Facebook에서 근무하는 동안 Joydeep Sen Sarma와 Ashish Suchoo는 Apache Hive를 공동으로 만들었습니다. 둘 다 Hadoop을 최대한 활용하려면 다소 복잡한 Java Map-Reduce 작업을 생성해야 한다는 점을 인식했습니다. 그들은 회사 전체에서 Hadoop을 활용하는 데 필요한 기술에 대해 빠르게 성장하는 엔지니어링 및 분석 팀을 교육할 수 없다는 것을 인식했습니다. 엔지니어와 분석가는 SQL을 사용자 인터페이스로 자주 활용했습니다.
SQL은 대부분의 분석 요구 사항을 충족할 수 있지만 개발자는 Hadoop의 프로그래밍 가능성도 통합하려고 했습니다. Apache Hive는 SQL이 충분하지 않을 때 개발자가 자신의 스크립트와 프로그램을 가져올 수 있도록 하는 SQL 기반 선언적 언어라는 두 가지 목표에서 시작되었습니다.
또한 회사의 모든 데이터 세트에 대한 중앙 집중식 메타데이터(Hadoop 기반)를 보유하도록 개발되어 데이터 기반 조직의 구축을 더 쉽게 만듭니다.
Apache Hive는 어떻게 작동합니까?
간단히 말해서 Apache Hive는 HiveQL(SQL 유사) 언어로 작성된 입력 프로그램을 하나 이상의 Java MapReduce, Tez 또는 Spark 작업으로 변환합니다. (이러한 실행 엔진은 모두 Hadoop YARN과 호환됩니다.) 그 후 Apache Hive는 데이터를 Hadoop 분산 파일 시스템(HDFS)용 테이블로 정리하고 클러스터에서 작업을 수행하여 답을 얻습니다.
Data
Apache Hive 테이블은 관계형 데이터베이스의 테이블이 구성되는 것과 동일한 방식으로 배열되며 데이터 단위의 크기는 큰 것부터 작은 것까지입니다. 데이터베이스는 디비전으로 나뉜 테이블로 구성되며 이 테이블은 버킷으로 더 나뉩니다. HiveQL(Hive 쿼리 언어)은 변경 또는 추가할 수 있는 데이터에 액세스하는 데 사용됩니다. 테이블 데이터는 각 데이터베이스 내에서 직렬화되며 각 테이블에는 자체 HDFS 디렉터리가 있습니다.
아키텍처
이제 Hive 아키텍처의 가장 중요한 측면에 대해 이야기하겠습니다. Apache Hive의 구성 요소는 다음과 같습니다.
메타스토어 — 구조 및 위치와 같은 각 테이블에 대한 정보를 추적합니다. 파티션 메타데이터도 마찬가지로 Hive에 포함됩니다. 이를 통해 드라이버는 클러스터 전체에 분산된 다양한 데이터 세트의 진행 상황을 추적할 수 있습니다. 데이터는 일반적인 RDBMS 형식으로 저장됩니다. Hive 메타데이터는 드라이버가 데이터 추적을 유지하는 데 매우 중요합니다. 백업 서버는 데이터 손실 시 복구할 수 있도록 정기적으로 데이터를 복제합니다.
운전기사 – 컨트롤러 역할을 하는 드라이버가 HiveQL 문을 수신합니다. 세션을 설정하면 드라이버가 문의 실행을 시작합니다. 경영진의 수명과 진행 상황을 추적합니다. HiveQL 문을 실행하는 동안 드라이버는 필요한 메타데이터를 저장합니다. 또한 Reduce 프로세스 이후 데이터 또는 쿼리 결과 수집 지점 역할을 합니다.
컴파일러 – HiveQL 쿼리 컴파일을 실행합니다. 이제 쿼리가 실행 계획으로 변환됩니다. 작업은 계획에 나열됩니다. 또한 쿼리에 의해 변환된 결과를 얻기 위해 MapReduce가 수행해야 하는 단계도 포함합니다. 쿼리는 Hive의 컴파일러(AST)에 의해 추상 구문 트리로 변환됩니다. 호환성 및 DAG(컴파일 타임 오류)를 확인한 후 AST를 방향성 비순환 그래프로 변환합니다.
최적화 – 실행 계획에 대해 다른 변경을 수행하여 DAG를 최적화합니다. 조인 파이프라인을 단일 조인으로 전환하는 등 효율성 향상을 위해 변환을 결합합니다. 속도를 향상시키기 위해 옵티마이저는 축소 작업을 수행하기 전에 데이터에 변환을 적용하는 것과 같은 활동을 나눌 수 있습니다.
집행자 – Executor는 컴파일 및 최적화가 완료되면 작업을 실행합니다. 작업은 Executor에 의해 파이프라인됩니다.
CLI, UI 및 Thrift 서버 – 명령줄 인터페이스(CLI)는 외부 사용자가 Hive와 통신할 수 있도록 하는 사용자 인터페이스입니다. JDBC 또는 ODBC 프로토콜과 유사한 Hive의 Thrift 서버를 사용하면 외부 클라이언트가 네트워크를 통해 Hive와 통신할 수 있습니다.
보안
Apache Hive는 클라이언트-서버 상호 인증에 Kerberos를 사용하는 Hadoop 보안과 통합됩니다. HDFS는 Apache Hive에서 새로 생성된 파일에 대한 권한을 지시하므로 사용자, 그룹 및 기타 사용자가 승인할 수 있습니다.
주요 기능
- Hive는 데이터를 HDFS에 저장하지 않고 처리할 수 있는 외부 테이블을 지원합니다.
- 또한 테이블 수준에서 데이터를 세분화하여 속도를 높일 수 있습니다.
- Apache Hive는 Hadoop의 저수준 인터페이스 요구 사항을 훌륭하게 충족합니다.
- Hive는 데이터 요약, 쿼리 및 분석을 더 쉽게 만듭니다.
- HiveQL에는 프로그래밍 기술이 필요하지 않습니다. SQL 쿼리에 대한 간단한 이해만으로도 충분합니다.
- Hive를 사용하여 데이터 분석을 위한 임시 쿼리를 수행할 수도 있습니다.
- 확장 가능하고 친숙하며 적응 가능합니다.
- HiveQL에는 프로그래밍 기술이 필요하지 않습니다. SQL 쿼리에 대한 간단한 이해만으로도 충분합니다.
장점
Apache Hive는 일과 종료 보고서, 일일 트랜잭션 평가, 임시 검색 및 데이터 분석을 허용합니다. Apache Hive에서 제공하는 포괄적인 통찰력은 상당한 경쟁 우위를 제공하고 시장 요구에 보다 쉽게 대응할 수 있도록 합니다.
다음은 이러한 정보를 쉽게 사용할 수 있는 이점 중 일부입니다.
- 사용 용이성 – SQL과 유사한 언어를 사용하여 데이터 쿼리를 이해하기 쉽습니다.
- 가속 데이터 삽입 — Apache Hive는 테이블 유형이나 스키마 정의를 확인하지 않고 스키마를 읽기 때문에 데이터를 읽고 구문 분석하고 데이터베이스의 내부 형식으로 디스크에 직렬화할 필요가 없습니다. 반면 기존 데이터베이스에서는 데이터가 추가될 때마다 유효성을 검사해야 합니다.
- 뛰어난 확장성, 유연성 및 비용 효율성 – 데이터가 HDFS에 저장되기 때문에 Apache Hive는 수백 페타바이트의 데이터를 보유할 수 있으므로 일반 데이터베이스보다 훨씬 더 확장 가능한 옵션입니다. 클라우드 기반 Hadoop 서비스인 Apache Hive를 사용하면 고객이 가상 서버를 신속하게 가동 및 가동 중지하여 변화하는 워크로드를 충족할 수 있습니다.
- 광범위한 작업 능력 – 대규모 데이터 세트는 시간당 최대 100,000개의 쿼리를 처리할 수 있습니다.
제한 사항
- 일반적으로 Apache Hive 쿼리는 대기 시간이 매우 깁니다.
- 하위 쿼리 지원이 제한됩니다.
- 실시간 쿼리 및 행 수준 변경은 Apache Hive에서 사용할 수 없습니다.
- 구체화된 뷰는 지원되지 않습니다.
- 하이브에서는 업데이트 및 삭제 작업이 지원되지 않습니다.
- OLTP(온라인 전환 프로세스)용이 아닙니다.
아파치 하이브 시작하기
Apache Hive는 워크플로를 간소화하고 능률화하는 강력한 Hadoop 파트너입니다. Apache Hive를 최대한 활용하려면 원활한 통합이 필수적입니다. 첫 번째 단계는 웹 사이트.
1. 안정적인 릴리스에서 Hive 설치
Apache 다운로드 미러 중 하나에서 Hive의 최신 안정 릴리스를 다운로드하여 시작합니다(참조: 하이브 릴리스). 그런 다음 tarball의 압축을 풀어야 합니다. 이렇게 하면 hive-xyz라는 하위 폴더가 생성됩니다(여기서 xyz는 릴리스 번호임).
설치 디렉터리를 가리키도록 환경 변수 HIVE_HOME을 설정합니다.
마지막으로 $HIVE_HOME/bin을 PATH
:
2. 러닝 하이브
Hive는 Hadoop을 사용하므로 다음과 같습니다.
- 경로에 Hadoop이 있어야 합니다. 또는
3. DLL 작업
하이브 테이블 생성
첫 번째 열은 정수이고 두 번째 열은 문자열인 poke라는 테이블을 생성합니다.
테이블 탐색
모든 테이블 나열
테이블 변경 및 삭제
테이블 이름을 변경할 수 있고 열을 추가하거나 바꿀 수 있습니다.
REPLACE COLUMNS는 데이터가 아닌 테이블의 구조만 변경하면서 기존의 모든 열을 대체한다는 점에 주목할 가치가 있습니다. 네이티브 SerDe를 테이블에서 사용해야 합니다. REPLACE COLUMNS를 사용하여 테이블 스키마에서 열을 제거할 수도 있습니다.
테이블 삭제
Apache Hive에는 공식 웹 사이트를 방문하여 알아볼 수 있는 많은 추가 작업 및 기능이 있습니다.
결론
Hive 정의는 Apache Hadoop 위에 구축된 거대한 데이터 세트에 대한 쿼리 및 분석을 위한 데이터 프로그램 인터페이스입니다. 전문가들은 주로 Hive의 광범위한 데이터용으로 설계되었고 사용이 간편하기 때문에 다른 프로그램, 도구 및 소프트웨어보다 이 제품을 선택합니다.
이 튜토리얼이 Apache Hive를 시작하고 워크플로를 보다 효율적으로 만드는 데 도움이 되기를 바랍니다. 댓글로 알려주세요.
댓글을 남겨주세요.