hadoop之Hive--一个牛逼的数据仓库

17 篇文章 0 订阅
5 篇文章 0 订阅
本文介绍了Hive作为基于Hadoop的数据仓库工具,详细阐述了Hive的历史、优点、发展未来以及查询分析流程。此外,还涵盖了Hive的组件结构,特别是其用户接口、元数据存储和执行过程。在安装部署部分,讨论了Hive在MySQL和Derby上的配置,以及安装MySQL和测试Hive的步骤。
摘要由CSDN通过智能技术生成

一、Hive简介

Hive是基于hadoop的数据仓库工具,Hive借助于hadoop的hdfs和mapreduce来实现数据存储和数据分析功能的。可以将结构化的数据文件映射为一个数据库表,并提供类sql查询功能,其本质是用户使用类sql语句,hive会转化为mr程序,从而完成数据的分析。所以Hive的用途被用来作为离线数据分析,比直接开发mr程序效率高。

Hive的历史
 由FaceBook 实现并开源 
2011年3月,0.7.0版本 发布,此版本为重大升级版本,增加了简单索引,HAING等众多高级特性 
2011年06月,0.7.1 版本发布,修复了一些BUG,如在Windows上使用JDBC的的问题 
2011年12月,0.8.0版本发布,此版本为重大升级版本,增加了insert into 、HA等众多高级特性 
2012年2月5日,0.8.1版本发布,修复了一些BUG,如 使 Hive 可以同时运行在 Hadoop0.20.x 与 0.23.0 
2012年4月30日,0.9.0版本发布,重大改进版本,增加了对Hadoop 1.0.0的支持、实现BETWEEN等特
性
…………………………………
2018年7月份,3.1版本发布 
使用Hive的优点:

1、采用类sql语法,接近数据分析,提供快速开发的能力。
2、避免去写mr程序,减少开发人员的学习成本。
3、功能扩展很方便,可以使用函数及自定义函数。
4、容错性好,节点出现问题sql仍然可以执行完成
5、可以自由扩展集群的规模,一般情况下不需要重启服务器

Hive的发展未来

1、增加更多类似关系型数据的功能,比如存储过程
2、提高转化mr的效率
3、UI部分加强
4、具有真正数据仓库的能力

Hive查询分析流程

1、Hive可以把HDFS结构化的数据映射为一张数据库表,并且记录了映射关系元数据,比如表名–文件名,字段名–数据列
2、sql语法解析器根据映射元数据解析查询类sql语句
3、然后调用mr程序模板库的模板来组建相应的mr程序
4、最后由mr程序提交器提交给yarn集群

Hive组件:

用户接口:包括CLI,JDBC/ODBC,webGUI。CLI是command line interface是shell命令行;JDBC/ODBC是Hive的java实现,和传统的数据库JDBC类似;webGUI是用web浏览器访问Hive。
元数据存储:元数据存储在关系型数据库mysql或者自带的derby,元数据包括:表名,表的列和分区及属性,表的属性,表的数据所在目录等
解释器、编译器、优化器、执行器:完成hql语句词法分析,语法分析,编译,优化及查询计划的完成。生成的查询计划存储在HDFS中,随后有mr调用执行。

二、Hive架构

在这里插入图片描述

三、Hive安装部署

**Hive安装之前要先安装hadoop和jdk,根据元数据存储的介质不同,分为两个版本,其中derby属于内嵌模式,生产环境则使用mysql来进行元数据的存储。

内置derby: 解压hive安装包,bin/hive启动即可,但是使用不同的路径启动hive,每个路径下面hive都会产生一套自己的元数据,无法共享。

mysql:解压修改配置文件:vi conf/hive-site.xml,然后配置元数据库信息。**

1、 安装mysql(一)

1.上传文件至linux:

[root@ip158 ~]# ls
anaconda-ks.cfg  MySQL-5.5.62-1.el7.x86_64.rpm-bundle.tar  sw
hello_158.sh     mysql-connector-java-5.1.47.jar           zookeeper.out

2.解压: tar xvf MySQL-5.5.62-1.el7.x86_64.rpm-bundle.tar

MySQL-devel-5.5.62-1.el7.x86_64.rpm
MySQL-embedded-5.5.62-1.el7.x86_64.rpm
MySQL-shared-5.5.62-1.el7.x86_64.rpm
MySQL-test-5.5.62-1.el7.x86_64.rpm
MySQL-server-5.5.62-1.el7.x86_64.rpm
MySQL-shared-compat-5.5.62-1.el7.x86_64.rpm
MySQL-client-5.5.62-1.el7.x86_64.rpm

进入sw目录下,新建一个文件夹用来存放MYSQL解压文件

[root@ip158 ~]# cd sw
[root@ip158 sw]# mkdir mysql

将根目录下的文件移动到mysql文件夹

[root@ip158 ~]# mv My* ./sw/mysql

进去查看一下

[root@ip158 ~]# cd sw/mysql/
[root@ip158 mysql]# ls
MySQL-5.5.62-1.el7.x86_64.rpm-bundle.tar
MySQL-client-5.5.62-1.el7.x86_64.rpm
MySQL-devel-5.5.62-1.el7.x86_64.rpm
MySQL-embedded-5.5.62-1.el7.x86_64.rpm
MySQL-server-5.5.62-1.el7.x86_64.rpm
MySQL-shared-5.5.62-1.el7.x86_64.rpm
MySQL-shared-compat-5.5.62-1.el7.x86_64.rpm
MySQL-test-5.5.62-1.el7.x86_64.rpm

3.移除软件mariadb-libs:

[root@ip158 mysql]# yum remove mariadb-libs.x86_64

4.找到软件包的位置,联网安装

[root@ip158 mysql]# yum install MySQL-server-5.5.62-1.el7.x86_64.rpm

5.开启mysql

[root@ip158 mysql]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.235.2
[root@ip158 mysql]# systemctl status mysql
● mysql.service - LSB: start and stop MySQL
   Loaded: loaded (/etc/rc.d/init.d/mysql; bad; vendor preset: disabled)
   Active: inactive (dead)
     Docs: man:systemd-sysv-generator(8)
[root@ip158 mysql]#systemctl start mysql

6.安装mysql客户端

 yum install MySQL-client-5.5.62-1.el7.x86_64.rpm

7.进入mysql

[root@ip158 mysql]# mysql
mysql>show tables;(报错)

来改变情况吧!

.mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

.需要修改密码:

 update user set Password=password("root") where User='root';
.退出:quit;
.重启:systemctl restart mysql
.再次进入:
 mysql -p

可以查看密码

mysql> select user,host,password from user;
Mysql安装(二)

1、安装mysql命令:Yum install mysql-server -y  (-y参数作用为所有需要输入yes的地方默认yes)

2、打开mysql服务:Service mysqld start

3、设置mysql服务开机自启动(也可以不设置,开机手动启动):chkconfig –add mysqld

4、进入mysql命令行:mysql -u root -p   (root是账户不是必须root) 第一次进入不需要输密码可以直接:mysql命令进入mysql

5、设置密码-第一次没有密码情况下设置:mysqladmin -u root password qixiao123

 ->如果不在第5步设置,也可以在Mysql命令行下修改密码(先进入mysql):update user set password=password(‘新密码’) where user=‘root’ FLUSH PRIVILEGES

执行到这里可以输入几个mysql命令来进行测试一下:

显示数据库: show databases;

使用数据库: use mysql;

显示表: show tables;

2、配置系统环境变量
1、编辑/etc/profile文件,增加hive相关的环境变量配置
2、配置Hive 环境变量文件中HADOOP_HOME环境变量
export HIVE_HOME=/root/sw/hive
export PATH=$PATH:$HIVE_HOME/bin
3、配置元数据信息 vi hive-site.xml

进入conf目录下查看

cd /root/sw/hive/conf/

如果没有:

cp hive-default.xml.template hive-site.xml

1、配置:

<configuration>
	<property>
	  <name>javax.jdo.option.ConnectionURL</name>
	<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true&amp;useSSL=false</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>root</value>
	  <description>password to use against metastore database</description>
	</property>
</configuration>

2.复制mysql的驱动程序到hive/lib下面(这里已经拷贝好了)

[root@xxx lib]# ll mysql-connector-java-5.1.18-bin.jar 

3.在mysql中hive的schema(在此之前需要创建mysql下的hive数据库)

1 [root@xxx bin]# pwd
2 /root/swl/hive/bin
3 [root@xxx bin]# schematool -dbType mysql -initSchema

4.执行hive命令

[root@xxx hive]# hive

hive测试

hive> create database hive_1;
2 OK
3 Time taken: 1.432 seconds
hive> show databases;
2 OK
3 default
4 hive_1
5 Time taken: 1.25 seconds, Fetched: 2 row(s)

创建库成功!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值