创建配置单元元存储数据库表时出错

vaj7vani  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(373)

我正在运行cloudera管理器(免费版),向导正在创建配置单元元存储数据库。显示此错误并停止配置过程。
使用/var/run/cloudera scm agent/process/40配置单元metastore创建表/hadoop conf作为hadoop\u conf\u目录
我似乎找不到任何可能导致这种情况的信息?
到目前为止,所有东西都配置正确,所有东西都已安装,用户名和密码都正确。
以前有人见过这个错误吗?思想?
错误日志:

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
6qfn3psc

6qfn3psc1#

好的,cloudera使用的是Hive0.10版本,不支持远程登录
但是你需要绕过这个bug,登录到服务器上,这个服务器得到了cloudera管理器将告诉你的ip地址的错误
1) 创建登录到安装配置单元失败的服务器2)创建$haddop\u主页

$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 server

$ sudo service postgresql start

使用chkconfig实用工具确保您的postgresql服务器将在引导时启动:

chkconfig postgresql on

您可以使用chkconfig实用工具验证postgresql server是否将在启动时启动,例如:

chkconfig --list postgresql

步骤2:安装postgres jdbc驱动程序
在使用远程postgresql数据库运行配置单元元存储之前,必须为远程postgresql数据库配置jdbc驱动程序,设置初始数据库架构,并为配置单元用户配置postgresql用户帐户。
在debian/ubuntu系统上安装postgresql jdbc驱动程序:
安装libpostgresqljdbcjava并将文件符号链接到/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
...

现在需要将所有元存储表的权限授予用户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>

并更改为正确的ip,即您运行cloudera manager的主hadoop服务器。如果该文件中的每个链接未正确写入hadoop主cloudera manager连接器,则必须更改为正确的ip
在所有这些之后,只需返回到cloudera manager的自动安装并再次运行,一切都会很好:)
您必须围绕我们的合同cloudera支持进行所有安装(这是他们的业务):)
当我在declouderacdh4.x和sorl中遇到这个问题时,这一切对我来说都很好
当做

izkcnapc

izkcnapc2#

转到此链接:http://www.cloudera.com/documentation/enterprise/5-7-x/topics/cm_ig_mysql.html
转到这个主题:安装mysql jdbc驱动程序
按照说明操作。最后重新启动配置单元服务
库马尔泰铢

相关问题