Apache Hive는 Hadoop의 데이터에 대한 임시 쿼리를 수행하기 위해 Hadoop 위에있는 프레임 워크입니다. Hive는 SQL과 유사한 HiveQL을 지원하지만 SQL의 전체 구성을 지원하지는 않습니다.
Hive는 HiveQL 조회를 Java MapReduce 프로그램에 포함시킨 후 Hadoop 클러스터에 제출합니다. HiveQL과 Java MapReduce를 사용하여 동일한 결과를 얻을 수 있지만 Java MapReduce를 사용하려면 HiveQL에 비해 많은 코드를 작성 / 디버그해야합니다. 따라서 HiveQL은 개발자 생산성을 향상시킵니다.
요약하자면 Hive는 HiveQL 언어를 통해 Java MapReduce 프로그래밍보다 높은 수준의 추상화를 제공합니다. 다른 고급 추상화와 마찬가지로 Java MapReduce와 비교할 때 HiveQL을 사용하면 약간의 성능 오버 헤드가 있지만 Hive 커뮤니티는 일반적으로 사용되는 대부분의 시나리오 에서이 격차를 좁히기 위해 노력하고 있습니다.
같은 줄을 따라 Pig는 MapReduce보다 높은 수준의 추상화를 제공합니다. Pig는 PigLatin 구문을 지원하며, 이는 Java MapReduce 프로그램으로 변환 된 후 Hadoop 클러스터에 제출됩니다.
HiveQL은 SQL과 같은 선언적 언어이지만 PigLatin은 데이터 흐름 언어입니다. 하나의 PigLatin 구조의 출력은 다른 PigLatin 구조 등의 입력으로 전송 될 수 있습니다.
얼마 전 Cloudera는 일반적인 Hadoop 클러스터에서 작업 부하 특성에 대한 통계를 발표했으며 Pig 및 Hive 작업이 Hadoop 클러스터 작업의 좋은 부분을 구성한다는 것을 쉽게 확인할 수 있습니다. 개발자 생산성이 높기 때문에 많은 회사에서 Pig 및 Hive와 같은 고급 추상을 선택하고 있습니다. 따라서 MapReduce 개발과 비교할 때 Hive와 Pig 주변에 많은 일자리가 생길 것입니다.
Programming Pig 책은 2011 년 10 월에 출판되었지만 Programming Hive 책은 2012 년 10 월에 더 최근에 출판되었습니다. RDBMS에 대한 경험이있는 사람들에게는 Hive를 시작하는 것이 Pig를 시작하는 것보다 더 나은 옵션입니다. 또한 PigLatin 언어는 시작하기가 그리 어렵지 않습니다.
기본 Hadoop 클러스터의 경우 Java MapReduce 작업이 제출되는지 또는 MapReduce 작업이 Hive 및 Pig를 통해 제출되는지 투명합니다. MapReduce 작업의 배치 지향 특성으로 인해 Hive 및 Pig를 통해 제출 된 작업도 배치 지향적입니다.
실시간 응답 요구 사항의 경우 앞에서 언급 한 MapReduce 작업의 배치 지향 특성으로 인해 Hive 및 Pig는 요구 사항을 충족하지 않습니다. Cloudera는 Hadoop 기반의 대화식 임시 쿼리를 위해 Dremel (Google의 간행물)을 기반으로하는 Impala를 개발했습니다. Impala는 SQL과 유사한 쿼리를 지원하며 HiveQL과 호환됩니다. 따라서 Hive 기반으로 구축 된 모든 응용 프로그램은 Impala에서 최소한의 변경으로 작동해야합니다. Hive와 Impala의 주요 차이점은 HiveQL이 Java MapReduce 작업으로 변환되는 반면 Impala는 SQL 쿼리를 Java MapReduce 작업으로 처리하지 않는다는 것입니다.
특정 요구 사항에 대해 Pig 또는 Hive와 함께 가야합니까? 다른 블로그에 대한 주제입니다.
Praveen Sripati의 허락하에 재 출판. 원본 기사는 여기에서 찾을 수 있습니다 : http://www.thecloudavenue.com/2012/12/introduction-to-apache-hive-and-pig.html