在Hadoop的分布式文件系统(HDFS)之上,构建了一系列具备独特技术特性的SQL查询引擎。这些引擎包括Hive、Impala、Presto、Spark SQL等。此外,分布式数据库HBase也具有Impala和Phoenix这样的SQL接口,可以通过SQL与HBase进行交互。还有其他一些分布式关系型数据库(NewSQL),如CockroachDB的SQL层和TiDB的TiDB模块,不仅作为查询引擎,还可以执行SQL插入、更新和删除操作。
尽管NoSQL在过去一段时间内备受关注,但从发展趋势来看,NoSQL似乎并不能完全取代SQL。关系模型依然具有不可替代的价值,特别是在大数据处理领域。本文将简要回顾关系模型的基本概念,以帮助读者更好地理解其重要性。
关系模型之父Edgar F. Codd于1970年提出了《大型共享数据库数据的关系模型》,其中定义了三个核心要素:
在SQL-ON-Hadoop架构中,Hive仍然是最成熟的SQL引擎之一,有时也被称作数据仓库工具。Hive已经从简单的SQL解释器发展成为一个独立的SQL引擎层,但仍依赖于Hadoop的HDFS存储层。然而,它不再受制于MapReduce计算引擎,而是可以采用其他计算引擎,如Tez和Spark。
为什么需要替换MapReduce?
MapReduce对数据读写方式过于僵硬,直接使用磁盘作为中间数据存储,导致分布式并行处理性能较差。不过,MapReduce在处理超大规模数据时仍有其优势,因为内存不足以容纳所有数据。相比之下,基于内存的计算引擎在处理中小数据量时更为高效。Tez相比MapReduce具有更高的性能,因为它在执行数据处理前有自动的优化策略,目前已成为Hive的默认执行引擎。Hive执行引擎也可以换成Spark,即Hive-on-Spark。
Impala是一个开源、低延迟的SQL查询引擎,运行在Hadoop之上。Impala的特点包括:
Impala架构
Impala的后台服务(Impalad)尽量在数据节点上运行(HDFS的DataNode、HBase)。Impalad包含查询规划器(Query Planner)、查询协调器(Query Coordinator)和查询执行引擎(Query Exec Engine)。
SQL查询引擎在大数据处理中扮演着重要角色,而Hive和Impala则是其中的佼佼者。随着技术的进步,这些工具也在不断演进,以更好地满足用户的需求。未来,我们将继续探讨其他SQL查询引擎,如Presto、Spark SQL和Phoenix。
未完待续,敬请期待后续内容。