欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

Hive学习之配置MySQL为Metastore

程序员文章站 2024-02-03 23:10:10
...

Hive默认情况下以内嵌模式使用Derby数据库做为metastore,该模式最大的缺陷是不支持多个客户端同时连接到metastore上,因此只适合用于学习测试的目的,要在实际生产上使用Hive需要将metastore配置为本地模式或者远程模式,现在就介绍如何以本地模式配置metas

Hive默认情况下以内嵌模式使用Derby数据库做为metastore,该模式最大的缺陷是不支持多个客户端同时连接到metastore上,因此只适合用于学习测试的目的,要在实际生产上使用Hive需要将metastore配置为本地模式或者远程模式,现在就介绍如何以本地模式配置metastore,使用的数据库为MySQL5.6.19。在进行配置之前先要安装MySQL数据库,一般情况下Linux系统中已经安装了MySQL(至少我的系统中已经安装了),但往往数据库版本比较低,为了使用MySQL的最新版本需要先卸载之前的版本。可以使用下面的语句查询已经安装的MySQL:

rpm –qa | grep –i mysql

然后根据查询结果使用下面的语句删除MySQL:

rpm -e xxxxx 或者
rpm -e --nodeps xxxxx

卸载完成后,使用下面的语句安装MySQL的服务器:

[root@hadoophadoop]# rpm -ivh MySQL-server-5.6.19-1.el6.x86_64.rpm
Preparing...          ###################################[100%]
1:MySQL-server      ###################################[100%]
A RANDOMPASSWORD HAS BEEN SET FOR THE MySQL root USER !You will find that password in'/root/.mysql_secret'.Also, the account for the anonymous user has beenremoved.
##MySQL-5.6.19版本中会为root用户生成一个随机密码,并保存在/root/.mysql_secret中,在使用root用户首次登录时会用到该密码。
In addition, you can run:/usr/bin/mysql_secure_installation,which will also give you the option of removing the test database.This is strongly recommended for production servers.
##建议在生产中运行/usr/bin/mysql_secure_installation脚本,该脚本可以移除测试数据库,在生成环境中推荐该方式。
New default config file was created as /usr/my.cnf and will be used by default by the server when you start it.You may edit this file to change server settings
##新的配置文件保存在/usr/my.cnf

安装MySQL客户端的语句及结果如下:

[root@hadoophadoop]# rpm -ivh MySQL-client-5.6.19-1.el6.x86_64.rpm
Preparing...           ###############################[100%]
1:MySQL-client       ################################ [100%]

安装完MySQL后,运行下面的语句登录数据库,root用户的密码保存在/root/.mysql_secret中:

mysql –u root –p

输入上述文件中的密码登录数据库,执行下面的语句,修改完root用户的密码后就可以在以后的登录中使用新密码。

mysql> use mysql
ERROR 1820(HY000): You must SET PASSWORD before executing this statement
mysql> set PASSWORD=PASSWORD('123456');
Query OK, 0 rowsaffected (0.12 sec)

在完成了MySQL数据库的安装后,需要创建存储metastore的数据库,或者在连接时创建数据库。先创建数据库hive_db:

create database hive_db;

然后创建metastore数据库的用户,并为该用户分配最大权限:

grant all privileges on hive_db.* to Hadoop identified by ‘hadoop’

做完数据库的配置后,现在需要修改Hive的配置文件。将$HIVE_HOME/conf目录下的hive-default.xml.template复制为hive-site.xml:

cp hive-default.xml.template hive-site.xml

然后修改下面的配置信息,指定使用MySQL做为存储metastore的数据库:

javax.jdo.option.ConnectionURLjdbc:mysql://Hadoop:3306/hive_db?createDatabaseIfNotExist=trueJDBC connect string for aJDBC metastorejavax.jdo.option.ConnectionDriverNamecom.mysql.jdbc.DriverDriver class name for aJDBC metastorejavax.jdo.option.ConnectionUserNamehadoopusername to use againstmetastore databasejavax.jdo.option.ConnectionPasswordhadooppassword to use againstmetastore database

修改完配置文件后,将连接MySQL的驱动程序包放置到CLASSPATH中,可以放置到${HIVE_HOME}/lib下,然后成功启动Hive。

使用hadoop用户登录到MySQL中,进入hive_db数据库,执行show tables语句,可以发现存在许多表,比如DBS、TBLS等,如下图所示:

Hive学习之配置MySQL为Metastore

可以查询Hive中存在哪些数据库,如下所示:

Hive学习之配置MySQL为Metastore

至此,配置MySQL以本地模式存储metastore已经完成,上面的图示也说明了这点。当然在实际执行过程中,也出现了一些问题,如没有将MySQL驱动程序加到CLASSPATH中,MySQL的安装问题,其中最大的问题不是来自Hive的,而是安装MySQL,这也说明在MySQL正常的情况下,配置其为metastore的数据库还是很简单的。