大数据之数据查询方法
前言
上节我们讲了如何利用MapReduce 快速的来查询数据:https://cloud.tencent.com/developer/article/1878432
尽管使用MapReduce 快速的来查询数据,但是还是有他不方便的地方,你需要写一堆的MapReduce代码,
执行起来也不是很方便,查询数据也不方便,
有的时候你就是想简单的查询一下数据,没有一个方便的方法,肯定是比较麻烦的,
那有没有一种更方便的方法来查询数据呢?
Step 3:如何更方便的操作查询数据?
上面分别介绍了大数据的存储以及计算,但随着实践的进一步深入,工程师又发现用map reduce或者spark的方法,还是需要写大量的工程代码去实现,有的情况可能仅仅是需要做数据的查询或者简单的聚合,最好像执行SQL一样去做这件事情(执行SQL要比执行一大片代码要简单直接很多)。于是Hive就出来了,可以理解为Hive就是在大数据背景下诞生的MySQL,有表的概念,同时也通过一种叫HQL的代码去进行各种增删改查的操作,底层基于HDFS存储,HQL和SQL的语法是几乎一摸一样的。
这里利用Hive去查询数据,可以直接写SQL一样去查询,会比较方便。
Apache Hive™ 数据仓库软件有助于读取,写入和 Management 驻留在分布式存储中并使用 SQL 语法查询的大型数据集。
Hive 构建在 Apache Hadoop™ 之上,提供以下功能:
- 通过 SQL 轻松访问数据的工具,从而实现数据仓库任务,例如提取/转换/加载(ETL),报告和数据分析。
- 一种将结构强加于各种数据格式的机制
- 直接访问存储在 Apache HDFS ™ **** 或其他数据存储系统(例如 Apache HBase ™ **** )中的文件
- 通过Apache Tez ™ ,Apache Spark ™ 或MapReduce执行查询
- HPL-SQL 的过程语言
- 通过Hive LLAP,Apache YARN和Apache Slider进行亚秒级查询检索。
Hive 提供标准的 SQL 功能,包括后来的SQL:2003,SQL:2011和SQL:2016的许多分析功能。
Hive 的 SQL 也可以通过用户定义的函数(UDF),用户定义的集合(UDAF)和用户定义的表函数(UDTF)扩展为用户代码。
Step 4:如何更快的查询?
又随着技术实践的深入,大家对Hive的查询性能也不满足了,希望它查的更快性能更好,并发能更高。于是Impala就诞生了。
Impala是用于处理存储在Hadoop集群中的大量数据的MPP(大规模并行处理)sql查询引擎。 它是一个用C 和Java编写的开源软件。 与其他Hadoop的SQL引擎相比,它提供了高性能和低延迟。
换句话说,Impala是性能最高的SQL引擎(提供类似RDBMS的体验),它提供了访问存储在Hadoop分布式文件系统中的数据的最快方法。
为什么选择Impala?
Impala通过使用标准组件(如HDFS,Hbase,Metastore,YARN和Sentry)将传统分析数据库的SQL支持和多用户性能与Apache Hadoop的可扩展性和灵活性相结合。
- 使用Impala,与其他SQL引擎(如Hive)相比,用户可以使用SQL查询以更快的方式与HDFS或HBase进行通信。
- Impala可以读取Hadoop使用的几乎所有文件格式,如Parquet,Avro,RCFile。
Impala将相同的元数据,SQL语法(Hive SQL),ODBC驱动程序和用户界面(Hue Beeswax)用作Apache Hive,为面向批量或实时查询提供熟悉且统一的平台。
与Apache Hive不同,Impala不基于MapReduce算法。 它实现了一个基于守护进程的分布式架构,它负责在同一台机器上运行的查询执行的所有方面。
因此,它减少了使用MapReduce的延迟,这使Impala比Apache Hive快。
Impala的优点
以下是Cloudera Impala的一些值得注意的优点的列表。
- 使用impala,您可以使用传统的SQL知识以极快的速度处理存储在HDFS中的数据。
- 由于在数据驻留(在Hadoop集群上)时执行数据处理,因此在使用Impala时,不需要对存储在Hadoop上的数据进行数据转换和数据移动。
- 使用Impala,您可以访问存储在HDFS,HBase和Amazon s3中的数据,而无需了解Java(MapReduce作业)。您可以使用SQL查询的基本概念访问它们。
- 为了在业务工具中写入查询,数据必须经历复杂的提取 - 变换负载(ETL)周期。但是,使用Impala,此过程缩短了。加载和重组的耗时阶段通过新技术克服,如探索性数据分析和数据发现,使过程更快。
- Impala正在率先使用Parquet文件格式,这是一种针对数据仓库场景中典型的大规模查询进行优化的柱状存储布局。
这里具体的细节就不展开了,大家可以查看Impala的中文手册:
http://www.dba.cn/book/impala/
这里尽管腾讯云没有相应云上的系统,为了完整性还是介绍了相关的技术。
接下来会讲 如何做到 高并发的实时计算。实时计算部分,主要是用于分钟级别大数据的处理方法
see you !