我正在使用临时GCP Dataproc集群( Apache Spark 2.2.1、Apache Hadoop 2.8.4和Apache Hive 2.1.1)。这些集群都指向相同的Hive Metastore (托管在Google Cloud SQL实例上)。
我在一个这样的集群上创建了一个数据库,并将其位置设置为‘HDFS:/ database _name’,如下所示:
$ gcloud dataproc jobs submit hive \
-e "create database db_name LOCATION 'hdfs:///db_name'" \
--cluster=my-first-ephemeral-cluster --region=europe-west1然后my-first-ephemeral-cluster被删除,与之相关的HDFS也被删除。
此后,在所有后续群集上都弹出了以下错误:
u'java.net.UnknownHostException: my-first-ephemeral-cluster-m'这可能是因为Hive Metastore现在有一个不存在的位置条目。尝试删除损坏的数据库也是行不通的:
$ gcloud dataproc jobs submit hive \
-e 'drop database db_name' \
--cluster=my-second-ephemeral-cluster --region=europe-west1
Job [4462cb1d-88f2-4e2b-8a86-c342c0ce46ee] submitted.
Waiting for job output...
Connecting to jdbc:hive2://my-second-ephemeral-cluster-m:10000
Connected to: Apache Hive (version 2.1.1)
Driver: Hive JDBC (version 2.1.1)
18/11/03 13:40:04 [main]: WARN jdbc.HiveConnection: Request to set autoCommit to false; Hive does not support autoCommit=false.
Transaction isolation: TRANSACTION_REPEATABLE_READ
Error: Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:java.lang.IllegalArgumentException: java.net.UnknownHostException: my-first-ephemeral-cluster-m) (state=08S01,code=1)
Closing: 0: jdbc:hive2://my-second-ephemeral-cluster-m:10000原因是主机my-first-ephemeral-cluster-m不再有效。因为在我使用的hive版本中不能更改数据库的位置,所以我需要一个不同的解决方法来删除这个数据库。
发布于 2018-11-04 21:57:17
https://cwiki.apache.org/confluence/display/Hive/Hive+MetaTool
通过配置单元MetaTool,管理员可以对元存储区(...)中的数据库、表和分区记录中的位置字段执行批量更新示例(...)
./hive --service metatool -updateLocation hdfs://localhost:9000 hdfs://namenode2:8020
但首先,您需要知道伪HDFS路径是如何以其“规范”形式保存在元存储中的,例如hdfs://my-first-ephemeral-cluster-m/db_name (如果Google遵循Hadoop标准的话)。
发布于 2018-12-27 05:56:48
从我的观点来看,删除导致错误的配置单元元存储条目的正确方法是在删除群集my -first-ephemeral cluster之前删除数据库,例如使用以下序列的脚本:
gcloud dataproc jobs submit hive -e 'drop database db_name' --cluster=my-first-ephemeral-cluster --region=europe-west1
gcloud dataproc clusters delete my-first-ephemeral-cluster 然而,我发现了Cloud SQL proxy使用云存储(而不是在本地HDFS中创建配置单元仓库的位置‘HDFS:/db_name’)在不同的Dataproc集群之间设置共享配置单元仓库的说明,这可能会给你带来类似于你正在寻找的行为。
发布于 2021-12-04 16:08:57
我已经在Dataproc中创建了一个同名的集群,以删除在HDFS中使用某个位置创建的模式。
https://stackoverflow.com/questions/53131973
复制相似问题