关于Hive(二) 运行Hive和Hive与传统数据库比较
配置Hive
1 执行引擎
> hive.execution.engine 执行引擎 默认为mr
> 目前引擎 MapReduce, Tez, Spark
> 设置引擎 hive > set hive.execution.engine=Tez
2 日志记录
> 日志位置
${java.io.tmpdir}/${user.name}/hive.log
/tmp/root/hive.log
> 设置日志位置 %hive -hiveconf hive.log.dir='/tmp/${user.name}'
> 配置存放 conf/hive-log4j.properties,修改日志级别和日志相关设置
> 调试信息发送到控制台 hive -hiveconf hive.root.logger=DEBUG,console
Hive服务
hive --service help
> cli shell环境,默认
> hiveserver2 Thrift服务器 hive.server2.thrift.port
> beeline 嵌入方式工作Hive命令行/JDBC连接hiveserver2
> hwi Hive的Web接口
> jar 类路径同时包含Hadoop和Hive
> metastore metastore单独作为进程进行,默认metastore服务和Hive服务运行在同一个进程中
Hive客户端
hive --service hiveserver2 以服务器方式运行Hive,可以使用JDBC, ODBC或者Thrift连接
metastore
> 存放元数据
> 两部分:服务和后台数据
Derby
> Hive内嵌数据库Derby,内嵌metastore配置
> 只有一个Derby可以访问磁盘数据,第二个会话报错
Mysql
> 本地metastore配置/远程metastore配置,多会话
> hive.metastore.uris
与传统数据库比较
> 模式
> 传统数据库在数据加载时强制确定表的模式,"写时模式"
> Hive加载数据时不进行数据验证,在查询时进行,"读时模式"
> 更新 事务 索引
> HDFS不支持就地文件更新,需要插入更新删除一起操作,这些操作要建立在事务的基础上
> Hive索引能够加快查询速度
> 紧凑索引和位图索引
> 除了Hive, Hadoop上可以使用的SQL技术
> Cloudera Impala
> Spark SQL
> HortonWorks Stingers
> Apache Drill