大数据-Hive

本文详细介绍了Hive作为基于Hadoop的数据仓库工具,包括Hive的定义、使用原因、特点、架构与Hadoop的关系,以及与传统数据库的对比。接着,文章深入探讨了Hive的安装部署过程,包括derby版和基于mysql管理元数据版的安装步骤。此外,还详述了如何创建管理表、外部表、分区表和分桶表,以及Hive的查询方法如SELECT、常用函数、LIMIT、WHERE和GROUP BY等。最后,文章提出了关于Hive应用的一些常见问题。
摘要由CSDN通过智能技术生成

1.Hive简介

1.1什么是Hive

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

其本质是将SQL转换为MapReduce的任务进行运算,底层由HDFS来提供数据的存储,说白了hive可以理解为一个将SQL转换为MapReduce的任务的工具,甚至更进一步可以说hive就是一个MapReduce的客户端。

1.2为什么使用Hive

  • 直接使用hadoop所面临的问题

    人员学习成本太高

    项目周期要求太短

    MapReduce实现复杂查询逻辑开发难度太大

  • 为什么要使用Hive

    操作接口采用类SQL语法,提供快速开发的能力。

    避免了去写MapReduce,减少开发人员的学习成本。

    功能扩展很方便。

1.3Hive的特点

  • 可扩展

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

  • 延展性

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

  • 容错

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

1.4Hive架构图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4Ns5q3fR-1641900451479)(day03_hive.assets/1626600008411.png)]

1.5Hive与Hadoop的关系

Hive利用HDFS存储数据,利用MapReduce查询分析数据

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hnrDala4-1641900451480)(day03_hive.assets/1626600042482.png)]

1.6Hive与传统数据库对比

hive用于海量数据的离线数据分析

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-25jqzLm0-1641900451480)(day03_hive.assets/1626600114043.png)]

总结:hive具有sql数据库的外表,但应用场景完全不同,hive只适合用来做批量数据统计分析

2.HIVE的安装部署

1.derby版hive直接使用

前提:Hive安装非常简单,解压之后即可直接运行,不需要太多配置,前提是要配置JAVA_HOME和HADOOP_HOME。并且Hadoop要全量启动(五个进程)

1、解压hive
cd /opt/softwares

tar -xvzf apache-hive-2.3.6-bin.tar.gz -C ../servers/

2.修改目录名称
cd ../servers/
mv apache-hive-2.3.6-bin hive-2.3.6
3.初始化元数据库
cd hive-2.3.6
bin/schematool -dbType derby -initSchema
4.启动

在hive-2.3.6目录下执行

bin/hive
5.创建数据库
create database jtdb;
6.创建表
use jtdb;
create table tb_user(id int,name string);
7.插入数据
insert into table tb_user values(1,"zhangfei");

Hive在必要的时候会将HQL编译为MR来执行。

8.可能遇到的问题

Hive启动不了
检查JAVA_HOME和HADOOP_HOME是否配置成功。如果没有问题并报错:Cannot find hadoop installation: $HADOOP_HOME or $HADOOP_PREFIX must be set or hadoop must be in the path

解决办法:

指定HADOOP_HOME路径

cd /opt/servers/hive-2.3.6/conf
 
cp hive-env.sh.template hive-env.sh

vim hive-env.sh

增加HADOOP_HOME

HADOOP_HOME=/opt/servers/hadoop-2.7.7
9.Hive启动报错Safe mode

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6w2GdfzR-1641900451481)(day03_hive.assets/20200519195131390.png)]

Hadoop在启动时有个安全模式,其在启动时有些工作要做,元数据的处理,DataNode的等待等过程。需要一段时间,遇到时需要等一段时间,耐心稍微等一会。过会自动就会好。

如果长时间还报错,还在安全模式。可以手工设置退出安全模式。

hadoop dfsadmin -safemode leave

参数value的说明如下:

  1. enter - 进入安全模式
  2. leave - 强制NameNode离开安全模式
  3. get - 返回安全模式是否开启的信息
  4. wait - 等待,一直到安全模式结束

2.基于mysql管理元数据版hive

Hive没有将描述数据库、表、数据之间关系的元数据直接存放在HDFS中,而是存放在了传统的关系型数据库中,这样保证了元数据可以快速的进行增删改查。

Hive原生的将元数据保存在了内置的Derby数据库中。

Derby存在的问题:过于轻量级,性能较低,安全性不高,不适合生产。

这种情况我们是无法忍受的,实际开发中不会使用Derby来做Hive的元数据库。所以我们要将他替换掉。以mysql为例。

1、解压hive
cd /opt/softwares
tar -xvzf apache-hive-2.3.6-bin.tar.gz -C ../servers/
2.修改目录名称
cd ../servers/
mv apache-hive-2.3.6-bin hive-2.3.6
3.检测服务器mysql数据库
mysql
show databases;
4.配置mysql允许外网访问
grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option; 
flush privileges;
5.退出mysql
exit;
6.使用sqlyog连接mysql

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zXjpuoUZ-1641900451481)(day03_hive.assets/1626601184572.png)]

7.修改配置文件hive-site.xml

创建hive-site.xml

touch hive-site.xml

添加以下内容

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
 
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
 
<configuration>
 
  <property>
 
  <name>hive.def
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值