乐趣区

hadoophive

官方:Apache Hive™数据仓库软件有助于使用 SQL 读取,编写和管理驻留在分布式存储中的大型数据集。可以将结构投影到已存储的数据中。提供了命令行工具和 JDBC 驱动程序以将用户连接到 Hive。
https://hive.apache.org/
适用:离线计算。用哪个 sql 生成 task 调用 map_Reduce。表和元数据用来生成 task


这个已经写得很好了 =。=
https://cwiki.apache.org/conf…

  • metadata

Hive 将元数据存储在数据库中,如 mysql、derby。Hive 中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。元数据提供数据的抽象和发现能力,存于 database 还是会文件,考虑到与 hdfs 的一致性要随机更新,因此用 database。

  • complier

解释器、编译器、优化器完成 HQL 查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在 HDFS 中,并在随后有 MapReduce 调用执行。

  • 数据存储 / 计算

Hive 的数据存储在 HDFS 中,大部分的查询、计算由 MapReduce 完成(包含 的查询,比如 select from tbl 不会生成 MapRedcue 任务)。
将大多数查询转换为 mr 组合的计算(select * 等不需要)转化过程比较复杂:
https://blog.csdn.net/u010738…
存储在 HDFS 中有四种格式
Hive 中主要包括四类数据模型:
1)、表:Hive 中的表和关系型数据库中的表在概念上很类似,每个表在 HDFS 中都有相应的目录用来存储表的数据,这个目录可以通过 ${HIVE_HOME}/conf/hive-site.xml 配置文件中的 hive.metastore.warehouse.dir 属性来配置,这个属性默认的值是 /user/hive/warehouse(这个目录在 HDFS 上),我们可以根据实际的情况来修改这个配置。如果我有一个表 wyp,那么在 HDFS 中会创建 /user/hive/warehouse/wyp 目录(这里假定 hive.metastore.warehouse.dir 配置为 /user/hive/warehouse);wyp 表所有的数据都存放在这个目录中。这个例外是外部表。
2)、外部表:Hive 中的外部表和表很类似,但是其数据不是放在自己表所属的目录中,而是存放到别处,这样的好处是如果你要删除这个外部表,该外部表所指向的数据是不会被删除的,它只会删除外部表对应的元数据; 而如果你要删除表,该表对应的所有数据包括元数据都会被删除。
3)、分区:在 Hive 中,表的每一个分区对应表下的相应目录,所有分区的数据都是存储在对应的目录中。比如 wyp 表有 dt 和 city 两个分区,则对应 dt=20131218,city=BJ 对应表的目录为 /user/hive/warehouse /dt=20131218/city=BJ,所有属于这个分区的数据都存放在这个目录中。
4)、桶:对指定的列计算其 hash,根据 hash 值切分数据,目的是为了并行,每一个桶对应一个文件(注意和分区的区别)。比如将 wyp 表 id 列分散至 16 个桶中,首先对 id 列的值计算 hash,对应 hash 值为 0 和 16 的数据存储的 HDFS 目录为:/user /hive/warehouse/wyp/part-00000; 而 hash 值为 2 的数据存储的 HDFS 目录为:/user/hive/warehouse/wyp/part-00002。

退出移动版