SQL로 Hadoop을 쿼리하는 10 가지 방법

SQL : 오래되고 파열되었습니다. Hadoop : 새로운 매력. 이는 일반적인 통념이지만 Hadoop 데이터 저장소에 편리한 SQL 프런트 엔드를 배치하는 수많은 프로젝트는 단순히 Hadoop의 기본보고를 사용하거나 Hadoop 데이터를 기존 데이터베이스.

MapR은 자체 Hadoop 배포판을 생성하며 최신 버전 (4.0.1)은 Hadoop 바이알 SQL 쿼리를위한 4 개의 개별 엔진과 함께 번들로 제공합니다. 4 개는 하둡을위한 중요한 SQL 쿼리 시스템이지만 훨씬 더 많은 SQL-for-Hadoop 기술이 나와 있으며 난해한 것부터 보편적 인 것까지 다양한 요구와 사용 사례를 충족하도록 구축되었습니다.

첫째, MapR과 함께 제공되는 4 개의 SQL 엔진 :

Apache Hive : 이것은 명령 줄 클라이언트를 포함하여 MySQL의 동작, 구문 및 인터페이스를 에뮬레이션하려는 원래 SQL-on-Hadoop 솔루션입니다. 또한 MySQL 스타일 쿼리를 수행하는 Java 애플리케이션에 대한 기존 투자가있는 사용자를위한 Java API 및 JDBC 드라이버도 포함되어 있습니다. 상대적으로 단순하고 사용하기 쉬움에도 불구하고 Hive는 느리고 읽기 전용이어서이를 개선하기위한 많은 이니셔티브를 불러 일으켰습니다.

Stinger : 자체 Hadoop 배포판을 만든 Hortonworks는 Apache Hive의 개발을 발전시키고 성능을 향상시키기위한 방법으로 Stinger 프로젝트를 시작했습니다. 프로젝트의 최신 버전 인 Stinger.next는 트랜잭션 동작 (삽입, 업데이트 및 삭제)에 대한 지원과 함께 설계 목표 중 하나로 "1 초 미만의 쿼리 응답 시간"을 가지고 있습니다. 이러한 변경 사항은 모두 SQL 분석과 같은 다른 기능과 함께 향후 18 개월 동안 선보일 예정입니다.

Apache Drill : Google의 Dremel (BigQuery라고도 함)의 오픈 소스 구현 인 Drill은 다양한 쿼리 인터페이스 (예 : Hadoop 및 NoSQL)를 사용하여 한 번에 여러 유형의 데이터 저장소에서 짧은 지연 시간 쿼리를 수행하고 확장 성이 뛰어납니다. Drill은 또한 광범위한 실행 시간 내에 쿼리를 실행하는 것을 의미하며, 몇 밀리 초 만 지속되어 몇 분 동안 실행됩니다. MapR은 Drill이 단순히 이전 버전과 호환되는 것이 아니라 미래 지향적이라고 주장합니다. 그 이유 중 하나는 해당 프로젝트 뒤에 자체 개발 노력을 기울이기 위해 선택된 이유 중 하나입니다.

Spark SQL : Apache의 Spark 프로젝트는 Hadoop 데이터의 실시간 인 메모리 병렬 처리를위한 것입니다. Spark SQL은 데이터에 대해 SQL 쿼리를 작성할 수 있도록 그 위에 빌드됩니다. Hive 기술의 핵심 부분을 재사용하기 때문에 Apache Spark 용 Apache Hive를 더 잘 생각할 수 있습니다. 그런 의미에서 이미 Spark와 함께 일하는 사람들을위한 부속물입니다. (이전 프로젝트 인 Shark가 여기에 포함되었습니다.)

이 네 가지 외에도 여섯 가지가 두드러집니다.

Apache Phoenix : 개발자는이를 "HBase 용 SQL 스킨"이라고 부릅니다. 이는 고성능 및 읽기 / 쓰기 작업을 위해 구축 된 내장형 JDBC 드라이버를 통해 SQL과 유사한 명령으로 HBase를 쿼리하는 방법입니다. HBase는 오픈 소스이고 적극적으로 개발되었으며 대량 데이터로드와 같은 유용한 기능을 갖추고 있기 때문에 HBase를 사용하는 사람들에게는 거의 생각할 필요가 없습니다.

Cloudera Impala : 어떤면에서 Impala는 Dremel / Apache Drill의 또 다른 구현으로, 기존 Hive 사용자가이를 최대한 활용할 수 있도록 Hive를 확장하도록 설계되었습니다. HDFS 또는 HBase에 저장된 데이터를 쿼리 할 수 ​​있으며 SQL 구문은 예상대로 Apache Hive와 동일합니다. 하지만 Impala와 Drill의 주요 차이점은 소스에 구애받지 않는다는 것입니다. Hadoop을 독점적으로 쿼리합니다.

Pivotal HD 용 HAWQ : Pivotal은 자체 Hadoop 배포 (Pivotal HD)를 제공하며 HAWQ는 HDFS에서 SQL 쿼리를 수행하기위한 독점 구성 요소입니다. 결과적으로 Pivotal은 병렬 SQL 처리 및 SQL 표준에 대한 높은 준수로 인해 그루터기이지만 Pivotal 전용 제품입니다.

Presto : Facebook의 엔지니어가 구축하고 해당 회사에서 내부적으로 사용하는이 오픈 소스 쿼리 엔진은 소스에 구애받지 않는다는 점에서 Apache Drill을 연상시킵니다. ANSI SQL 명령을 사용하여 Hive와 Cassandra를 모두 쿼리 할 수 ​​있으며 개발자는 서비스 공급자 인터페이스를 사용하여 커넥터를 작성하여 시스템을 확장 할 수 있습니다. 일부 데이터 삽입 기능이 지원되지만 여전히 매우 기본적입니다. 업데이트를 수행 할 수없고 삽입 만 수행 할 수 있습니다.

Oracle BigData SQL : Oracle이 자체적으로 Hadoop 용 SQL 쿼리 프런트 엔드를 출시하기까지는 시간 문제였습니다. Drill과 마찬가지로 Hadoop 및 기타 NoSQL 저장소를 쿼리 할 수 ​​있습니다. 그러나 Drill과는 달리 Oracle의 자체 제품이며 Oracle Database 12c 이상과 만 통합되어 시장을 심각하게 제한합니다.

IBM BigSQL : IBM이 2013 년 초에 BigSQL의 첫 번째 기술 프리뷰를 발표했지만 IBM이 동일한 작업을 수행하기까지는 시간 문제였습니다. 안타깝게도 Oracle의 오퍼링과 마찬가지로 백엔드의 특정 IBM 제품과 연결되어 있습니다. 이 경우 IBM의 Hadoop, InfoSphere BigInsights입니다. 즉, 프런트 엔드는 표준 JDBC / ODBC 클라이언트가 될 수 있으며 쿼리에는 IBM DB2, Teradata 또는 PureData Systems for Analytics 인스턴스의 데이터가 포함될 수 있습니다.