Hive是存在于Hadoop集群之上的数据仓库,作为大数据处理时的主要工具,对于大数据开发人员的重要性不言而喻。当然要使用Hive仓库的前提就是对于hive的安装,hive的安装是很简单的过程,主要关注的就是对于hive的元数据的存储位置的考虑。hive在安装的时候,它会默认的将自己的元数据是存储在自身带的derby数据库里,这对于一般的用户的测试使用是相对方便的,但是由于它在使用的时候只满足一个客户端对它的访问,所以在生产模式下,hive的元数据是一般的被保存在传统的关系型数据库mysql中。此时对于mysql的连接问题就是hive安装的主要操作了。
在hive连接mysql数据库的时候,通过下面的配置进行连接(针对于初级的联系者):
<configuration> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://192.168.253.4: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>hive</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>hive</value> </property> </configuration>
注意:连接的时候需要将mysql连接驱动mysql-connector-*.jar导入到hive的lib包下面,还有就是UserName和Password都必须是在mysql数据库中真实存在,且对于mysql数据库的操作权限都是具有的。
接着就是对于hive的启动,启动hive的时候,只要在命令行输入hive就可以了。下面就是在启动的时候可能会遇到的问题(当然如果是人品好的话可能不会遇到滴):
Caused by: java.sql.SQLException: Unable to open a test connection to the given database. JDBC url = jdbc:mysql://192.168.253.4:3306/hive?createDatabaseIfNotExist=true, username = hive. Terminating connection pool (set lazyInit to true if you expect to start your database after your app). Original Exception: ------
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
遇到这样的问题可能的原因有:
⑴.如果hive连接的是远程的mysql数据库,除了上面的配置正确以外,此时就应该考虑的原因是:防火墙的问题!!!(说实话我就是在这里被坑的,我是通过我自己电脑上的虚拟机连接的电脑本地的mysql,原来是防火墙就关的,不知道啥时候就电脑自己给开了,所以就忽视了这个问题),只要将自己电脑的防火墙关闭就可以成功的启动和创建元数据在mysql数据库中了。
⑵.如果hive连接的是本地的mysql数据库,这时就要考虑你自己在安装mysql数据库的时候,是不是创建了一个针对于mysql的用户组,比如是mysql用户组,此时的解决办法就应该是将当前操作hive的用户加入到mysql用户组就解决问题。使用:usermod -a -G mysql 当前用户 .
如果,您认为阅读这篇博客让您有些收获,不妨点击一下右下角的【推荐】。
如果,您希望更容易地发现我的新博客,不妨点击一下左下角的【关注我】。
如果,您对我的博客所讲述的内容有兴趣,请继续关注我的后续博客,我是【飞翔的小伟】,谢谢!
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。