数据的操作语言是SQL,因此很多工具的开发目标自然就是能够在Hadoop上使用SQL。这些工具有些只是在MapReduce之上做了简单的包装,有些则是在HDFS之上实现了完整的数据仓库,而有些则介于这两者之间。这样的工具有很多,来自于Shoutlet的软件开发工程师Matthew Rathbone最近发表了一篇文章,他列举了一些常用的工具并对各个工具的应用场景和未来进行了分析。
Apache Hive
Hive是原始的SQL-on-Hadoop解决方案。它是一个开源的Java项目,能够将SQL转换成一系列可以在标准的Hadoop TaskTrackers上运行的MapReduce任务。Hive通过一个metastore(本身就是一个数据库)存储表模式、分区和位置以期提供像MySQL一样的功能。它支持大部分MySQL语法,同时使用相似的database/table/view约定组织数据集。Hive提供了以下功能:
Hive-QL,一个类似于SQL的查询接口
一个命令行客户端
通过中央服务支持元数据共享
JDBC驱动
多语言Apache Thrift驱动
一个用于创建自定义函数和转换的Java API
何时使用它?
Hive是一个几乎所有的Hadoop机器都安装了的实用工具。Hive环境很容易建立,不需要很多基础设施。鉴于它的使用成本很低,我们几乎没有理由将其拒之门外。
但是需要注意的是,Hive的查询性能通常很低,这是因为它会把SQL转换为运行得较慢的MapReduce任务。
Hive的未来
Hortonworks目前正在推进Apache Tez的开发以便于将其作为新的Hive后端解决现在因为使用MapReduce而导致的响应时间慢的问题。
Cloudera Impala
Impala是一个针对Hadoop的开源的“交互式”SQL查询引擎。它由Cloudera构建,后者是目前市场上最大的Hadoop供应商之一。和Hive一样,Imp