数据分析引擎:hivenode
大数据的终极目标:使用SQL语句来处理大数据 mysql
1,hadoop的体系架构中:sql
两个数据分析引擎:(*)Hive:支持sql数据库
(*)Pig:支持PigLatin架构
一,什么是hive?oop
1,hive是一个基于hdfs之上的数据仓库性能
hive hdfs大数据
表 目录url
数据 文件spa
分区表 目录
分桶 文件
2,hive是基于hadoop之上的一个数据分析引擎
也就是说Hive是一个翻译器(hive 2.x之前:sql语句由hive编译成mr,hive2.x之后:sql语句由hive编译成spark程序)
3,hql是sql的一个子集,不彻底支持sql
二,hive的体系架构
hive是基于在hdfs之上的,数据也是存在于咱们的从节点Datanode上面的。
第一种方式:咱们能够经过cli命令行写sql语句,而后由Hive Driver转换成MR任务去处理数据
第二种方式:经过jdbc的方式,须要指定url肯定访问地址,并且须要经过中间人(1.x Thrift server 2.x HiveServer2 端口都是10000)把sql语句提交给咱们的hiveDriver驱动
第三种方式 基于网页去执行sql,用HWI(Hive Web Interface只有hive2.2版本之前才提供,2.2以后使用HUE去使用)去提交sql到HiveDriver上去运行.
注意:hive架构中元数据要单独存储在数据库中(推荐使用mysql去存储),经过读取mysql数据库中存储的hive元数据获得hive里面存储的真正的数据(数据模型),
由于hive元数据存储了hive的表名、列名、列的类型 、分区、分桶、其余信息.
三,hive的数据模型
1,内部表:相似于Mysql,Oracle里面的表
2,外部表:只定义表结构,真正的数据存储在hdfs的某个目录上。能够经过查看外部表的方式查看到这一个路径下全部的表信息
3,分区表:提高性能(按部门分区)
你能够按某个字段去分区,好比你有张员工表,表里确定有部门号,按照部门号分区,也就是把属于同一个部门的员工放在一张表里管理,那么在查询的时候就能够只扫描这张表,从而提高效率
4,分桶表:相似hash分区,判断某个字段值的hash是否同样,同样的话分一个桶。
例如:咱们仍是拿员工表举例,取部门号的hash值,把全部数据的部门hash值同样的数据分在一个桶(桶是以文件形式存在的,区是以目录形式存在的)里面。
5,视图
视图的存在是为了简化复杂的查询,就是将复杂的sql结果保留成视图,下次直接查询视图就能够获得结果。好比你把查询部门号为10的员工保留成视图,下次直接查询视图就可获得结果