Hive是hadoop一个重要的子项目,它利用的是mapreduce的编程技术,实现了部分sql语句,提供类sql的编程接口。
hive是一个基于hadoop文件系统之上的数据仓库架构架构,他为数据仓库的管理提供了很多功能:etl(转换,抽取,加载)工具,数据存储管理和大型数据集的查询和分析功能。他还定义了一种类似于sql的语言(HQL),他能让开发人员方便的使用mapper和reduce操作
缺点:
hive是批量处理的系统,所以是高延迟性的,在查询时会消耗时间成本。
hive不支持数据排序,不能查询数据cache,不能在线提供事物处理,不能实时更新。
优点:
hive能够更好的处理不变的大量的数据集(网络日志)的批量任务,有很好的扩展性(可以自动适应集群中机器的数量和数据量的动态变哈),容错性,延展性
hive数据的存储:
hive是建立在hadoop文件系统之上的,hive本身并没有专门的数据格式,也不能为数据建立索引。所以可以很自由的建立表,只需要告诉hive行的分隔符和列的分隔符就可以解析了
hive中有四类数据模型(表,外部表,桶,分区)
hive中的表类似数据库中的表,每一个表都有一个存储的目录。目录的配置在hive-site.xml文件中配置
<name>hive.metastore.warehouse.dir</name> <value>/opt/hive/warehouse</value>//对应以上在hdfs创建的文件目录 <description>location of default database for the warehouse</description>
比如你创建一个student表,那这个表的路径在hdfs中就是/opt/hive/warehouse/student,除了外部表,所有的表都存在这个目录下