hive
Hive概述
- Hive是基于Hadoop的一个数据仓库工具。可以将结构化的数据文件映射为一张表,并提供完整的sql查询功能,本质上还是一个文件
- 底层是将sql语句转换为MapReduce任务进行运行
- 本质上是一种大数据离线分析工具
- 学习成本相当低,不用开发复杂的mapreduce应用,十分适合数据仓库的统计分析
- hive可以用来进行 数据提取、转化、加载,这是一种可以存储、查询和分析存储在hadoop上的数据。
数据仓库
-
数据是集成的,数据的来源可能是:MySQL、oracle、网络日志、爬虫数据… 等多种异构数据源。
Hadoop你就可以看成是一个数据仓库,分布式文件系统hdfs就可以存储多种不同的异构数据源 -
数据仓库不仅要存数据,还要管理数据,即:hdfs 和 mapreduce,从这个角度看之前的hadoop其实就是一个数据仓库,hive其实就是在hadoop之外包了一个壳子。
hive是基于hadoop的数据仓库工具,不通过代码操作,通过类sql语言操作数据仓库中的数据。底层其实仍然是分布式文件系统和mapreduce,会把sql命令转为底层的代码 -
数据仓库的特征
- 数据仓库是多个异构数据源集成的
- 数据仓库存储的一般是历史数据,大多数的应用场景是读数据(分析数据)
- 数据库是为捕获数据而设计,而数据仓库是为了分析数据而设计
- 数据仓库是弱事务的,因为数据仓库存的是历史数据,一般都读(分析)数据场景
-
OLTP系统(online transaction processing)
- 数据库属于OLTP系统,联机事务处理,涵盖了企业大部分的日常操作,比如购物、库存、制造、银行、工资、注册、记账等,比如mysql oracle等关系型数据库
- OLTP系统的访问由于要保证原子性,所以有事务机制和恢复机制
-
OLAP系统(online analytical processing)
- 数据仓库属于OLAP系统,联机分析处理系统,hive等
- OLAP系统一般存储的是历史数据,所以大部分都是只读操作,不需要事务
Hive的HQL
- HQL - Hive通过类SQL的语法,来进行分布式的计算
- HQL用起来和SQL非常的类似,Hive在执行的过程中会将HQL转换为MapReduce去执行,所以Hive其实是基于Hadoop的一种分布式计算框架,底层仍然是MapReduce
Hive特点
- Hive优点
- 学习成本低,只要会sql就能用hive
- 开发效率高,不需要编程,只需要写sql
- 模型简单,易于理解
- 针对海量数据的高性能查询和分析
- 与 Hadoop 其他产品完全兼容
- Hive缺点
- 不支持行级别的增删改
- 不支持完整的在线事务处理
Hive适用场景
- Hive 构建在基于静态(离线)批处理的Hadoop 之上,Hadoop通常都有较高的延迟并且在作业提交和调度的时候需要大量的开销。因此,Hive 并不能够在大规模数据集上实现低延迟快速的查询因此,Hive并不适合那些需要低延迟的应用
- Hive并不提供实时的查询和基于行级的数据更新操作。Hive 的最佳使用场合是大数据集的离线批处理作业,例如,网络日志分析。
Hive安装
下载hive安装包(2.3.7版本)
http://us.mirrors.quenda.co/apache/hive/
[root@vm ~]# tar xf apache-hive-2.3.7-bin.tar.gz -C /usr/local
[root@vm ~]# mv /usr/local/apache-hive-2.3.7-bin /usr/local/hive2.3.7
[root@vm ~]# vim .bashrc
export HIVE_HOME=/usr/local/hive2.3.7
export PATH=.:${HIVE_HOME}/bin:$PATH
[root@vm ~]# source .bashrc
启动mysql,下载并添加连接MySQL数据库的jar包
下载链接: https://downloads.mysql.com/archives/c-j/
[root@vm ~]# docker run -itd --name mysql -e "MYSQL_ROOT_PASSWORD=123456" -p 3306:3306 mysql:5.7.26
[root@vm ~]