hive_架构
hive整合hadoop一起分为以下几个模块:client,metastore,driver,hdfs等
-
hive的用户接口
- hive cli
- 命令行模式,使用最多,较为方便
- ./bin/hive -e 'select * from test' 执行指定sql,无需进入hive交互式命令行
- ./bin/hive -S -e 'select * from test' 静音模式,只输出结果,不输出MapReduce执行过程
- ./bin/hive -f test.sql 执行指定sql脚本
- jdbc/odbc
- 通过thriftServer访问,如hiveServer2
- 主要是给程序开发过程中使用
- WebUI
- WebUI在实际生产过程中使用极少
- hive cli
-
hive元数据库
- hive元数据表结构
- 对sql解析,分解为对应的表,字段,分区等
- 将解析的信息插入元数据库中
- hive元数据三种存储方式
- 单用户模式:derby
- 多用户模式:在本机搭建一个mysql数据库
- 远程服务模式:通过在服务端启动一个metaStoreServer,客户端利用thrift协议通过MetaStoreServer访问元数据;
- hive元数据表结构
-
hive数据存储
- hive数据分为表数据,元数据;元数据通常存在mysql关系型数据库,表数据存在HDFS上面
- hive中有四种导入数据到hive表中
- 从本地文件系统导入
- 从hdfs上导入
- 从其他表中查询导入
- 创建表时从其他表中查询并插入新建的表中
- hive中数据模型
- 表:数据mysql中表的概念类似,每个表在hdfs上面都由一个文件夹表示
- 外部表:数据存放在一个不是表所属的目录,删除表时,只会删除元数据,表数据不会删除,类似外部应用,删掉了快捷键
- 分区:一般为根据where查询条件分区
- 桶:某一列值hash分区
-
hive文件格式
- textfile , sequencefile, avro, rcfile , orcfile , parquet, 自定义存储格式
- 文本日志通常推荐使用ORCfile,列式存储高压缩比率,支持分割,提供多种索引,支持复制数据类型