1. 简介
使用mapreduce 这样的计算框架,可以写出像wordcount这样的程序,虽然已经极大的化简了分布式编程的门槛,但是使用mapreduce依然不够简洁。这就是hive诞生的背景。
程序员发现,MapReduce的程序写起来真麻烦。他们希望简化这个过程。这就好比你有了汇编语言,虽然你几乎什么都能干了,但是你还是觉得繁琐。你希望有个更高层更抽象的语言层来描述算法和数据处理流程。于是就有了Hive。
Hive可以理解为 分布式 环境下的 SQL。在hive 下可以sql 语句,hive会把SQL语言翻译成MapReduce程序,丢给计算引擎去计算,而你就从繁琐的MapReduce程序中解脱出来,用更简单更直观的语言去写程序了。
小结:
虽然hive使用的是sql的语句,但是hive底层调用依然是mapreduce计算框架。所以执行的速度依然会很慢。
在配置hive的时候,没有伪分布式的模式或者是完全分布模式。hive相当于是hadoop的一个客户端。所以它并没有运行模式。
2. hive的特点
- 数据仓库
(数据仓库 和数据库的区别:
a. 数据库强调 oltp :online transaction process 在线事务处理
b. 数据仓库强调:olap:online analysis process 在线分析处理) - hive 提供一个sql语句 hive ql
- hive的底层,依然是mapreduce,相当于是在mapreduce上面做了一个封装,对于用户来说,就是相当于你不用去写java 的代码,实现mapreduce 了,而是直接可以像使用sql一样处理数据了。
3. hive 的结构
在安装hive的时候,除了其他的配置,还需要一个数据库的配置。这样是因为hive需要存储元数据的信息。
hive里面的存储元数据的地方是metastore,它保存了表名,列名,字段名等。通过元数据的信息,hive将hdfs上面的结构化数据映射为一张张表。
metastore有三种存储方式,一种是内嵌模式,这是最简单的方式,使用内嵌的derby数据来存储元数据。缺点是,只支持一个用户打开hive会话。第二种是本地模式,采用了mysql 来存储元数据。这样可以支持多个用户访问hive。这三种是使用远程模式。
3. hive 的安装
4. hive的使用
hive的学习,我感觉有点像学习mysql。这一部分,有一个很好的官方文档,叫做 《Hive Tutorial》。https://www.tutorialspoint.com/hive/index.htm
英文比较吃力的可以参考(还是建议看英文版本的)http://www.yiibai.com/hive/hive_installation.html
5. 与传统数据的区别
数据更新
hive是基于hadoop 的,他们的特征都是“一次写入,多次读取”。所以,hive是不支持数据更新和添加的。