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