# 【十】部署Hive ### 10.1 实验目的 1. 理解Hive存在的原因; 2. 理解Hive的工作原理; 3. 理解Hive的体系架构; 4. 并学会如何进行内嵌模式部署; 5. 启动Hive,然后将元数据存储在HDFS上。 ### 10.2 实验要求 1. 完成Hive的内嵌模式部署; 2. 能够将Hive数据存储在HDFS上; 3. 待Hive环境搭建好后,能够启动并执行一般命令。 ### 10.3 实验原理 Hive是Hadoop 大数据生态圈中的数据仓库,其提供以表格的方式来组织与管理HDFS上的数据、以类SQL的方式来操作表格里的数据,Hive的设计目的是能够以类SQL的方式查询存放在HDFS上的大规模数据集,不必开发专门的MapReduce应用。 Hive本质上相当于一个MapReduce和HDFS的翻译终端,用户提交Hive脚本后,Hive运行时环境会将这些脚本翻译成MapReduce和HDFS操作并向集群提交这些操作。 当用户向Hive提交其编写的HiveQL后,首先,Hive运行时环境会将这些脚本翻译成MapReduce和HDFS操作,紧接着,Hive运行时环境使用Hadoop命令行接口向Hadoop集群提交这些MapReduce和HDFS操作,最后,Hadoop集群逐步执行这些MapReduce和HDFS操作,整个过程可概括如下: (1)用户编写HiveQL并向Hive运行时环境提交该HiveQL。 (2)Hive运行时环境将该HiveQL翻译成MapReduce和HDFS操作。 (3)Hive运行时环境调用Hadoop命令行接口或程序接口,向Hadoop集群提交翻译后的HiveQL。 (4)Hadoop集群执行HiveQL翻译后的MapReduce-APP或HDFS-APP。 由上述执行过程可知,Hive的核心是其运行时环境,该环境能够将类SQL语句编译成MapReduce。 Hive构建在基于静态批处理的Hadoop 之上,Hadoop 通常都有较高的延迟并且在作业提交和调度的时候需要大量的开销。因此,Hive 并不能够在大规模数据集上实现低延迟快速的查询,例如,Hive 在几百MB 的数据集上执行查询一般有分钟级的时间延迟。 因此,Hive 并不适合那些需要低延迟的应用,例如,联机事务处理(OLTP)。Hive 查询操作过程严格遵守Hadoop MapReduce 的作业执行模型,Hive 将用户的HiveQL 语句通过解释器转换为MapReduce 作业提交到Hadoop 集群上,Hadoop 监控作业执行过程,然后返回作业执行结果给用户。Hive 并非为联机事务处理而设计,Hive 并不提供实时的查询和基于行级的数据更新操作。Hive 的最佳使用场合是大数据集的批处理作业,例如,网络日志分析。 Hive架构与基本组成如图10-1所示: ![](https://box.kancloud.cn/63ec34a7bb9a266709913690e17d7723_383x332.jpg) ### 10.4 实验步骤 相对于其他组件,Hive部署要复杂得多,按metastore存储位置的不同,其部署模式分为内嵌模式、本地模式和完全远程模式三种。当使用完全模式时,可以提供很多用户同时访问并操作Hive,并且此模式还提供各类接口(BeeLine,CLI,甚至是Pig),这里我们以内嵌模式为例。 由于使用内嵌模式时,其Hive会使用内置的Derby数据库来存储数据库,此时无须考虑数据库部署连接问题,整个部署过程可概括如下。 #### 10.4.1 安装部署 在client机上操作:首先确定存在Hive ~~~ [root@client~]# ls /usr/cstor/ hive/ [root @client~]# ~~~ #### 10.4.2 配置HDFS 先为Hive配置Hadoop安装路径。 待解压完成后,进入Hive的配置文件夹conf目录下,接着将Hive的环境变量模板文件复制成环境变量文件。 ~~~ [root@client~]# cd /usr/cstor/hive/conf [root@client conf]# cp hive-env.sh.template hive-env.sh [root@client conf]# vim hive-env.sh ~~~ 在配置文件中加入以下语句: ~~~ HADOOP_HOME=/usr/cstor/hadoop ~~~ 然后在HDFS里新建Hive的存储目录。 在HDFS中新建/tmp 和 /usr/hive/warehouse 两个文件目录,并对同组用户增加写权限。 ~~~ [root@client hadoop]# bin/hadoop fs -mkdir /tmp [root@client hadoop]# bin/hadoop fs -mkdir -p /usr/hive/warehouse [root@client hadoop]# bin/hadoop fs -chmod g+w /tmp [root@client hadoop]# bin/hadoop fs -chmod g+w /usr/hive/warehouse ~~~ #### 10.4.3 启动Hive 在内嵌模式下,启动Hive指的是启动Hive运行时环境,用户可使用下述命令进入Hive运行时环境。 启动Hive命令行: ~~~ [root@client ~]# cd /usr/cstor/hive/ [root@client hive ]# bin/hive ~~~ ### 10.5 实验结果 启动结果 使用“bin/Hive”命令进入Hive环境验证Hive是否启动成功。如图10-2所示: ~~~ [root@client Hive ]# bin/Hive ~~~ ![](https://box.kancloud.cn/f2da8d696e1301f9cd74a258c74eda88_275x49.jpg) Hive基本命令 使用 “bin/Hive” 命令进入Hive环境后,使用 “show tables”, “show function”后如下图所示则表示配置成功。 ~~~ Hive> show tables ; ~~~ 如图10-3所示: ![](https://box.kancloud.cn/da5f91b51f4ed078f0232482c1d0d293_162x51.jpg) ~~~ Hive> show functions ; ~~~ 如图10-4所示: ![](https://box.kancloud.cn/010b3c377ef9faee073601002ecd8833_308x223.jpg)