实训总结20170917

hive介绍

Hive

基于Hadoop的一个数据仓库工具,构建于hadoop的hdfs和mapred之上,用于管理和查询结构化/非结构化数据的数据仓库。可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。

Hive将HQL语句转译成M/R Job,然后按照MR的计算框架在Hadoop执行,也可以把HQL中的表、字段转换为HDFS中的文件(夹)以及文件中的列。这套映射工具称之为metastore

Hive的表其实就是HDFS的目录,按表名把文件夹分开。如果是分区表,则分区值是子文件夹,可以直接在M/R Job里使用这些数据。

Hive作用

Hvie降低了数据人员使用MR的门槛,使得分布式计算通过类SQL的操作即可实现,对大数据应用发展起到了很多的推动作用

Hive本质:将HQL转换为MapReduce程序的工具。

不属于google核心论文内容。(dfs、mr、bigtable)

由facebook开发并开源。

特点是:使用HQL作为查询接口、使用HDFS作为底层存储、使用MapRed作为执行层、可扩展到100PB+、统一的元数据管理

Hive与HBase对比

共同点

1.HBase与Hive都架构在Hadoop之上,都是用hdfs作为底层存储。

2.职能上都能对外提供表形式的数据查询等服务

区别

1.Hive是建立在Hadoop之上为了减少MapReduce jobs编写工作的批处理系统,HBase是为了支持弥补Hadoop对实时操作的缺陷的项目 。Hive是做离线操作hbase

2.Hive本身不存储和计算数据,它完全依赖于HDFS和MapReduce,Hive中的表是纯逻辑表,是对hdfs文件的一种记录方式。

3.Hbase是物理表,不是逻辑表,提供一个超大的内存hash表,搜索引擎通过它来存储索引,方便查询操作

用户接口,包括CLI,JDBC/ODBC,WebUI

该层是建立在Hive之上的交换层。

让传统DBA或者Java工程师轻松就能完成更多的工作。

2、元数据存储,通常是存储在关系数据库如mysql, derby中

3、解释器、编译器、优化器、执行器

4、Hive部署:解压缩、重命名、设置环境变量,在目录$HIVE_HOME/conf/下,执行命令mvhive-default.xml.templatehive-site.xml重命名

hive.metastore.warehouse.dir:Hive数据存储目录

hive.exec.scratchdir:Hive数据临时文件目录

在目录$HIVE_HOME/conf/下,执行命令mv hive-env.sh.templatehive-env.sh重命名

修改hadoop的配置文件hadoop-env.sh,修改内容如下:

Export HADOOP_CLASSPATH=.:$CLASSPATH:$HADOOP_CLASSPATH:$HADOOP_HOME/bin

在目录$HIVE_HOME/bin下面,修改文件hive-config.sh(可跳过)

Hive基本数据类型:tinyint/smallint/int/bigint、float/double、boolean

String(数据仓库常用类型)

复杂数据类型:Array/Map/Struct、没有date/datetime


Hive的执行计划: Input->combiner->buffer->output

推荐阅读更多精彩内容