hive 对海量数据进行管理
简单来说hive是建立在hdfs上的数据仓库,并且对数据进行分析处理。
https://cwiki.apache.org/confluence/display/Hive/Home特点
1.一种工具,通过sql访问hadoop之上的数据。数据仓库软件,大型数据的读写和计算,直接建立与hadoop之上的。
2.一种机制,多种数据结构
3.数据访问,hdfs中的文件或者文件存储系统【hbase 两种不同的访问方式】
4.查询方式,类sql hiveql
5.查询引擎 mr【默认】 spark Tez(将hsql转化成mr的任务 select * from 不转化??)
6.支持存储过程 hpl/sql实现,简化了数仓迁移hive的过程
7.LLAP live long and process 实现内存计算,2.0之后
整体架构
1.通过【CLI:命令行接口(常用),JDBC,Web UI】访问hive
2.metastore【源数据】:存放在关系型数据库中 名 分区列 属性【内表 外表】
3.driver:包含了对sql解释 执行 编译 优化 hql语句转化成查询计划【存在hdfs中 由mr执行】
4.数据存在hdfs上计算有mr完成
元数据的连接方式1.单用户模式:derby只能允许一个时间open一个cli的会话
2.多用户模式:常用 通常mysql
3.远程模式:非java的运程数据库,通过metastore server 访问mysql
hive & impala
1.impala[使用商业分布式查询引擎,实现实时查询],直接从hbase hdfs 中查询,降低了延迟。每一个节点上都有一个impalad,state store追踪impalad的位置信息,创建多个线程,【更适合实时查询】
2.hive【延迟高】,【hive更适合长时间的p出来】,先使用hive转化,在使用impala分析
spark sql【hive on spark】提高hive的性能