Hive 简介: 1.Hive 是SQL解析引擎,它将SQL语句转译成M/R Job 然后在Hadoop执行
2.Hive 的表其实就是HDFS的目录,按表名把文件夹分开。如果是分区表,则分区值是子文件夹,可以直接在M/R job里使用这些数据。
3.HIve相当于hadoop的客户端工具,部署时不一定放在集群节点中,可以放在某个节点上。
Hive 数据存储:
1.Hive 的数据存储基于hadoop fs
2.hive 没有专门的存储格式
3.存储结构主要包括:数据库、文件、表、视图、索引
4.Hive默认可以直接加载文本文件(textfiel),还支持 SequenceFile,RCfile
5.创建表是,指定Hive数据的列分割付与行分隔符,Hive 即可解析数据。
Hive的系统架构:
1.用户接口有3个:CLI,JDBC/ODBC,webUI
2.Hive 将元数据存储在数据库中(metastore),目前只支持mysql、derby。hive 中的元数据包括表的名字,标的列和分区及其属性,表的属性(是否为外部表),表的数据所在的目录等。
3.解释器、编译器、优化器、完成HQL查询语句从词法分析、语法分析、编译、优化以及查询计划(plan)的生成。生成的查询计划存储在HDFS中,并在后由 Mapredcue 调用执行。
4.Hive的数据存储在HDFS中,大部分的查询由MAPRECUDE 完成(包含*的查询,比如select * from table 不会生成MapReduce任务)
Hive 的metastroe
1.metastore是 hive 元数据的集中存放地
2.metastore 默认使用内嵌的derby数据库作为存储引擎
3.derby 引擎的缺点:一次只能打开一个会话
4.使用mysql作为外置存储引擎,多用户同时访问。
Hive 与Hadoop 的调用关系
图:
CSV 逗号分隔值 或字符分隔值~
hive使用方式分为 命令行方式CLI,脚本文件方式,JDBC方式,web GUI接口 hwi方式
一、命令行方式
1.直接输入 hive –service cli (hive/bin/hive)
show tables;
create tables test(id int,name string);
quit;
2.hive的脚本执行
hive -e ""
hive -e "">aaa
hive -S -e "">aaa
hive -f file
hive -i /home/my/hive-init.sql
source file
3.hive与外部资源的交互
与linux交互命令!
!ls
!pwd
与hdfs交互命令
dfs -ls /
dfs -mkdir /hive
4.hive的JDBC模式
产看hive /bin的目录下 hiveserver2是否存在
hive - - service hiveserver2
启动服务后会停留在如下图示:
5.hive web界面模式
web界面安装
a. 下载apache-hive-0.14.0-src.tar.gz
b.制作war包放到HIVE_HOME/lib/:hwi/web/*里面所有文件打成war包 (压缩直接改名)
c.复制 tools.jar(jdk的lib包下面的jar包) 到 hive/lib下
d.修改hive-site.xml
<property> <name>hive.hwi.listen.host</name> <value>0.0.0.0</value> </property> <property> <name>hive.hwi.listen.port</name> <value>9999</value> </property> <property> <name>hive.hwi.war.file</name> <value>lib/hive-hwi-0.14.0.war</value> </property>e.hive web界面的 (端口号9999) 启动方式hive --service hwi &
用于通过浏览器来访问hive
6.set命令使用
hive控制台set命令:
set hive.cli.print.current.db=true;
set hive.metastore.warehouse.dir=/hive
hive参数初始化配置set命令:
~/.hiverc
补充:
hive历史操作命令集
~/.hivehistory
----------------------------------bug--------------------
1. 启动hive hwi服务时出现 HWI WAR file not found错误
hwi.HWIServer: HWI WAR file not found at /usr/local/hive/usr/local/hive/lib/hive-hwi-0.12.0-SNAPSHOT.war
解决方案:
将hive-default.xml中关于 hwi的设置拷贝到hive-site.xml中即可
再次运行上面的命令
2. No Java compiler available
Problem accessing /hwi/. Reason:
No Java compiler available
解决方案:现在要做的就是添加apache ant的编译工具,不安装则会报错
安装方法不做介绍了,网上很多。
安装完后需要设置path:
设置ANT_LIB路径
export ANT_LIB=/usr/lib/apache-ant-1.9.0/lib
,但是这个方法不好使,需要把
- ant-launcher.jar
- ant.jar
这两个jar包拷贝到$HIVE_HOME/lib下,才能使用。
OK 成功解决