一.为什么要使用Hive?

       hadoop中的mr有缺点(Mapper:的输出,就是把键相同的合并起来;sql:语句;

                                            Reduce:诊对一个键相同的多个值,进行处理;聚合函数;(词频:sum);(order by))

需要自己编程,不方便,hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。

hive数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,能将SQL语句转变成MapReduce任务来执行,使MapReduce变得更加简单。

二..Hive的特点

        可扩展:Hive可以自由的扩展集群的规模,一般情况下不需要重启服务

        延展性:Hive支持用户自定义函数,用户可以根据自己的需求来实现自己的函数

        容错:良好的容错性,节点出现问题SQL仍可完成执行

 

三.Hive的运行模式

          1.数据库:access,virtutal fox,sqlserver,mysql,sqlite,postgresql,oracle;

          2.Local模式.此模式连接到一个In-Memory的数据库Derby,一般用于UnitTest.

          3.单用户模式.通过网络连接到一个数据库中,是最常使用到的模式.

hive基础入门

          4.多用户模式:远程服务器模式.用于非java客户端访问元数据库(metastore),在服务器端启动metaStoreServer,客户端利用thrift协议通过metaStoreServer访问元数据库

hive基础入门

四. Hive 架构图

hive基础入门hive基础入门

  1. 用户接口主要有三个:Cli,Client和WebGUI,其中最常用的是cli,cli启动的时候会同时启动一个hive副本,client是hive客户端,用户连接到hiveServer.在启动client模式的时候,需要指出hiveServer所在的节点,并且在该节点启动hiveServer.WUI是通过浏览器也能访问Hive
  2. Hive将元数据(数据库,表)存储在数据库表(真实的数据库,mysql)中,如mysql,derby.hive中元数据包含表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在的目录等.数据库(Mysql)中并不存储Hive的记录;
  3. 解释器,编译器,优化器完成sql查询语句从词法分析,语法分析,编译,优化以及查询计划的生成.生成的查询计划存储在hdfs中,并在随后有mapreduce调用执行.
  4. Hive数据存储在hdfs中,大部分数据查询,计算由mapreduce完成(包含*的查询,比如select* from tbl不会生成mapreduce任务)
  5. 元数据(hive中看到的库,表)存储到真实的数据库(mysql);记录存储到了hdfs上; 经常使用的mysql:表,记录,库都存储到文件系统中(NTFS)
  6. hive的客户端连接服务器走的是thrift协议;====http==https;传输的内容大小比较小;

Hive架构:

  1. 用户在hive中输入了一个SQL语句;要么转成Mr执行,要么直接查询文件;
  2. 编译器:将一个hive Ql转换操作符(在hive中写的sql语句;hive QL,hql)
  3. 操作符是Hive的最小处理单元(sql语句中的一个语法;from,left join,>,<,orderby )
  4. 每个操作符代表hdfs一个操作或者一道mapreduce作业.

五.类型

hive基础入门

 

 

相关文章: