术语"大数据"用于包含大量数据,高速度和各种日益增长的数据的大型数据集的集合.使用传统的数据管理系统,很难处理大数据.因此,Apache Software Foundation引入了一个名为Hadoop的框架来解决大数据管理和处理难题.
Hadoop是一个开源框架在分布式环境中存储和处理大数据.它包含两个模块,一个是MapReduce,另一个是Hadoop分布式文件系统(HDFS).
MapReduce: 它是一种并行编程模型,用于在大型商用硬件集群上处理大量结构化,半结构化和非结构化数据.
HDFS: Hadoop分布式文件系统是Hadoop框架的一部分,用于存储和处理数据集.它提供了一个容错的文件系统,可以在商用硬件上运行.
Hadoop生态系统包含不同的子项目(工具),如Sqoop,Pig和Hive用于帮助Hadoop模块.
Sqoop:它用于在HDFS和RDBMS之间导入和导出数据.
Pig:这是一个过程语言平台,用于为MapReduce操作开发脚本.
Hive:这是一个用于开发SQL类型脚本以执行MapReduce操作的平台./p>
注意:有多种方法可以执行MapReduce操作:
使用Java MapReduce程序处理结构化,半结构化和非结构化数据的传统方法.
MapReduce处理结构化的脚本方法使用Pig的半结构化数据.
MapR的Hive查询语言(HiveQL或HQL)使用Hive处理结构化数据.
Hive是一个要处理的数据仓库基础架构工具Hadoop中的结构化数据.它位于Hadoop之上,用于汇总大数据,并使查询和分析变得简单.
最初Hive是由Facebook开发的,后来Apache软件基金会将其开发并进一步开发Apache Hive这个名字的开源.它被不同的公司使用.例如,亚马逊在Amazon Elastic MapReduce中使用它.
关系数据库
OnLine事务处理(OLTP)的设计
用于实时查询和行级更新的语言
它将模式存储在数据库中并将处理后的数据存储到HDFS中.
它是专为OLAP设计的.
它提供了用于查询的SQL类型语言,称为HiveQL或HQL.
熟悉,快速,可扩展且可扩展.
以下组件图描绘了Hive的架构:
此组件图包含不同的单位.下表描述了每个单元:
单位名称 | 操作 |
---|---|
用户界面 | Hive是一种数据仓库基础架构软件,可以在用户和HDFS之间创建交互. Hive支持的用户界面是Hive Web UI,Hive命令行和Hive HD Insight(在Windows服务器中). |
Meta Store | Hive选择相应的数据库服务器来存储表格,数据库,表格中的列,其数据类型和HDFS映射的模式或元数据. |
HiveQL Process Engine | HiveQL类似于SQL,用于查询Metastore上的架构信息.它是MapReduce程序传统方法的替代品之一.我们可以编写MapReduce作业的查询并处理它,而不是用Java编写MapReduce程序. |
执行引擎 | HiveQL流程Engine和MapReduce的结合部分是Hive Execution Engine.执行引擎处理查询并生成与MapReduce结果相同的结果.它使用了MapReduce的风格. |
HDFS或HBASE | Hadoop分布式文件system或HBASE是将数据存储到文件系统的数据存储技术. |
下图描绘了Hive和Hadoop之间的工作流程.
下表定义了Hive如何与Hadoop框架交互:
步骤号. | 操作 |
---|---|
1 | 执行查询 Hive界面(如命令行或Web UI)向Driver发送查询(任何数据库驱动程序,如JDBC) ,ODBC等等)来执行. |
2 | 获取计划 驱动程序获取查询编译器的帮助,该编译器解析查询以检查语法和q uery计划或查询要求. |
3 | 获取元数据 编译器向Metastore(任何数据库)发送元数据请求. |
4 | 发送元数据 Metastore将元数据作为对编译器的响应发送. |
5 | 发送计划 编译器检查需求并将计划重新发送给驱动程序.到目前为止,查询的解析和编译已经完成. |
6 | 执行计划 驱动程序将执行计划发送到执行引擎. |
7 | 执行作业 在内部,执行作业的过程是MapReduce工作.执行引擎将作业发送到JobTracker,该JobTracker位于Name节点中,它将此作业分配给TaskTracker,后者位于Data节点中.这里,查询执行MapReduce作业. |
7.1 | 元数据操作 同时在执行中,执行引擎可以使用Metastore执行元数据操作. |
8 | 获取结果 执行引擎从数据节点接收结果. |
9 | 发送结果 执行引擎将这些结果值发送给驱动程序. |
10 | 发送结果 驱动程序将结果发送到Hive接口. |