hive介绍

hive是基于Hadoop的一个数据仓库工具(离线),可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。

hive的好处: 1.操作接口采用类SQL语法,提供快速开发的能力。 2.避免了去写MapReduce,减少开发人员的学习成本。 3.功能扩展很方便

hive的特点: 可扩展 Hive可以自由的扩展集群的规模,一般情况下不需要重启服务。

延展性 Hive支持用户自定义函数,用户可以根据自己的需求来实现自己的函数。

容错性 良好的容错性,节点出现问题SQL仍可完成执行。

hive执行流程

HiveQL通过命令行或者客户端提交,经过 Compiler 编译器,运用 MetaStore中的元数据进行类型检测和语法分析,生成一个逻辑方案(Logical Plan),然后通过的优化处理,产生一个MapReduce 任务。

hive安装

使用hive之前安装好mysql

上传hive压缩包解压

[root@hdp-01 ~]# tar -zxvf apache-hive-1.2.1-bin.tar.gz -C apps/
[root@hdp-01 apps]# mv apache-hive-1.2.1-bin/ hive
[root@hdp-01 conf]# vi hive-site.xml
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>

<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>

<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
<description>username to use against metastore database</description>
</property>

<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>Renxiao2019@</value>
<description>password to use against metastore database</description>
</property>
</configuration>

上传一个mysql的驱动jar包到hive的安装目录的lib中

[root@hdp-01 ~]# cp mysql-connector-java-5.1.47.jar apps/hive/lib/

配置HADOOP_HOME 和HIVE_HOME到系统环境变量中:/etc/profile

export JAVA_HOME=/root/apps/jdk1.8.0_152
export HADOOP_HOME=/root/apps/hadoop
export HIVE_HOME=/root/apps/hive
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin

source /etc/profile

命令启动hive交互界面:

[root@hdp20-04 ~]# hive

设置一些基本参数,让hive使用起来更便捷,比如:

让提示符显示当前库:

hive>set hive.cli.print.current.db=true;

显示查询结果时显示字段名称:

hive>set hive.cli.print.header=true;

但是这样设置只对当前会话有效,重启hive会话后就失效,解决办法: 在linux的当前用户目录中,编辑一个.hiverc文件,将参数写入其中:

[root@hdp-01 ~]# vi .hiverc
set hive.cli.print.header=true;
set hive.cli.print.current.db=true;

启动hive服务使用

启动hive的服务:

[root@hdp-04 apps]# scp -r hive/ hdp-01:$PWD

配置hdp-01 hive环境变量

[root@hdp-01 hive]# bin/hiveserver2 -hiveconf hive.root.logger=DEBUG,console

上述启动,会将这个服务启动在前台,如果要启动在后台,则命令如下:

[root@hdp-01 hive]# nohup bin/hiveserver2 1>/dev/null 2>&1 & [2] 19423

启动成功后,可以在别的节点上用beeline去连接

方式1 [root@hdp-04 hive]# bin/beeline 回车,进入beeline的命令界面 输入命令连接hiveserver2 beeline> !connect jdbc:hive2//hdp-01:10000

方式(2) 启动时直接连接: bin/beeline -u jdbc:hive2://mini1:10000 -n root