SQL로 하둡 쿼리를 처리하는 방법 10가지

InfoWorld
SQL은 천대받기 시작한 구식 기술이다. 반면 하둡(Hadoop)은 각광받고 있는 신기술이다. 이는 일종의 상식이다.

그러나 하둡 데이터에 편리한 SQL을 배치한 다수의 프로젝트들은 하둡에 기본 탑재된 리포팅 기능을 이용하고, 하둡 데이터를 기존 데이터베이스로 내보내는 대신 하둡에 저장된 데이터에서 SQL 쿼리를 처리할 수 있는 제품이 필요하다는 점을 보여주고 있다.

독자 개발한 하둡 배포판을 공급하는 맵알(MaR)의 최신 버전(4.0.1)에는 SQL에서 하둡 쿼리를 처리할 수 있는 4개의 엔진이 탑재되어 있다. 이 4개 엔진은 아주 우수한 하둡용 SQL 쿼리 시스템이다.

그러나 이 밖에도 하둡용 SQL 기술이 많다. 여러 다양한 요구 사항과 사례에 부합하도록 개발된 기술들이다. 먼저 맵알의 SQL 엔진 4종부터 소개한다.

아파치 하이브(Apache Hive)
첫 번째 하둡용 SQL 솔루션이다. 명령줄 클라이언트를 포함, MySQL의 행위, 신택스(syntax), 인터페이스를 에뮬레이트 한 것이 특징이다.

MySQL 형식의 쿼리를 지원하는 자바 애플리케이션에 투자한 사람들을 위한 자바 API 및 JDBC 드라이버가 들어있다. 상대적으로 간단하고, 이용도 쉽다. 그러나 느리고 읽기 전용이라는 단점이 있다. 이로 인해 단점들을 개선하기 위한 여러 이니셔티브가 추진됐다.

스팅거(Stinger)
독자 개발한 하둡 배포판을 공급하는 호튼웍스(Hortonworks)는 아파치 하이브(Apache Hive)를 발전시키고, 그 성능을 강화하기 위한 방편으로 스팅거 프로젝트를 출범시켰다.

이 프로젝트의 최신 '산물'인 Stinger.next는 쿼리 응답 시간을 1초 이하로 만든다는 목표를 갖고 있다. 또한 삽입, 업데이트, 삭제 등의 트랜젝션 행동을 지원할 계획이다.

이는 향후 18개월 이내에 구현이 될 전망이며, 여기에는 SQL 분석 등의 기능도 들어있다.

아파치 드릴(Apache Drill)
구글 드레멜(Dremel, 일명 빅쿼리(BigQuery))의 오픈소스 버전인 드릴(Drill)은 여러 다양한 데이터 스토어에서 저지연(Low Latency) 쿼리를 지원하기 위해 개발됐다.

또 높은 확장성과 하둡과 NoSQL 등의 여러 쿼리 인터페이스 지원도 특징이다. 이와 함께 단 몇 밀리세컨드(1/1000)에서 몇 분에 이르기까지 다양한 실행 속도로 쿼리를 처리할 수 있다.

맵알은 드릴이 미래 지향적인 기술이지만, 기존 기술과도 후방 호환이 된다고 주장한다. 이는 프로젝트를 추진하게 된 여러 이유 가운데 하나이기도 하다.

스파크(Spark) SQL
아파치의 스파크 프로젝트는 하둡 데이터를 실시간으로 인메모리 병렬 처리하는데 목표를 두고 있다.

기반이 되는 스파크 SQL은 데이터에 SQL 쿼리를 쓸 수 있는 것이 특징이다. 더 나은 방식은 아파치 스파크용 아파치 하이브(Apache Hive for Apache Spark)다. 하이브 기술의 주요 요소를 재사용하기 때문이다.

이런 점을 감안하면, 이미 스파크를 이용하고 있는 환경의 부속물 역할을 할 수 있다(이보다 앞선 프로젝트인 샤크(Shark)가 여기에 포함된다). 이 4가지 기술 외에도 6가지가 돋보인다.

아파치 피닉스(Apache Phoenix)
개발자들은 이를 'HBase용 SQL 스킨(SQL skin for HBase)'라고 일컫는다.

높은 성능과 읽기/쓰기 작업을 위해, 내장된 JDBC 드라이버를 통해 SQL 같은 명령어로 HBase 쿼리를 처리하는 방법이다.

HBase를 이용하는 사람들이라면 쉽게 도입해 활용할 수 있다. 오픈소스이고, 벌크 데이터 불러오기 등 유용한 기능을 갖추고 있기 때문이다.

클라우데라 임팔라(Cloudera Impala)
임팔라는 기존 하이브 사용자가 그 장점을 최대한 활용할 수 있도록 하이브를 확대한, 드레멜/아파치 드릴의 또 다른 구현체라고 표현할 수 있다.

HDFS나 HBase에 저장된 데이터를 대상으로 쿼리를 처리할 수 있다. SQL 신택스는 아파치 하이브와 동일하다. 그러나 임팔라가 드릴과 다른 점은 소스를 가린다는 것이다. 즉 하둡만 쿼리 처리할 수 있다.

피보탈 HD용 HAWQ
피보탈 역시 독자적인 하둡 배포판인 피보탈 HD(Pivotal HD)를 공급하고 있다.

HAWQ는 HDFS에서 SQL 쿼리를 처리하는 피보탈의 고유 기술이다. 즉 피보탈이 병렬 SQL 처리를 지원하고, SQL 표준과의 호환성이 높지만, 기본적으로 피보탈 전용 제품이다.

프레스토(Presto)
페이스북의 엔지니어들이 개발해 내부에서 이용하고 있는 기술이다. 이 오픈소스 쿼리 엔진은 소스를 가리지 않는다는 점에서 아파치 드릴을 연상시킨다.

ANSI SQL 명령어를 이용해 하이브와 카산드라(Cassandra)에서 쿼리를 처리할 수 있다. 개발자들은 이용하는 서비스 공급자 인터페이스에 연동되는 커넥터를 개발해 시스템을 확장시킬 수 있다. 일부 데이터 삽입 기능을 지원하지만, 아주 기초적이다. 업데이트를 처리할 수 없다. 삽입만 가능하다.

오라클 빅데이터 SQL
사실 오라클이 하둡용 SQL 쿼리 엔진을 출시하는 것은 시간 문제였다.

드릴과 마찬가지로 하둡과 다른 NoSQL 스토어에서의 쿼리를 지원한다. 그러나 드릴과 달리 오라클 제품에서만 가능하다. 또 오라클 데이터베이스 12c 버전 이상에서만 통합이 가능하기 때문에 시장화에 큰 제약이 있다.

IBM BigSQL
역시 시간 문제였다. IBM은 2013년 초에 BigSQL과 관련된 첫 기술 프리뷰를 발표했다.

그렇지만 슬프게도 IBM의 특정 백엔드 제품과만 연동이 된다. IBM의 하둡인 인포스피어 빅인사이트(InfoSphere BigInsights)다. 프런트엔드에는 표준 JDBC/ODBC 클라이언트가 포함될 수 있다.

처리할 수 있는 쿼리는 IBM DB2, 테라데이타(Teradata), 퓨어데이터 시스템 포 애널리틱스(PureData Systems for Analytics) 인스턴스의 데이터들이다. editor@itworld.co.kr