关于hive:数据仓库组件Hive环境搭建和基础用法

89次阅读

共计 5122 个字符,预计需要花费 13 分钟才能阅读完成。

本文源码:GitHub || GitEE

一、Hive 根底简介

1、根底形容

Hive 是基于 Hadoop 的一个数据仓库工具,用来进行数据提取、转化、加载,是一个能够对 Hadoop 中的大规模存储的数据进行查问和剖析存储的组件,Hive 数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供 SQL 查问性能,能将 SQL 语句转变成 MapReduce 工作来执行,应用成本低,能够通过相似 SQL 语句实现疾速 MapReduce 统计,使 MapReduce 变得更加简略,而不用开发专门的 MapReduce 应用程序。hive 非常适宜对数据仓库进行统计分析。

2、组成与架构

用户接口 :ClientCLI、JDBC 拜访 Hive、WEBUI 浏览器拜访 Hive。

元数据 :Hive 将元数据存储在数据库中,如 mysql、derby。Hive 中的元数据包含表的名字,表的列和分区以及属性,表的属性(是否为内部表等),表的数据所在目录等。

驱动器 :基于解释器、编辑器、优化器实现 HQL 查问语句从词法剖析、语法分析、编译、优化以及查问打算的生成。

执行器引擎 :ExecutionEngine 把逻辑执行打算转换成能够运行的物理打算。

Hadoop 底层 :基于 HDFS 进行存储,应用 MapReduce 进行计算,基于 Yarn 的调度机制。

Hive 收到给客户端发送的交互申请,接管到操作指令 (SQL),并将指令翻译成 MapReduce,提交到 Hadoop 中执行,最初将执行后果输入到客户端。

二、Hive 环境装置

1、筹备安装包

hive-1.2,依赖 Hadoop 集群环境,地位放在 hop01 服务上。

2、解压重命名

tar -zxvf apache-hive-1.2.1-bin.tar.gz
mv apache-hive-1.2.1-bin/ hive1.2

3、批改配置文件

创立配置文件

[root@hop01 conf]# pwd
/opt/hive1.2/conf
[root@hop01 conf]# mv hive-env.sh.template hive-env.sh

增加内容

[root@hop01 conf]# vim hive-env.sh
export HADOOP_HOME=/opt/hadoop2.7
export HIVE_CONF_DIR=/opt/hive1.2/conf

配置内容一个是 Hadoop 门路,和 hive 配置文件门路。

4、Hadoop 配置

首先启动 hdfs 和 yarn;而后在 HDFS 上创立 /tmp 和 /user/hive/warehouse 两个目录并批改赋予权限。

bin/hadoop fs -mkdir /tmp
bin/hadoop fs -mkdir -p /user/hive/warehouse
bin/hadoop fs -chmod g+w /tmp
bin/hadoop fs -chmod g+w /user/hive/warehouse

5、启动 Hive

[root@hop01 hive1.2]# bin/hive

6、根底操作

查看数据库

hive> show databases ;

抉择数据库

hive> use default;

查看数据表

hive> show tables;

创立数据库应用

hive> create database mytestdb;
hive> show databases ;
default
mytestdb
hive> use mytestdb;

创立表

create table hv_user (id int, name string, age int);

查看表构造

hive> desc hv_user;
id                      int                                         
name                    string                                      
age                     int 

增加表数据

insert into hv_user values (1, "test-user", 23);

查问表数据

hive> select * from hv_user ;

留神:这里通过对查问日志的察看,显著看出 Hive 执行的流程。

删除表

hive> drop table hv_user ;

退出 Hive

hive> quit;

查看 Hadoop 目录

# hadoop fs -ls /user/hive/warehouse       
/user/hive/warehouse/mytestdb.db

通过 Hive 创立的数据库和数据存储在 HDFS 上。

三、整合 MySQL5.7 环境

这里默认装置好 MySQL5.7 的版本,并配置好相干登录账号,配置 root 用户的 Host 为 % 模式。

1、上传 MySQL 驱动包

将 MySQL 驱动依赖包上传到 hive 装置目录的 lib 目录下。

[root@hop01 lib]# pwd
/opt/hive1.2/lib
[root@hop01 lib]# ll
mysql-connector-java-5.1.27-bin.jar

2、创立 hive-site 配置

[root@hop01 conf]# pwd
/opt/hive1.2/conf
[root@hop01 conf]# touch hive-site.xml
[root@hop01 conf]# vim hive-site.xml

3、配置 MySQL 存储

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
        <property>
          <name>javax.jdo.option.ConnectionURL</name>
          <value>jdbc:mysql://hop01:3306/metastore?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>123456</value>
          <description>password to use against metastore database</description>
        </property>
</configuration>

配置实现后,顺次重启 MySQL、hadoop、hive 环境,查看 MySQL 数据库信息,多了 metastore 数据库和相干表。

4、后盾启动 hiveserver2

[root@hop01 hive1.2]# bin/hiveserver2 &

5、Jdbc 连贯测试

[root@hop01 hive1.2]# bin/beeline
Beeline version 1.2.1 by Apache Hive
beeline> !connect jdbc:hive2://hop01:10000
Connecting to jdbc:hive2://hop01:10000
Enter username for jdbc:hive2://hop01:10000: hiveroot (账户回车)
Enter password for jdbc:hive2://hop01:10000: ******   (明码 123456 回车)
Connected to: Apache Hive (version 1.2.1)
Driver: Hive JDBC (version 1.2.1)
0: jdbc:hive2://hop01:10000> show databases;
+----------------+--+
| database_name  |
+----------------+--+
| default        |
+----------------+--+

四、高级查问语法

1、根底函数

select count(*) count_user from hv_user;
select sum(age) sum_age from hv_user;
select min(age) min_age,max(age) max_age from hv_user;
+----------+----------+--+
| min_age  | max_age  |
+----------+----------+--+
| 23       | 25       |
+----------+----------+--+

2、条件查问语句

select * from hv_user where name='test-user' limit 1;
+-------------+---------------+--------------+--+
| hv_user.id  | hv_user.name  | hv_user.age  |
+-------------+---------------+--------------+--+
| 1           | test-user     | 23           |
+-------------+---------------+--------------+--+

select * from hv_user where id>1 AND name like 'dev%';
+-------------+---------------+--------------+--+
| hv_user.id  | hv_user.name  | hv_user.age  |
+-------------+---------------+--------------+--+
| 2           | dev-user      | 25           |
+-------------+---------------+--------------+--+

select count(*) count_name,name from hv_user group by name;
+-------------+------------+--+
| count_name  |    name    |
+-------------+------------+--+
| 1           | dev-user   |
| 1           | test-user  |
+-------------+------------+--+

3、连贯查问

select t1.*,t2.* from hv_user t1 join hv_dept t2 on t1.id=t2.dp_id;
+--------+------------+---------+-----------+-------------+--+
| t1.id  |  t1.name   | t1.age  | t2.dp_id  | t2.dp_name  |
+--------+------------+---------+-----------+-------------+--+
| 1      | test-user  | 23      | 1         | 技术部      |
+--------+------------+---------+-----------+-------------+--+

五、源代码地址

GitHub·地址
https://github.com/cicadasmile/big-data-parent
GitEE·地址
https://gitee.com/cicadasmile/big-data-parent

举荐浏览:编程体系整顿

序号 项目名称 GitHub 地址 GitEE 地址 举荐指数
01 Java 形容设计模式, 算法, 数据结构 GitHub·点这里 GitEE·点这里 ☆☆☆☆☆
02 Java 根底、并发、面向对象、Web 开发 GitHub·点这里 GitEE·点这里 ☆☆☆☆
03 SpringCloud 微服务根底组件案例详解 GitHub·点这里 GitEE·点这里 ☆☆☆
04 SpringCloud 微服务架构实战综合案例 GitHub·点这里 GitEE·点这里 ☆☆☆☆☆
05 SpringBoot 框架根底利用入门到进阶 GitHub·点这里 GitEE·点这里 ☆☆☆☆
06 SpringBoot 框架整合开发罕用中间件 GitHub·点这里 GitEE·点这里 ☆☆☆☆☆
07 数据管理、分布式、架构设计根底案例 GitHub·点这里 GitEE·点这里 ☆☆☆☆☆
08 大数据系列、存储、组件、计算等框架 GitHub·点这里 GitEE·点这里 ☆☆☆☆☆

正文完
 0