我正在浏览Cloudera Manager(免费版),并且我已经达到向导创建Hive Metastore数据库的程度。 显示此错误并暂停配置过程。
使用/ var / run / cloudera-scm-agent / process / 40-hive-metastore-create-tables / hadoop-conf作为HADOOP_CONF_DIR
我似乎无法找到任何可能导致此问题的信息?
到目前为止,每件事情都已正确配置,所有安装的内容以及用户名和密码都是正确的。
之前有人见过这个错误吗?想法?
错误日志:
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1116)
at com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:688)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1094)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2337)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2370)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2154)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:792)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:49)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:381)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:305)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
at com.cloudera.enterprise.dbutil.SqlRunner.open(SqlRunner.java:109)
at com.cloudera.enterprise.dbutil.SqlRunner.runSingleQuery(SqlRunner.java:80)
at com.cloudera.cmf.service.hive.HiveMetastoreDbUtil.countTables(HiveMetastoreDbUtil.java:191)
... 2 more
Caused by: java.io.EOFException: Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost.
at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:2540)
at com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:612)
... 20 more
答案 0 :(得分:2)
ok cloudera正在使用版本HIVE 0.10,它不支持远程登录
但你需要绕过那个bug,登录到服务器,这个错误会让cloudera经理告诉你ip
1)创建登录到无法安装HIVE的服务器 2)创建$ HADDOP_HOME
$HADOOP_HOME="/usr/lib/hadoop/"
3)在失败的服务器中安装postgres
`$ sudo apt-get install postgresql`
$ cat /etc/postgresql/9.1/main/postgresql.conf | grep -e listen -e standard_conforming_strings
将其修改为文件中的行
listen_addresses = '*'
standard_conforming_strings = off
您还需要在pg_hba.conf中为您的网络配置身份验证。您需要确保将在下一步中创建的PostgreSQL用户可以从远程主机访问服务器。为此,请在pg_hba.con中添加一个新行,其中包含以下信息:
host <database> <user> <network address> <mask> password
启动PostgreSQL服务器
$ sudo service postgresql start
使用chkconfig实用程序确保PostgreSQL服务器在启动时启动:
chkconfig postgresql on
您可以使用chkconfig实用程序验证PostgreSQL服务器是否会在启动时启动,例如:
chkconfig --list postgresql
第2步:安装Postgres JDBC驱动程序
在使用远程PostgreSQL数据库运行Hive Metastore之前,必须为远程PostgreSQL数据库配置JDBC驱动程序,设置初始数据库模式,并为Hive用户配置PostgreSQL用户帐户。
在Debian / Ubuntu系统上安装PostgreSQL JDBC驱动程序:
安装libpostgresql-jdbc-java并将该文件符号链接到/ usr / lib / hive / lib /目录。
$ sudo apt-get install libpostgresql-jdbc-java
$ ln -s /usr/share/java/postgresql-jdbc4.jar /usr/lib/hive/lib/postgresql-jdbc4.jar
步骤3:创建Metastore数据库和用户帐户
bash# sudo –u postgres psql
bash$ psql
postgres=# CREATE USER hiveuser WITH PASSWORD 'mypassword';
postgres=# CREATE DATABASE metastore;
postgres=# \c metastore;
You are now connected to database 'metastore'.
postgres=# \i /usr/lib/hive/scripts/metastore/upgrade/postgres/hive-schema-0.10.0.postgres.sql
SET
SET
...
现在您需要将所有Metastore表的权限授予用户hiveuser。 PostgreSQL没有语句一次授予所有表的权限;您需要一次授予一个表的权限。您可以使用以下SQL脚本自动执行该任务:
bash# sudo –u postgres psql
metastore=# \o /tmp/grant-privs
metastore=# SELECT 'GRANT SELECT,INSERT,UPDATE,DELETE ON "' || schemaname || '"."' || tablename || '" TO hiveuser ;'
metastore-# FROM pg_tables
metastore-# WHERE tableowner = CURRENT_USER and schemaname = 'public';
metastore=# \o
metastore=# \i /tmp/grant-privs
您可以从运行Metastore服务的计算机验证连接,如下所示:
psql –h myhost –U hiveuser –d metastore
metastore=#
步骤4:配置Metastore服务以与PostgreSQL数据库通信
更改AWS amazon主服务器或您的主服务器的IP,不要使用DNS名称
$find / -name hive-site.xml
$nano /run/cloudera-scm-agent/process/27-hive-metastore-create-tables/hive-site.xml
在文件搜索中:
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:postgresql://myhost/metastore</value>
</property>
并更改为正在运行Cloudera Manager的主Hadoop服务器的正确IP 此文件中的每个链接都没有正确写入hadoop主Cloudera管理器连接器,您将不得不更改为正确的IP
毕竟这只是回到cloudera经理的自动安装并再次运行,这将是好事:)
你必须解决我们的合同cloudera支持(这是他们的业务)的所有安装:)
当我在de cloudera CDH 4.X中使用sorl时出现此问题时,所有这一切都适合我。
此致
答案 1 :(得分:0)
转到此链接: http://www.cloudera.com/documentation/enterprise/5-7-x/topics/cm_ig_mysql.html
转到此主题:安装MySQL JDBC驱动程序
按照说明操作。最后重启你的配置单元服务
Thx Kumar