[hadoop] 돼지와 하이브의 차이? 왜 둘 다 있습니까? [닫은]

저의 배경-하둡 세계에서 4 주가되었습니다. Cloudera의 Hadoop VM을 사용하여 Hive, Pig 및 Hadoop에서 약간 눈을 led습니다. Map-Reduce 및 GFS에 대한 Google의 논문을 읽었습니다 ( PDF 링크 ).

나는 이해-

  • Pig의 언어 Pig Latin은 선언적 프로그래밍 스타일과 같은 SQL에서 (프로그래머가 생각하는 방식에 적합) Hive의 쿼리 언어가 SQL과 매우 유사합니다.

  • 돼지는 하둡 위에 있고 원칙적으로 드라이어드 위에 앉아도됩니다. 나는 틀렸을 수도 있지만 Hive는 Hadoop과 밀접한 관련이 있습니다.

  • Pig Latin 및 Hive 명령은 모두 작업을 매핑하고 줄이기 위해 컴파일됩니다.

내 질문-돼지 (예 : 돼지)가 목적을 달성 할 수있을 때 둘 다 갖는 목표는 무엇입니까? Yahoo!가 Pig를 전파했기 때문입니까? 페이스 북으로 하이브?



답변

Yahoo!의 Pig 아키텍트 인 Alan Gates 의이 에서 Pig 대신 Hive와 같은 SQL을 언제 사용할 것인지 비교해보십시오. 그는 Pig (vs. 선언적 SQL)와 같은 절차 적 언어의 유용성과 데이터 흐름 설계자에게의 유용성에 대해 매우 설득력있는 사례를 제시합니다.


답변

Hive는 SQL에 익숙한 커뮤니티에 호소하도록 설계되었습니다. 그 철학은 또 다른 스크립팅 언어가 필요하지 않다는 것입니다. Hive는 사용자가 선택한 언어 (SQL 절에 포함 가능)로 변환 스크립트를 지원하고 축소합니다. Facebook에서 SQL에 익숙한 분석가와 Python에서 데이터 마이너 프로그래밍에 의해 널리 사용됩니다. Pig의 SQL 호환성 노력은 AFAIK에서 포기되었으므로 두 프로젝트의 차이점은 매우 분명합니다.

SQL 구문을 지원한다는 것은 Microstrategy와 같은 기존 BI 도구와 통합 할 수 있음을 의미합니다. Hive에는 가까운 시일 내에이 작업을 수행 할 수있는 ODBC / JDBC 드라이버 (현재 진행중인 작업)가 있습니다. 또한 이러한 환경에서 일반적인 드릴 다운 쿼리를 지원할 수있는 인덱스 지원을 추가하기 시작했습니다.

마지막으로, 이것은 질문과 직접 ​​관련이 없습니다. Hive는 분석 쿼리를 수행하기위한 프레임 워크입니다. 플랫 파일을 쿼리하는 데 주로 사용되지만 다른 저장소를 쿼리 할 수없는 이유는 없습니다. 현재 Hive는 Hbase (대부분의 RDBMS와 같은 핵심 가치 저장소)에 저장된 데이터를 쿼리하는 데 사용할 수 있으며 HadoopDB 프로젝트는 Hive를 사용하여 페더레이션 RDBMS 계층을 쿼리합니다.


답변

나는 이것이 가장 도움이된다는 것을 알았습니다 (그러나 1 년이 지났습니다)

특히 Pig vs Hive와 야후에서 언제 어디서 고용되었는지에 대해 이야기합니다. 나는 이것이 매우 통찰력있는 것을 발견했다. 몇 가지 흥미로운 메모 :

데이터 세트의 증분 변경 / 업데이트 :

대신 새로운 증분 데이터에 대해 조인하고 결과를 이전 전체 조인의 결과와 함께 사용하는 것이 올바른 방법입니다. 몇 분 밖에 걸리지 않습니다. Pig Latin에서 표준 데이터베이스 작업을이 증분 방식으로 구현할 수 있으므로 Pig는이 사용 사례에 적합한 도구입니다.

스트리밍을 통해 다른 도구를 사용하는 경우 :

스트리밍과의 돼지 통합은 또한 연구원들이 작은 데이터 세트에서 이미 디버깅 한 Perl 또는 Python 스크립트를 쉽게 가져 와서 거대한 데이터 세트에 대해 실행할 수 있도록합니다.

데이터웨어 하우징에 Hive를 사용하는 경우 :

두 경우 모두 관계형 모델과 SQL이 가장 적합합니다. 실제로, 데이터웨어 하우징은 많은 역사를 통해 SQL의 핵심 사용 사례 중 하나였습니다. 분석가가 사용하려는 쿼리 및 도구 유형을 지원하는 올바른 구성이 있습니다. 그리고 이미 현장에서 도구와 사용자 모두에 의해 사용되고 있습니다.

Hadoop 하위 프로젝트 Hive는 Hadoop에 대한 SQL 인터페이스 및 관계형 모델을 제공합니다. Hive 팀은 ODBC와 같은 인터페이스를 통해 BI 도구와 통합하기위한 작업을 시작했습니다.


답변

“불완전한”기사 의 너트 쉘 에서 Pig Vs Hive 비교를 살펴보십시오.

Hive 는 파티션, 서버, 웹 인터페이스 및 JDBC / ODBC 지원에서 PIG 보다 낫습니다 .

몇 가지 차이점 :

  1. Hive구조화 된 데이터에 적합 하고 PIG반 구조화 된 데이터에 적합합니다

  2. 하이브 에 사용되는 보고돼지 에 대한 프로그래밍

  3. Hive절차 적 언어선언적 SQL & PIG 로 사용 됩니다.

  4. 하이브 지원 파티션PIG는 하지 않습니다

  5. 하이브는 옵션으로 시작할 수 있습니다 중고품 기반 서버PIG는 할 수 없습니다

  6. Hive 는 사전에 테이블을 정의하고 ( schema ) + 스키마 정보를 데이터베이스에 저장하며 PIG 에는 데이터베이스 의 전용 메타 데이터가 없습니다.

  7. HiveAvro를 지원하지 않지만 PIG 는 지원 합니다. 편집 : Hive는 Avro를 지원하고 org.apache.hadoop.hive.serde2.avro로 serde를 지정하십시오.

  8. Pig 는 외부 조인을 수행하기위한 추가 COGROUP 기능 도 지원 하지만 하이브는 지원하지 않습니다. 그러나 Hive와 PIG 는 동적으로 결합, 순서 및 정렬 할 수 있습니다 .


답변

귀하의 질문에 대한 진정한 대답은 독립적 인 프로젝트이며 중앙에서 조정 된 목표가 없다는 것입니다. 그들은 초기에 다른 공간에 있었고 두 프로젝트가 확장됨에 따라 시간이 지남에 따라 겹쳤습니다.

Hadoop O’Reilly 책에서 해석 한 내용 :

Pig : 매우 큰 데이터 세트를 탐색하기위한 데이터 흐름 언어 및 환경

하이브 : 분산 데이터웨어 하우스


답변

돼지 / 하이브 쿼리로 유사한 결과를 얻을 수 있습니다. 주요 차이점은 쿼리 이해 / 작성 / 만들기에 대한 접근 방식에 있습니다.

Pig는 데이터 흐름을 생성하는 경향이 있습니다. 각 단계에서 처리를 수행하는 작은 단계
Hive는 데이터에 대해 SQL과 유사한 언어를 사용하여 데이터를 처리 할 수 ​​있으므로 RDBMS에서 훨씬 쉽게 변환 할 수 있습니다. SQL로)

또한 Hive의 경우이 데이터 (Beeswax for HUE 또는 Hive 웹 인터페이스)와 함께 작동하기에 좋은 인터페이스를 제공 할 수 있으며 데이터 (스키마 등)에 대한 정보를 제공하는 메타 저장소를 제공합니다. 데이터에 대한 중앙 정보.

나는 다른 쿼리에 대해 Hive와 Pig를 모두 사용합니다 (질문을 더 빠르고 쉽게 작성할 수있는 쿼리를 사용합니다.이 방법은 대부분 임시 쿼리를 사용합니다). 입력과 동일한 데이터를 사용할 수 있습니다. 그러나 현재 밀랍을 통해 많은 일을하고 있습니다.


답변

Pig를 사용하면 파이프 라인의 어느 시점에서나 데이터와 사용자 코드를로드 할 수 있습니다. 데이터가 스트리밍 데이터 (예 : 위성 또는 기기의 데이터) 인 경우 특히 중요 할 수 있습니다.

RDBMS 기반 인 Hive는 데이터를 먼저 가져 오거나로드 한 후 작업 할 수 있어야합니다. 따라서 스트리밍 데이터에서 Hive 를 사용하는 경우 다른 버킷을 사용하여 새로 도착하는 데이터를 계속 저장하는 동안 버킷 (또는 파일)을 채우고 채워진 각 버킷에서 하이브를 사용해야 합니다.

돼지는 또한 게으른 평가를 사용합니다. 프로그래밍이 쉬워지고 Hive와 같은 언어와 같은 SQL에서보다 더 많은 자유로 다른 방식으로 데이터를 분석하는 데 사용할 수 있습니다. 따라서 구조화되지 않은 일부 데이터에서 행렬 또는 패턴을 실제로 분석하고 흥미로운 계산을 원한다면 Pig를 사용하여 공정한 거리를 이동할 수 있지만 Hive를 사용하면 결과를 재생할 다른 것이 필요합니다.

Pig는 데이터 가져 오기에서는 빠르지 만 Hive와 같은 RDBMS 친화적 언어보다 실제 실행에서는 느립니다.

Pig는 병렬화에 매우 적합하므로 데이터 집합이 큰 시스템, 예를 들어 대기 시간 (결과의 특정 기준을 얻는 데 걸리는 시간)보다 결과 처리량에 더 관심이있는 시스템의 경우 우위를 점할 수 있습니다.