Hive(笔记),
(2015.07.22Hive笔记)一、Hive的安装
1.1Hive的安装过程
下载hive源文件(apache-hive-0.14.0-bin.tar.gz )
解压hive文件
进入$HIVE_HOME/conf/修改文件
cp hive-env.sh.template hive-env.sh
cp hive-default.xml.template(模板文档,提供了hive很多参数) hive-site.xml
修改$HIVE_HOME/conf的hive-env.sh,增加以下三行
export JAVA_HOME=/usr/local/jdk1.7.0_45
export HIVE_HOME=/usr/local/hive-0.14.0
export HADOOP_HOME=/usr/local/hadoop-2.6.0
配置MySQL的metastore
修改$HIVE_HOME/conf/hive-site.xml
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://192.168.1.101:3306/hive?
createDatabaseIfNotExist=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>(lib目录下默认没有驱动,需要自己下载mysql-connector-java-5.1.10.jar,因为自带了derby-10.10.1.1.jar,能启动derby数据库)
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hive</value>
</property>
<property>
<name>hive.querylog.location</name>
<value>/usr/local/hive-0.14.0/tmp</value>
</property>
<property>
<name>hive.exec.local.scratchdir</name>
<value>/usr/local/hive-0.14.0/tmp</value>
</property>
<property>
<name>hive.downloaded.resources.dir</name>
<value>/usr/local/hive-0.14.0/tmp</value>
</property>
连接本地Mysql解决办法(感谢为我提供帮助的国柱、其国、世昌师兄们和老师)
1.首先登陆到mysql
mysql -uroot -pmysql
2.创建远程登陆用户并授权
grant all PRIVILEGES on test_db.* to root@'192.168.1.101' identified by 'root';
3.执行了上面的语句后,再执行下面的语句,方可立即生效。
flush privileges;
如果不行
先use mysql;
然后UPDATE user SET `Host` = '%' WHERE `User` = 'root' LIMIT 1;
flush privileges;
我还是有一些疑问1:现在不能用root用户登录,只能用其他用户登录对吗?其他用户的权限少了些什么?2配置文件连接的是192.168.1.101,在qlyog127.0.0.1新建一个hive数据库才能用(hive新建的表的元数据都保存在那里,而不是192.168.1.101)
新创建一个用户,不要用root,估计root串了。
use mysql;
grant all privileges on *.* to <用户名>@'%' identified by '密码';
flush privilege;
SELECT `Host`,`User` FROM user;
alter database hive character set latin1;
成功连接mysql启动hive
因为$HIVE_HOME/lib目录下有derby的jar包所以使用derby作为默认的metastore。
Hive1.2版本中的jline-2.12.jar包与hadoop2.6.0(jline-0.9.94.jar版本)不兼容,解决办法,将这个jar包复制到hadoop的lib目录下。
1.2hive web界面模式
web界面安装:
下载apache-hive-0.14.0-src.tar.gz(版本需要对应)
制作war包放在HIVE_HOME/lib/ : (apache-hive-0.14.0-src.tar\apache-hive-0.14.0-src\hwi将web解压出来,里面的jsp文件就是hwi的显示界面 )hwi/web/*里面所有的文件打成war包(压缩文件,并重命名为hive-hwi-0.14.0.war)
复制tool.jar(jdk的lib包下面的tool.jar包)到HIVE_HOME/lib下
修改hive-site.xml(HIVE_HOME/conf)
<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>
hive web界面的 (端口号9999) 启动方式
#hive --service hwi &(&表示后台显示)
用于通过浏览器来访问hive
http://hadoop0:9999/hwi/
可以查看hive的系统信息,hadoop日志路径信息等
1.3set命令使用
hive控制台set命令:
set hive.cli.print.current.db=true;
set hive.cli.print.header=true;
set hive.metastore.warehouse.dir=/hive;
hive参数初始化配置set命令:
~/.hiverc(存放在每个用户的主目录下面,可以创建一个.hiverc,将set命令的参数复制进去,重新启动执行hive,就可以将set命令执行起来)
补充:
hive历史操作命令集(more .hivehistory查看一下)
~/.hivehistory
直接查看(执行set),查看hadoop定义的全部变量,hive底层依赖的hadoop环境变量配置信息(set -v)
设置name变量并初始化(set hivevar:name=crxy;)显示(set hivevar:name;),传值(create table t2(name string,${hivevar:name} string);)