Apache Hive安装与部署

Apache Hive安装与部署

一、上传安装文件

将Hive安装文件apache-hive-2.3.0-bin.tar.gz从Windows本地上传至Linux系统/root/tools/目录下,上传成功后如下图:

二、解压安装文件

在当前目录执行tar -zxvf apache-hive-2.3.0-bin.tar.gz -C ~/training/解压命令,将文件解压到/root/training/目录下,部分解压过程如图:

进入/root/training/目录查看解压后的目录,如图:

解压成功!

二、编辑.bash_profile文件

执行vi ~/.bash_profile命令打开系统环境变量配置文件.bash_profile,在文件末尾添加如下两个变量:

# Hive安装目录

HIVE_HOME=/root/training/apache-hive-2.3.0-bin

export HIVE_HOME

# Hive的bin目录

PATH=$HIVE_HOME/bin:$PATH

export PATH

添加完成后,保存并退出配置文件。在命令行执行source ~/.bash_profile命令,使配置文件生效。

三、添加配置文件hive-site.xml

我们进入Hive安装目录下的conf目录中查看配置文件情况,如图:

在conf目录下,我们新建一个hive-site.xml文件,内容如下:

该内容为XML文件格式。

Hive安装模式主要有两个:

-- 本地/嵌入模式

在这种模式下,Hive的元数据metadata存储本地Derby数据库中,一次只允许一个进程访问,主要用于单元测试中。

-- 远程模式

在这种模式下,Hive的元数据metadata存储在单独的数据库中,例如MySQL,Postgres,Oracle,MS SQL Server等关系型数据库。

首先我们以本地/嵌入式模式配置为例,如下:

1、Local/Embedded Mode

hive-site.xml全部内容配置如下:

文件中各属性详细介绍如下:

该属性配置包含元数据metadata的数据库的JDBC连接字符串,数据库默认为嵌入式Derby数据库,数据库名称为junit_metastore_db。create参数值为true,指明数据库junit_metastore_db不存在时则会自动创建。

(3)hive.metastore.local

该属性配置元数据存储模式类型,已经从Hive 0.10中移除,我们可以通过属性hive.metastore.uris对其进行配置,如果hive.metastore.uris属性配置为空则为本地模式,否则为远程模式,所以此处可以不配置该属性。

(4)hive.metastore.warehouse.dir

该属性配置warehouse(数据仓库)的目录,这里我们配置数据仓库名称为junit_warehouse。

四、测试

1、初始化Derby数据库

命令:schematool -dbType derby -initSchema

在命令行执行上面命令,如图:

该初始化实质上执行了hive-schema-2.3.0.derby.sql脚本,从Hive配置文件中抽取出Derby数据库的一些连接信息。

初始化成功后后,我们进入Hive安装目录,如下:

在目录下生成了一个junit_metastore_db目录,其中包含了一些数据目录和文件,这些文件中存储了数据库的元数据。

2、启动hive

在启动Hive之前,我们需要启动Hadoop,原因在于Hive底层是基于Hadoop的MapReduce工作的。首先在命令行执行start-all.sh命令启动Hadoop集群,如图:

然后执行jps,查看Hadoop集群是否启动成功,如图:

经启动成功!其次,在命令行执行hive命令启动Hive命令行,启动成功后,如图:

接下来我们在Hive中创建表,插入数据,查询表数据来演示Hive的基本使用,

(1)创建一张stu学生表

我们创建一张stu学生表,包含学生id、学生姓名name、学生年龄三个字段,如图:

创建表的SQL语法同关系型数据库一样!创建成功后,我们再次进入Hive安装目录查看发生了生么,如图:

我们看到,在当前目录下产生了一个名为junit_warehouse的目录,下面有一个stu的目录,stu目录下暂时为空!事实上,在Hive中,junit_warehouse目录类似于关系型数据库的一个实例,而stu目录类似关系型数据库中的一张表,之后我们还会看到,stu目录下的文件存储了关系型数据库中表的数据!

(2)插入几条数据

在Hive命令行执行insert into stu values(1,”Tom”,20),插入一条数据,如图:

我们发现执行该SQL时,Hive引擎将其转换成一个MapReduce任务,可以登录Hadoop的UI页面(ip地址:192.168.189.111:8088)查看该任务具体执行过程,如图:

我们继续插入2条数据,

hive> insert into stu values(2,"Mike",50);

hive> insert into stu values(3,"Jone",34);

执行成功后,查看stu目录如下:

目录下生成了三个文件,每个文件保存一条数据!

(3)查看数据

执行select查询SQL,如下:

Hive操作与SQL1999如此相似,让数据库人员更容易使用Hive对数据进行分析!

五、Hive远程模式安装

前面我们已经成功安装了Hive的Local Mode。这部分我们介绍Hive的Remote Mode!我们只需要将Local Mode第三步替换成以下步骤即可。

1、安装MySQL数据库

此部分不是重点(略),我们已经在本机安装好MySQL!使用Navicat连接工具连接后,如图:

MySQL实例中仅有information_schema数据库!

2、安装MySQL的jar包

将mysql的jar包上传至/root/training/apache-hive-2.3.0-bin/lib目录下

3、新建hive-site.xml配置文件

配置属性如下:

MySQL数据库连接URL

MySQL连接驱动类名

MySQL数据库连接用户名

MySQL数据库连接密码

4、初始化MySQL

执行命令schematool -dbType mysql -initSchema,如图:

成功初始化后,则会在MySQL实例中新建一个hive数据库,如图:

其中,表TBLS存储Hive表的元数据,表COLUMNS_V2存储表的字段元数据

hive数据库中各元数据表之间的关系参见:

https://issues.apache.org/jira/secure/attachment/12471108/HiveMetaStore.pdf

5、测试

执行hive命令,启动hive命令行,如图:

(1)创建表stu

create table stu(id int,name string,age int);如图:

我们打开MySQL数据库中TBLS表,如下:

打开表COLUMNS_V2如下:

(2)插入3条数据

执行下面三条SQL语句,向stu中插入三条数据

hive> insert into stu values(1,"Tom",20);

hive> insert into stu values(2,"Mike",50);

hive> insert into stu values(3,"Jone",34);

那么在远程模式下,Hive表中数据保存在哪呢?我们登录HDFS(地址:192.168.189.111:50070),如图:

我们看到刚插入的三条数据保存在了HDFS文件系统中!

(3)查询数据

在Hive命令行执行查询SQL,如图:

综上,有以下几个不同:

a、在本地模式中,元数据保存在本地文件系统中,而在远程模式中,元数据保存在关系型数据库中,本例保存在MySQL数据库中

b、在本地模式中,数据库存储在本地文件系统中,以目录形式存在,数据库中的表以子目录形式存在,表中的数据以文件形式存在;而在远程模式中,数据库存储在HDFS文件系统中,以目录形式存在,数据库中的表以子目录形式存在,表中的数据以文件形式存在。两者仅仅文件系统不同而已。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180607G21TXL00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券