Hive默认元数据信息存储在Derby里,Derby内置的关系型数据库、单Session的(只支持单客户端连接,两个客户端连接过去会报错);
Hive支持将元数据存储在关系型数据库中,比如:Mysql/Oracle;
本案例采用的是将hive的元数据存储在MySQL中,故需要先安装MySQL数据库,使用的是CentOS6.4版本。
MySQL安装
采用yum安装方式安装:
yum install mysql #安装mysql客户端 yum install mysql-server #安装mysql服务端
判断MySQL是否已经安装好:
chkconfig --list|grep mysql
启动mysql服务:
service mysqld start
或者
/etc/init.d/mysqld start
检查是否启动mysql服务:
/etc/init.d/mysqld status
设置MySQL开机启动:
chkconfig mysqld on
检查设置MySQL开机启动是否配置成功:
chkconfig --list|grep mysql
显示2 3 4 5为on表示开机启动配置成功
创建MySQL的root管理员帐号:
mysqladmin -uroot password root
登录MySQL
mysql -uroot -proot
Hive安装
安装依赖
Hive安装所需要的依赖:
1)JDK6以上;
2)Hadoop安装完毕;
安装版本
hive-0.12.0-cdh5.0.0.tar.gz
下载地址:http://archive.cloudera.com/cdh5/cdh/5/
一般hive是安装在NameNode上
安装步骤
1)解压
tar -zxvf hive-0.12.0-cdh5.0.0.tar.gz -C /app
2)修改Hive配置文件
cd /app/hive-0.12.0-cdh5.0.0/conf cp hive-env.sh.template hive-env.sh vi hive-env.sh
HADOOP_HOME=/app/hadoop-2.3.0-cdh5.0.0 #多hadoop集群中需要手工指向你需要的hadoop集群 export HIVE_CONF_DIR=/app/hive-0.12.0-cdh5.0.0/conf #多hive集群中需要手工指向安装hive的conf目录
hive-site.xml配置成如下
如果hive-site.xml文件不存在,则从hive-default.xml.template拷贝一份
cp hive-default.xml.template hive-site.xml
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value> </property>
<property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>root</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>root</value> </property> </configuration>
注意:此处的hive数据库不需要手工创建,在hive正常启动后,会自动创建hive数据库;hive启动成功会在mysql的hive数据库中自动创建一系列的表;
hive默认数据存储的目录是: /user/hive/warehouse,也可以手工指定
<property> <name>hive.metastore.warehouse.dir</name> <value>/user/hive/warehouse</value> </property>
3)拷贝mysql驱动包到hive/lib
cp /home/hadoop/software/mysql-connector-java-5.1.17-bin.jar /app/hive-0.12.0-cdh5.0.0/lib/
4)为用户分配权限
在mysql中执行如下命令:
grant all on hive.* to root@'%' identified by 'root' WITH GRANT OPTION ;
意思是hive数据库中的任何对象都给任意主机的root用户以密码为root的方式远程访问。
5)配置环境变量
配置HIVE_HOME以及将$HIVE_HOME/bin添加到path中,方便操作
6)启动
在linux命令行执行:hive 因为已经将$HIVE_HOME/bin添加到bin中,所以直接使用hive即可
补充:
A)hive指定日志级别方式启动:
hive --hiveconf hive.root.logger=DEBUG,console
B)启动hive远程访问(thriftserver方式),比如java代码调用hive
hive --service hiveserver &
C)浏览器访问方式
在hive-site.xml中添加
<property> <name>hive.hwi.war.file</name> <value>lib/hive-hwi-0.12.0-cdh5.0.0.jar</value> </property>
启动Hive的UI
hive --service hwi
浏览器访问:http://hostname:9999/hwi
Hive常用命令
先介绍几个Hive常用的命令,后续会详细介绍各种命令的用法
查看所有数据库: show databases
切换到hive数据库: use hive
显示hive数据库下的所有表: show tables
创建表: create table test(id int, name string)
查看表结构。仅包含字段信息: desc table_name
查看表结构详细信息。不仅包含字段信息,还包含存储路径等信息: desc extended table_name
查看function: desc function function_name