大数据数仓之Hive入门《一》

一 、Hive 基本概念
1.1 什么是 Hive
Hive:由 Facebook 开源用于解决海量结构化日志的数据统计。它是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类 SQL 查询功能。

本质就是:将HQL 转化成 MapReduce 程序
1)Hive 处理的数据存储在 HDFS
2)Hive 分析数据底层的实现是 MapReduce
3)执行程序运行在 Yarn 上

1.2 Hive 的优缺点
1.2.1 优点
1)操作接口采用类 SQL 语法,提供快速开发的能力(简单、容易上手)
2)避免了去写 MapReduce,减少开发人员的学习成本。
3)Hive 的执行延迟比较高,因此Hive 常用于数据分析,对实时性要求不高的场合;
4)Hive 优势在于处理大数据,对于处理小数据没有优势,因为Hive 的执行延迟比较高。
5)Hive 支持用户自定义函数,用户可以根据自己的需求来实现自己的函数。

1.2.2缺点
1)Hive 的 HQL 表达能力有限
(1)迭代式算法无法表达
(2)数据挖掘方面不擅长

2)Hive 的效率比较低
(1)Hive 自动生成的 MapReduce 作业,通常情况下不够智能化
(2)Hive 调优比较困难,粒度较粗

接下来我将通过对比数据库,来让大家对Hive有更深刻的认识。

二 、Hive 和数据库的对比
2.1 由于 Hive 采用了类似 SQL 的查询语言 HQL(Hive Query Language),因此很容易将 Hive 理解为数据库。其实从结构上来看,Hive 和数据库除了拥有类似的查询语言,再无类似之处。
2.2 数据存储位置
Hive 是建立在 Hadoop 之上的,所有 Hive 的数据都是存储在 HDFS 中的。而数据库则可以将数据保存在块设备或者本地文件系统中。
2.3 数据更新
由于 Hive 是针对数据仓库应用设计的,而数据仓库的内容是读多写少的。因此,Hive 中不支持对数据的改写和添加,所有的数据都是在加载的时候确定好的。而数据库中的数据通常是需要经常进行修改的,因此可以使用 INSERT INTO … VALUES 添加数据,使用 UPDATE … SET 修改数据。
2.4 索引
Hive 在加载数据的过程中不会对数据进行任何处理,甚至不会对数据进行扫描,因此也没有对数据中的某些 Key 建立索引。Hive 要访问数据中满足条件的特定值时,需要暴力扫描整个数据,因此访问延迟较高。由于 MapReduce 的引入, Hive 可以并行访问数据,因此即使没有索引,对于大数据量的访问,Hive 仍然可以体现出优势。数据库中,通常会针对一个或者几个列建立索引,因此对于少量的特定条件的数据的访问,数据库可以有很高的效率,较低的延迟。由于数据的访问延迟较高,决定了 Hive 不适合在线数据查询。
2.5 执行
Hive 中大多数查询的执行是通过 Hadoop 提供的 MapReduce 来实现的。而数据库通常有自己的执行引擎。
2.6 执行延迟
Hive 在查询数据的时候,由于没有索引,需要扫描整个表,因此延迟较高。另外一个导致 Hive 执行延迟高的因素是 MapReduce 框架。由于 MapReduce 本身具有较高的延迟, 因此在利用 MapReduce 执行 Hive 查询时,也会有较高的延迟。相对的,数据库的执行延迟较低。当然,这个低是有条件的,即数据规模较小,当数据规模大到超过数据库的处理能力的时候,Hive 的并行计算显然能体现出优势。
2.7 可扩展性
由于 Hive 是建立在 Hadoop 之上的,因此 Hive 的可扩展性是和 Hadoop 的可扩展性是一致的(世界上最大的Hadoop 集群在Yahoo!,2009 年的规模在 4000 台节点左右)。而数据库由于ACID 语义的严格限制,扩展行非常有限。目前最先进的并行数据库 Oracle 在理论上的扩展能力也只有 100 台左右。
2.8 数据规模
由于 Hive 建立在集群上并可以利用 MapReduce 进行并行计算,因此可以支持很大规模的数据;对应的,数据库可以支持的数据规模较小。

好了,认识了什么是hive,咱们就开始安装:

三、Hive的安装
3.1 首先去官网下载 hive安装包
官网地址:http://hive.apache.org/
3.2 找到已经下载的安装包,并解压到指定目录
tar -xvf apache-hive-1.2.1-bin.tar.gz -C 指定路径
3.3 如果觉得名字太长看着不舒服,可以先修改一下名字
mv apache-hive-1.2.1-bin.tar.gz hive
3.4 进入hive下面的conf目录并修改hive-env.sh.template 名称为 hive-env.sh
mv hive-env.sh.template hive-env.sh
3.5 配置hive-env.sh文件
(a)配置 HADOOP_HOME 路径
export HADOOP_HOME=/opt/module/hadoop-2.7.2
(b) 配置HIVE_CONF_DIR 路径
export HIVE_CONF_DIR=/opt/module/hive/conf
3.6 启动Hadoop集群,并在HDFS上创建 /user/hive/warehouse/目录
这是hive默认目录,除此之外,还会自动生成一个/tmp目录,当然,这个前提是你的hive安装正确并启动后才能发现。
3.7 创建目录后千万不要了给它赋权限(注意!!!)
hdfs dfs -chmod g+w /user/hive/warehouse

先介绍这么多吧,如果发现了哪里有错,欢迎在评论区指出!

猜你喜欢

转载自blog.csdn.net/Forever_ck/article/details/84638018