大数据系列之数据仓库Hive知识整理(一)Hive简介,架构与工作流程,环境搭建

1.Hive简介

  现如今,数据可能是当下最赚钱的资源了。面对如此多的数据,Hadoop提供了完美的解决方案,使用分布式文件系统HDFS存储数据,使用MapReduce计算模型来处理数据。不过,仍然存在着一系列的挑战,例如:(1)用户如何从一个现有的数据基础结构转移到Hadoop上,而这个结构是基于传统的关系数据库和结构化查询语句(SQL)的。(2)MapReduce计算框架实在是太麻烦,比如用MapReduce来join两个文件需要好多的代码量(前面博客写过)。可不可以在文件上直接使用类似于SQL的语句来进行操作数据,不写Mapper和Reducer函数。这样的话,对大多数的工程师来说,是真的再好不过了,能够直接使用类似于SQL语句的方式来处理数据,真是太舒服了。基于这一系列问题,建立在Hadoop上的数据仓库Hive营运而生。

Hive提供了一种类SQL的查询语言,叫做HvieQL,一种声明式的语言,用户会提交声明式的查询,而Hive会将其转换为MapReduce job.大多数情况下,用户不需要了解Hive内部是如何工作的,这样可以专注于手头上的事情。

  Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。

Hive 构建在基于静态批处理的Hadoop 之上,Hadoop 通常都有较高的延迟并且在作业提交和调度的时候需要大量的开销。因此,Hive 并不能够在大规模数据集上实现低延迟快速的查询,例如,Hive 在几百MB 的数据集上执行查询一般有分钟级的时间延迟。因此,
Hive 并不适合那些需要低延迟的应用,例如,联机事务处理(OLTP)。Hive 查询操作过程严格遵守Hadoop MapReduce  的作业执行模型,Hive 将用户的HiveQL 语句通过解释器转换为MapReduce 作业提交到Hadoop 集群上,Hadoop 监控作业执行过程,然后返回作业执行结果给用户。Hive 并非为联机事务处理而设计,Hive 并不提供实时的查询和基于行级的数据更新操作。Hive 的最佳使用场合是大数据集的批处理作业,例如,网络日志分析。
Hive 是一种底层封装了Hadoop 的数据仓库处理工具,使用类SQL 的HiveQL 语言实现数据查询,所有Hive 的数据都存储在Hadoop 兼容的文件系统(例如,Amazon S3、HDFS)中。Hive 在加载数据过程中不会对数据进行任何的修改,只是将数据移动到HDFS 中Hive 设定的目录下,因此,Hive 不支持对数据的改写和添加,所有的数据都是在加载的时候确定的。Hive 的设计特点如下。
● 支持索引,加快数据查询。
● 不同的存储类型,例如,纯文本文件、HBase 中的文件。
● 将元数据保存在关系数据库中,大大减少了在查询过程中执行语义检查的时间。
● 可以直接使用存储在Hadoop 文件系统中的数据。
● 内置大量用户函数UDF 来操作时间、字符串和其他的数据挖掘工具,支持用户扩展UDF 函数来完成内置函数无法实现的操作。
● 类SQL 的查询方式,将SQL 查询转换为MapReduce 的job 在Hadoop集群上执行。

2.Hive架构与工作流程

Hive的主要模块图示如下:

                                          

如上图所示,Hive的发行版本中附带的模块有CLI(命令行界面,如同我们安装了MySql之后的命令行界面),一个称为Hive网页界面(HWI)的简单网页界面,以及可通过JDBC,ODBC与Thrift服务器进行远程连接。对于那些更喜欢图形用户界面的用户,可以使用现在逐步出现的商业和开源的解决方案,例如Karmasphere发行的一个商业产品(http://karmasphere.com),Cloudera提供的开源的Hue项目以及Qubole提供的“Hive即服务”方式。

所有的命令和查询都会进入到Driver(驱动模式),通过该模块对输入进行解析,对需求的计算进行优化,然后按照指定的步骤执行(通常是启动多个MapReduce任务(job)来执行)。当需要启动MapReduce任务(job)时,Hive本身是不会生成Java MapReduce算法程序的。相反,Hive通过一个表示“job执行计划”的XML文件驱动执行内置的、原生的Mapper和Reducer模块。换句话说,这些通用的函数类似于微型的语言翻译程序,而这个驱动计算的“语言”是以XML形式编码的。

Hive通过和JobTracker通信来初始化MapReduce任务(Job),而不必部署在JobTracker所在的管理节点上执行。在大型集群中,通常会有网关机专门用于部署像Hive这样的工具。在这些网关机上可远程和管理节点上的JobTracker通信来执行任务(Job)。通常,要处理的数据文件是存储在分布式文件系统HDFS中的,而HDFS是由NameNode进行管理的。

Metastore(元数据存储)是一个独立的关系型数据库(通常是一个MySql实例,默认是derby),Hive会在其中保存表模式和其他系统的元数据。

工作流程如下:

                   


3.Hive架构与工作流程(软件包以及配置放在最后链接供下载使用

我们用的s10主机(已经搭建好了Hadoop集群,可以参考大数据系列之Hadoop)来进行搭建

软件包以及配置放在最后链接供下载使用,请先下载,再配置

搭建步骤如下:

1.下载hive2.1-tar.gz
       2.tar开
         $>tar -xzvf hive-2.1.0.tar.gz -C /home/zpx/soft //tar开
         $>cd /home/zpx/soft/hive-2.1.0 //
         $>ln -s hive-2.1.0 hive //符号连接

      3.配置环境变量
         [/etc/profile]

     export HIVE_HOME=/home/zpx/soft/hive
     export PATH=$PATH:$HIVE_HOME/bin

       # 使修改生效

       source /etc/profile

4.验证hive安装成功
$>hive ---version
5.配置hive,使用win8的mysql存放hive的元数据.
a)复制mysql驱动程序到hive的lib目录下。
...
b)配置hive-site.xml
复制hive-default.xml.template为hive-site.xml
修改连接信息为mysql链接地址,将${system:...字样替换成具体路径。
[hive/conf/hive-site.xml](使用的是远程链接MySql)
配置文件后面链接下载提供
6.在msyql中创建存放hive信息的数据库

mysql>create database hive ;

7.初始化hive的元数据(表结构)到mysql中。

   以下在链接的过程中可能会出现拒接链接的问题,因为是远程连接MySql被拒绝访问(如果是本地链接则忽略),如果出现了拒绝访问,那就去查看MySql的user表将Host修改为%

         



          $>cd /home/zpx/soft/hive/bin
          $>./schematool -dbType mysql -initSchema

      8.开启Hive进入命令行模式(CLI)

          $>hive

 以下为Hive的配置所用的工具包以及配置文件。其中将hive-site中的/home/zpx修改成自己的虚拟机目录,将数据库链接换成自己的

配置文件以及工具包地址

链接:https://pan.baidu.com/s/1M2cPvje8vFs6uo7fqkniTA 密码:3352


猜你喜欢

转载自blog.csdn.net/u011444062/article/details/81034559
今日推荐