之前写过一篇分布式Hive环境搭建,但在在后来的新集群中搭建时遇到了新的问题
1、使用新建的数据库用户无法实现hive的启动,元数据schema新建不了,MySQL使用root用户是可以正常实现元数据库的新建的。(在hive 0.13、hive 1.2、hive2.1中都出现了这个问题),一直没解决。
2、最近在工作中,在使用MySQL时出现了如下问题,非root用户无法在终端登录MySQL,但是在Windows中使用Nvicat这样的是可以成功访问数据库的。
ERROR 1045 (28000): Access denied for user 'hive'@'localhost' (using password: YES)
查了好多,找到了原因:
[root@master app]# mysql -u root -p
mysql> create user 'hive' identified by 'hive'; //创建一个账号:用户名为hive,密码为hive
mysql> GRANT ALL PRIVILEGES ON *.* to 'hive'@'%' IDENTIFIED BY 'hive' WITH GRANT OPTION; //将权限授予host为%即所有主机的hive用户
mysql> GRANT ALL PRIVILEGES ON *.* to 'hive'@'master' IDENTIFIED BY 'hive' WITH GRANT OPTION; //将权限授予host为master的hive用户
mysql> GRANT ALL PRIVILEGES ON *.* to 'hive'@'localhost' IDENTIFIED BY 'hive' WITH GRANT OPTION; //将权限授予host为localhost的hive用户
mysql> flush privileges;
mysql> exit;
无法登录是没有权限的问题,所以在这加上就可以了。
Hive的安装:
1、下载Hive源文件压缩包并解压
2、配置conf目录下的hive-site.xml文件
cp hive-default.xml.template hive-site.xml
< property>
< name>javax.jdo.option.ConnectionDriverName< /name>
< value>com.mysql.jdbc.Driver< /value>
< description>Driver class name for a JDBC metastore< /description>
< /property>
< property>
< name>javax.jdo.option.ConnectionURL< /name>
< value>jdbc:mysql://master:3306/hive?characterEncoding=UTF-8< /value>
< description>JDBC connect string for a JDBC metastore< /description>
< /property>
< property>
< name>javax.jdo.option.ConnectionUserName< /name>
< value>hive< /value> #使用的元数据库的用户(MySQL的用户名)
< description>Username to use against metastore database< /description>
< /property>
< property>
< name>javax.jdo.option.ConnectionPassword< /name>
< value>hive< /value>#(MySQL用户对用的密码)
< description>password to use against metastore database< /description>
< /property>