打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Hive数据仓库工具

一、Hive的概述;

二、Hive的体系架构;

三、探讨Hadoop全家(生态圈);

四、Hive与传统数据库相比;

五、Hive的数据模型(自主学习);

六、搭建Haoop 2.7.6结合hive2.3.3实现数据仓库管理;

一、Hive的概述;

背景:Hive起源于Facebook(一个美国的社交服务网络)。Facebook有着大量的数据,而Hadoop是一个开源的MapReduce实现,可以轻松处理大量的数据。但是MapReduce程序对于Java程序员来说比较容易写,但是对于其他语言使用者来说不太方便。此时Facebook最早地开始研发Hive,它让对Hadoop使用SQL查询(实际上SQL后台转化为了MapReduce)成为可能,那些非Java程序员也可以更方便地使用。hive最早的目的也就是为了分析处理海量的日志;

概述:hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能, Hadoop 通常都有较高的延迟并且在作业提交和调度的时候需要大量的开销。因此Hive并不能够在大规模数据集上实现低延迟快速的查询,例如,Hive 在几百MB 的数据集上执行查询一般有分钟级的时间延迟;

  Hive可以将sql语句转换为MapReduce任务进行运行。其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析;

二、Hive的体系架构;

体系架构:

1.用户接口主要有三个:CLI,Client 和 WUI。其中最常用的是CLI,Cli启动的时候,会同时启动一个Hive副本。Client是Hive的客户端,用户连接至Hive Server。在启动 Client模式的时候,需要指出Hive Server所在节点,并且在该节点启动Hive Server。WUI是通过浏览器访问Hive;
2.Hive将元数据存储在数据库中,如mysql、derby。Hive中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等;
3.解释器、编译器、优化器完成HQL查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在HDFS中,并在随后有MapReduce调用执行;
4.Hive的数据存储在HDFS中,大部分的查询、计算由MapReduce完成;

Hive执行请求的流程:

三、探讨Hadoop全家(生态圈);

https://www.sohu.com/a/218420440_505794                            ##Hadoop全家

https://www.cnblogs.com/zhangwuji/p/7594725.html              ##Hadoop发展史

四、Hive与传统数据库相比;

 由于Hive采用了SQL的查询语言HQL,因此很容易将Hive理解为数据库。其实从结构上来看,Hive和数据库除了拥有类似的查询语言,再无类似之处。数据库可以用在Online的应用中,但是Hive是为数据仓库而设计的,清楚这一点,有助于从应用角度理解Hive的特性;

五、Hive的数据模型(自主学习);

概述:对于数据存储,Hive没有专门的数据存储格式,也没有为数据建立索引,用户可以非常自由的组织Hive中的表,只需要在创建表的时候告诉Hive数据中的列分隔符和行分隔符,Hive就可以解析数据。Hive中所有的数据都存储在HDFS中,存储结构主要包括数据库、文件、表和视图。Hive中包含以下数据模型:Table内部表、External Table外部表、Partition分区、Bucket桶。自行百度Hive的数据模型;

六、搭建Haoop 2.7.6结合hive2.3.3实现数据仓库管理;

案例环境:

系统类型

IP地址

主机名、角色

所需软件

Centos 7.4 1708 64bit

192.168.100.101

master

hadoop:namenode

hive

hadoop-2.7.6.tar.gz 

jdk-8u171-linux-x64.tar.gz

apache-hive-2.3.3-bin.tar.gz

Centos 7.4 1708 64bit

192.168.100.102

slave1

hadoop:datanode

hadoop-2.7.6.tar.gz 

jdk-8u171-linux-x64.tar.gz

Centos 7.4 1708 64bit

192.168.100.103

slave2

hadoop:datanode

hadoop-2.7.6.tar.gz 

jdk-8u171-linux-x64.tar.gz

案例步骤:

Ø安装hive软件程序;

Ø准备hive的元数据存储位置Mysql数据库;

Ø准备hive服务需要存储文件的目录;

Ø配置hive的配置文件;

Ø配置hive服务连接mysql数据库的驱动;

Ø初始化hive连接mysql数据库;

Ø启动并连接hive服务;

Ø学习hive中的管理操作;

Ø将文件内容导入到hive的表中;

Ø通过web页面查看HDFS文件系统中的数据;

Ø通过mysql管理控制台验证mysql中存储的hive的元数据;

Ø安装hive软件程序;

[root@master ~]# ls /root/apache-hive-2.3.3-bin.tar.gz

/root/apache-hive-2.3.3-bin.tar.gz

[root@master ~]# tar zxvf /root/apache-hive-2.3.3-bin.tar.gz

[root@master ~]# mv apache-hive-2.3.3-bin/ /usr/local/hive

[root@master ~]# chown hadoop:hadoop /usr/local/hive/ -R

[root@master ~]# vi /etc/profile

export HIVE_HOME=/usr/local/hive

export PATH=$PATH:$HIVE_HOME/bin

export CLASSPATH=$CLASSPATH:/usr/local/hive/lib/*:.

[root@master ~]# source /etc/profile

Ø准备hive的元数据存储位置Mysql数据库;

[root@master ~]# yum -y install mariadb-server mariadb

[root@master ~]# sed -i 's/\[mysqld\]/\[mysqld\]\nskip_name_resolve/g' /etc/my.cnf

##注:需要关闭mysql服务器的反向解析,不然会在初始化myssql数据库时出现反向解析情况,无法初始化

[root@master ~]# systemctl start mariadb

[root@master ~]# systemctl enable mariadb

Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.

[root@master ~]# mysqladmin -uroot password

[root@master ~]# mysql -uroot -p123123

MariaDB [(none)]> grant all on *.* to root@'192.168.100.101' identified by '123123';

MariaDB [(none)]> flush privileges;

MariaDB [(none)]> exit

Ø准备hive服务需要存储文件的目录;

[root@master ~]# su - hadoop

[hadoop@master ~]$ hadoop   fs   -mkdir   -p   /user/hive/warehouse

[hadoop@master ~]$ hadoop   fs   -chmod   777   /user/hive/warehouse

[hadoop@master ~]$ hadoop   fs   -mkdir  -p   /tmp/hive/

[hadoop@master ~]$ hadoop   fs   -chmod  777   /tmp/hive

[hadoop@master ~]$ hadoop   fs   -ls /

Found 2 items

drwxr-xr-x   - hadoop supergroup          0 2018-08-27 20:51 /tmp

drwxr-xr-x   - hadoop supergroup          0 2018-08-27 20:51 /user

[hadoop@master ~]$ mkdir /usr/local/hive/tmp

[hadoop@master ~]$ mkdir /usr/local/hive/tmp/root

Ø配置hive的配置文件;

[hadoop@master ~]$ cp /usr/local/hive/conf/hive-default.xml.template /usr/local/hive/conf/hive-site.xml

[hadoop@master ~]$ mv /usr/local/hive/conf/hive-env.sh.template /usr/local/hive/conf/hive-env.sh

[hadoop@master ~]$ vi /usr/local/hive/conf/hive-site.xml

 364  

 365     hive.metastore.warehouse.dir

 366     /user/hive/warehouse

 367     指定hdfs上存放hive的实体数据位置

 368  

  37  

  38     hive.exec.scratchdir

  39     /tmp/hive

  40     指定hdfs上存储hive的临时文件的位置

  41  

  73  

  74     hive.exec.local.scratchdir

  75     /usr/local/hive/tmp/root/

  76     指定hive本地服务器的本地目录

  77  

  78  

  79     hive.downloaded.resources.dir

  80     /usr/local/hive/tmp/${hive.session.id}_resources

  81     指定hive本地服务器的session会话文件的存储位置

  82  

1683  

1684     hive.querylog.location

1685     /usr/local/hive/tmp/root/

1686     指定hive本地服务器的日志文件存放位置

1687  

3974  

3975     hive.server2.logging.operation.log.location

3976     /usr/local/hive/tmp/root/operation_logs

3977     指定hive本地服务器的日志文件存放位置

3978  

 543  

 544     javax.jdo.option.ConnectionURL

 545     jdbc:mysql://192.168.100.101:3306/hive?createDatabaseIfNotExist=true

 546     指定hive的元数据所存储的mysql的ip、端口、数据库名

 550    

 551  

1018  

1019     javax.jdo.option.ConnectionDriverName

1020     com.mysql.jdbc.Driver

1021     指定连接mysql数据库的驱动类型

1022  

1043  

1044     javax.jdo.option.ConnectionUserName

1045     root

1046     指定连接mysql数据库的用户名

1047  

 528  

 529     javax.jdo.option.ConnectionPassword

 530     123123

 531     指定连接mysql数据库的密码

 532  

744  

 745     hive.metastore.schema.verification

 746     false

 747     关闭元数据的文件检查

 753    

 754  

:wq

[hadoop@master ~]$ vi /usr/local/hive/conf/hive-env.sh                     ##设置hive的环境变量

export  HADOOP_HOME=/usr/local/hadoop

export  HIVE_CONF_DIR=/usr/local/hive/conf

export  HIVE_AUX_JARS_PATH=/usr/local/hive/lib

:wq

Ø配置hive服务连接mysql数据库的驱动;

[hadoop@master ~]$ wget https://cdn.mysql.com//Downloads/Connector-J/mysql-connector-java-5.1.46.tar.gz

[hadoop@master ~]$ ls mysql-connector-java-5.1.46.tar.gz

mysql-connector-java-5.1.46.tar.gz

[hadoop@master ~]$ tar zxvf  mysql-connector-java-5.1.46.tar.gz

[hadoop@master ~]$ cp /home/hadoop/mysql-connector-java-5.1.46/mysql-connector-java-5.1.46.jar /usr/local/hive/lib/

[hadoop@master ~]$ ls /usr/local/hive/lib/mysql-connector-java-5.1.46.jar

/usr/local/hive/lib/mysql-connector-java-5.1.46.jar

Ø初始化hive连接mysql数据库;

[hadoop@master ~]$ /usr/local/hive/bin/schematool -dbType mysql -initSchema

Ø启动并连接hive服务;

[hadoop@master ~]$ hive

hive> show databases;

OK

default

Time taken: 4.695 seconds, Fetched: 1 row(s)

Ø学习hive中的管理操作;

hive> show functions;                                                        ##查看可用函数

OK

!

!=

$sum0

%

&

*

+

-

/

<

<=

...

hive> desc function sum;                                                 ##查看函数详细信息

OK

sum(x) - Returns the sum of a set of numbers

Time taken: 0.006 seconds, Fetched: 1 row(s)

hive> create database linuxfan;                                          ##创建数据库linuxfan

OK

Time taken: 0.282 seconds

hive> show databases;                                         

OK

default

linuxfan

Time taken: 0.023 seconds, Fetched: 2 row(s)

hive> use linuxfan;

OK

Time taken: 0.025 seconds

hive> create table t1(id int,name string) row format delimited fields terminated by '\t';

##创建表并且指定字段id和字段name之间的分隔使用\t制表符;

OK

Time taken: 0.581 seconds

hive> show tables;

OK

t1

Time taken: 0.042 seconds, Fetched: 1 row(s)

hive> exit;

Ø将文件内容导入到hive的表中;

[hadoop@master ~]$vi ./1.txt                                          ##001和zs之间必须手动敲tab键,不得复制粘贴

001       zs

002       ls

003       ww

004       xm

[hadoop@master ~]$ hive

hive> load   data  local   inpath   '/home/hadoop/1.txt'   into   table  linuxfan.t1;

Loading data to table linuxfan.t1;

OK

Time taken: 6.277 seconds

hive> select * from linuxfan.t1;

OK

1       zs

2       ls

3       ww

4       xm

Time taken: 1.861 seconds, Fetched: 4 row(s)

hive> exit;

Ø通过web页面查看HDFS文件系统中的数据;

Ø通过mysql管理控制台验证mysql中存储的hive的元数据;

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
sqoop 安装及测试
CDH5 Hadoop集群完全离线安装步骤总结
HDFS+MapReduce+Hive+HBase十分钟快速入门(转)
ambari平台的搭建过程
Hive安装与配置详解
大型互联网站解决海量数据的常见策略
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服