本文在查看别人的帖子上结合自己的进行修改。
默认情况下,Hive元数据保存在内嵌的 Derby数据库中,只能允许一个会话连接,只适合简单的测试。为了支持多用户多会话,则需要一个独立的元数据库,我们使用 MySQL作为元数据库,Hive内部对 MySQL提供了很好的支持,配置一个独立的元数据库需要增加以下几步骤:
第一步:从官网下载hive-0.13.1并解压
第二步:安装Hive
此步省略,具体请看http://www.cnblogs.com/linjiqin/archive/2013/03/04/2942402.html
第三步:为Hive建立相应的MySQL账户,并赋予足够的权限,执行命令如下:
hadoop@hadoop001:~$ mysql -uroot -p
mysql> CREATE USER 'hive' IDENTIFIED BY 'mysql';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'hive'@'%' WITH GRANT OPTION;
mysql> flush privileges;</span>
默认情况下Mysql只允许本地登录,所以需要修改配置文件将地址绑定给替换:
root@hadoop001:~# gedit /etc/mysql/my.cnf</span>
找到如下内容
# Instead of skip-networking the defaultis now to listen only on
# localhost which is more compatible andis not less secure.
bind-address = 192.168.4.220 <---改成ip地址就可以远程登录了</span>
重启mysql服务:
service mysql restart</span>
第四步:建立 Hive 专用的元数据库,记得创建时用刚才创建的“hive”账号登陆。
mysql> exit;
hadoop@ubuntu:~$ mysql -uroot -p
mysql> create database hive;</span>
第五步:在Hive的conf目录下的文件“hive-site.xml”中增加如下配置:
<?xmlversion="1.0"?><?xml-stylesheettype="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>hive.metastore.local</name>
<value>true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://192.168.11.157:3306/hive?characterEncoding=UTF-8</value>
</property> <property> <name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123</value>
</property>
</configuration>
修改hive-env.sh文件
HADOOP_HOME=/home/hadoop/hadoop-1.2.1
export HIVE_CONF_DIR=/home/hadoop/hive-0.13.1/conf
从前面我们知道我们的“hive-site.xml”是一个“hive-default.xml.template”的一个拷贝,里面的配置参数非常之多,但是并不是我们都需要的,我们知道,Hive系统会加载两个配置文件一个默认配置文件“hive-default.xml”,另一个就是用户自定义文件“hive-site.xml”。当“hive-site.xml”中的配置参数的值与“hive-default.xml”文件中不一致时,以用户自定义的为准。所以我们就把我们不需要的参数都删除掉,只留下上面所示的内容。
备注:其实修改这里的配置文件如果在Linux下面进行则非常麻烦,尽然我们都建立了FTP了,为何不用,所以把Master.Hadoop上面的这个配置文件下载下来,按照要求进行修改,这样的文件在Windows进行操作是非常方便的,弄好之后在上传上去,覆盖原来的即可。
第六步:把MySQL的JDBC驱动包复制到Hive的lib目录下。
JDBC驱动包的版本:mysql-connector-java-5.1.18-bin.jar
第七步:启动 Hive Shell, 执行“show tables;”命令,如果不报错,表明基于独立元数据库的 Hive 已经安装成功了。
<a target=_blank href="mailto:hadoop@hadoop001:~$">hadoop@hadoop001:~$</a> hive
Logging initialized using configuration in file:/home/hadoop/hive-0.13.1/conf/hive-log4j.properties
Hive history file=/tmp/hadoop/hive_job_log_hadoop_201303041631_450140463.txt
hive> show tables;
OK
Time taken: 1.988 seconds
hive>
第八步:验证Hive配置是否有误,进入Hive的shell新建表,在MySQL的Hive数据库中可以看到相应的元数据库信息。
1)在Hive上建立数据表
hive> CREATE TABLE xp(id INT,name string) ROW FORMAT DELIMITED FIELDSTERMINATED BY '\t';
2)从 MySQL 数据库上查看元数据信息
用到的 SQL 语句:
use hive; //使用 hive数据库库
show tables;//显示 hive数据库中的数据表
select * from TBLS;//查看 hive的元数据信息
到此Hive集成Mysql作为元数据已完成。
远程模式安装
远程模式安装是把 metastore配置到远程机器上,可以配置多个。在独立模式的基础上需要在 hive-site.xml文件中增加的配置项如下:
<property>
<name>hive.metastore.uris</name>
<value>thrift://hadoop001:9083</value>
</property>
如果遇到端口被占用可以使用 netstat -nlt 查看端口使用情况
[root@hadoop001]# netstat -nlt</span>
后台启动metastore 服务root@hadoop001:~/hive-0.13.1$ bin/hive --service metastore