lklhdu opened a new issue, #3019:
URL: https://github.com/apache/amoro/issues/3019
### What happened?
When reading or writing to the iceberg table via the Unified Catalog, the
kerberos authentication fails, causing the job to fail.
### Affects Versions
master
### What table formats are you seeing the problem on?
Iceberg
### What engines are you seeing the problem on?
Flink
### How to reproduce
1. start Flink SQL Client
2. create Flink Unified Catalog
```
create catalog arctic_catalog with(
'type'='unified',
'metastore.url' = 'thrift://{ams-address}:18070/unified_catalog'
);
```
3. create print table
```
create table printsink(
id int,
name string,
dt string
) with (
'connector' = 'print'
);
```
4. read the iceberg table and write to print table
```
insert into printsink select * from
arctic_catalog.iceberg_test.iceberg_by_uc_spark /*+
OPTIONS('streaming'='true','table.format'='ICEBERG') */;
```
### Relevant log output
```shell
javax.security.sasl.SaslException: GSS initiate failed
at
com.sun.security.sasl.gsskerb.GssKrb5Client.evaluateChallenge(GssKrb5Client.java:220)
~[?:1.8.0_332]
at
org.apache.hadoop.security.SaslRpcClient.saslConnect(SaslRpcClient.java:407)
~[flink-shaded-hadoop-2-uber-2.10.2-10.0.jar:2.10.2-10.0]
at
org.apache.hadoop.ipc.Client$Connection.setupSaslConnection(Client.java:629)
~[flink-shaded-hadoop-2-uber-2.10.2-10.0.jar:2.10.2-10.0]
at org.apache.hadoop.ipc.Client$Connection.access$2200(Client.java:423)
~[flink-shaded-hadoop-2-uber-2.10.2-10.0.jar:2.10.2-10.0]
at org.apache.hadoop.ipc.Client$Connection$2.run(Client.java:833)
~[flink-shaded-hadoop-2-uber-2.10.2-10.0.jar:2.10.2-10.0]
at org.apache.hadoop.ipc.Client$Connection$2.run(Client.java:829)
~[flink-shaded-hadoop-2-uber-2.10.2-10.0.jar:2.10.2-10.0]
at java.security.AccessController.doPrivileged(Native Method)
~[?:1.8.0_332]
at javax.security.auth.Subject.doAs(Subject.java:422) ~[?:1.8.0_332]
at
org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1938)
~[flink-shaded-hadoop-2-uber-2.10.2-10.0.jar:2.10.2-10.0]
at
org.apache.hadoop.ipc.Client$Connection.setupIOstreams(Client.java:828)
~[flink-shaded-hadoop-2-uber-2.10.2-10.0.jar:2.10.2-10.0]
at org.apache.hadoop.ipc.Client$Connection.access$3700(Client.java:423)
~[flink-shaded-hadoop-2-uber-2.10.2-10.0.jar:2.10.2-10.0]
at org.apache.hadoop.ipc.Client.getConnection(Client.java:1621)
~[flink-shaded-hadoop-2-uber-2.10.2-10.0.jar:2.10.2-10.0]
at org.apache.hadoop.ipc.Client.call(Client.java:1450)
~[flink-shaded-hadoop-2-uber-2.10.2-10.0.jar:2.10.2-10.0]
at org.apache.hadoop.ipc.Client.call(Client.java:1403)
~[flink-shaded-hadoop-2-uber-2.10.2-10.0.jar:2.10.2-10.0]
at
org.apache.hadoop.ipc.ProtobufRpcEngine$Invoker.invoke(ProtobufRpcEngine.java:230)
~[flink-shaded-hadoop-2-uber-2.10.2-10.0.jar:2.10.2-10.0]
at
org.apache.hadoop.ipc.ProtobufRpcEngine$Invoker.invoke(ProtobufRpcEngine.java:118)
~[flink-shaded-hadoop-2-uber-2.10.2-10.0.jar:2.10.2-10.0]
at com.sun.proxy.$Proxy42.getBlockLocations(Unknown Source) ~[?:?]
at
org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolTranslatorPB.getBlockLocations(ClientNamenodeProtocolTranslatorPB.java:263)
~[flink-shaded-hadoop-2-uber-2.10.2-10.0.jar:2.10.2-10.0]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
~[?:1.8.0_332]
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
~[?:1.8.0_332]
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
~[?:1.8.0_332]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_332]
at
org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:433)
~[flink-shaded-hadoop-2-uber-2.10.2-10.0.jar:2.10.2-10.0]
at
org.apache.hadoop.io.retry.RetryInvocationHandler$Call.invokeMethod(RetryInvocationHandler.java:166)
~[flink-shaded-hadoop-2-uber-2.10.2-10.0.jar:2.10.2-10.0]
at
org.apache.hadoop.io.retry.RetryInvocationHandler$Call.invoke(RetryInvocationHandler.java:158)
~[flink-shaded-hadoop-2-uber-2.10.2-10.0.jar:2.10.2-10.0]
at
org.apache.hadoop.io.retry.RetryInvocationHandler$Call.invokeOnce(RetryInvocationHandler.java:96)
~[flink-shaded-hadoop-2-uber-2.10.2-10.0.jar:2.10.2-10.0]
at
org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:362)
~[flink-shaded-hadoop-2-uber-2.10.2-10.0.jar:2.10.2-10.0]
at com.sun.proxy.$Proxy43.getBlockLocations(Unknown Source) ~[?:?]
at
org.apache.hadoop.hdfs.DFSClient.callGetBlockLocations(DFSClient.java:870)
~[flink-shaded-hadoop-2-uber-2.10.2-10.0.jar:2.10.2-10.0]
at
org.apache.hadoop.hdfs.DFSClient.getLocatedBlocks(DFSClient.java:859)
~[flink-shaded-hadoop-2-uber-2.10.2-10.0.jar:2.10.2-10.0]
at
org.apache.hadoop.hdfs.DFSClient.getLocatedBlocks(DFSClient.java:848)
~[flink-shaded-hadoop-2-uber-2.10.2-10.0.jar:2.10.2-10.0]
at
org.apache.hadoop.hdfs.DFSInputStream.fetchLocatedBlocksAndGetLastBlockLength(DFSInputStream.java:348)
~[flink-shaded-hadoop-2-uber-2.10.2-10.0.jar:2.10.2-10.0]
at
org.apache.hadoop.hdfs.DFSInputStream.openInfo(DFSInputStream.java:307)
~[flink-shaded-hadoop-2-uber-2.10.2-10.0.jar:2.10.2-10.0]
at
org.apache.hadoop.hdfs.DFSInputStream.<init>(DFSInputStream.java:292)
~[flink-shaded-hadoop-2-uber-2.10.2-10.0.jar:2.10.2-10.0]
at org.apache.hadoop.hdfs.DFSClient.open(DFSClient.java:1087)
~[flink-shaded-hadoop-2-uber-2.10.2-10.0.jar:2.10.2-10.0]
at
org.apache.hadoop.hdfs.DistributedFileSystem$4.doCall(DistributedFileSystem.java:327)
~[flink-shaded-hadoop-2-uber-2.10.2-10.0.jar:2.10.2-10.0]
at
org.apache.hadoop.hdfs.DistributedFileSystem$4.doCall(DistributedFileSystem.java:324)
~[flink-shaded-hadoop-2-uber-2.10.2-10.0.jar:2.10.2-10.0]
at
org.apache.hadoop.fs.FileSystemLinkResolver.resolve(FileSystemLinkResolver.java:81)
~[flink-shaded-hadoop-2-uber-2.10.2-10.0.jar:2.10.2-10.0]
at
org.apache.hadoop.hdfs.DistributedFileSystem.open(DistributedFileSystem.java:324)
~[flink-shaded-hadoop-2-uber-2.10.2-10.0.jar:2.10.2-10.0]
at org.apache.hadoop.fs.FileSystem.open(FileSystem.java:920)
~[flink-shaded-hadoop-2-uber-2.10.2-10.0.jar:2.10.2-10.0]
at
org.apache.amoro.shade.org.apache.iceberg.hadoop.HadoopInputFile.newStream(HadoopInputFile.java:183)
~[amoro-mixed-format-flink-runtime-1.17-0.7-SNAPSHOT.jar:0.7-SNAPSHOT]
at
org.apache.amoro.shade.org.apache.iceberg.TableMetadataParser.read(TableMetadataParser.java:272)
~[amoro-mixed-format-flink-runtime-1.17-0.7-SNAPSHOT.jar:0.7-SNAPSHOT]
at
org.apache.amoro.shade.org.apache.iceberg.TableMetadataParser.read(TableMetadataParser.java:266)
~[amoro-mixed-format-flink-runtime-1.17-0.7-SNAPSHOT.jar:0.7-SNAPSHOT]
at
org.apache.amoro.shade.org.apache.iceberg.BaseMetastoreTableOperations.lambda$refreshFromMetadataLocation$0(BaseMetastoreTableOperations.java:189)
~[amoro-mixed-format-flink-runtime-1.17-0.7-SNAPSHOT.jar:0.7-SNAPSHOT]
at
org.apache.amoro.shade.org.apache.iceberg.BaseMetastoreTableOperations.lambda$refreshFromMetadataLocation$1(BaseMetastoreTableOperations.java:208)
~[amoro-mixed-format-flink-runtime-1.17-0.7-SNAPSHOT.jar:0.7-SNAPSHOT]
at
org.apache.amoro.shade.org.apache.iceberg.util.Tasks$Builder.runTaskWithRetry(Tasks.java:413)
~[amoro-mixed-format-flink-runtime-1.17-0.7-SNAPSHOT.jar:0.7-SNAPSHOT]
at
org.apache.amoro.shade.org.apache.iceberg.util.Tasks$Builder.runSingleThreaded(Tasks.java:219)
~[amoro-mixed-format-flink-runtime-1.17-0.7-SNAPSHOT.jar:0.7-SNAPSHOT]
at
org.apache.amoro.shade.org.apache.iceberg.util.Tasks$Builder.run(Tasks.java:203)
~[amoro-mixed-format-flink-runtime-1.17-0.7-SNAPSHOT.jar:0.7-SNAPSHOT]
at
org.apache.amoro.shade.org.apache.iceberg.util.Tasks$Builder.run(Tasks.java:196)
~[amoro-mixed-format-flink-runtime-1.17-0.7-SNAPSHOT.jar:0.7-SNAPSHOT]
at
org.apache.amoro.shade.org.apache.iceberg.BaseMetastoreTableOperations.refreshFromMetadataLocation(BaseMetastoreTableOperations.java:208)
~[amoro-mixed-format-flink-runtime-1.17-0.7-SNAPSHOT.jar:0.7-SNAPSHOT]
at
org.apache.amoro.shade.org.apache.iceberg.BaseMetastoreTableOperations.refreshFromMetadataLocation(BaseMetastoreTableOperations.java:185)
~[amoro-mixed-format-flink-runtime-1.17-0.7-SNAPSHOT.jar:0.7-SNAPSHOT]
at
org.apache.amoro.shade.org.apache.iceberg.BaseMetastoreTableOperations.refreshFromMetadataLocation(BaseMetastoreTableOperations.java:180)
~[amoro-mixed-format-flink-runtime-1.17-0.7-SNAPSHOT.jar:0.7-SNAPSHOT]
at
org.apache.amoro.shade.org.apache.iceberg.hive.HiveTableOperations.doRefresh(HiveTableOperations.java:178)
~[amoro-mixed-format-flink-runtime-1.17-0.7-SNAPSHOT.jar:0.7-SNAPSHOT]
at
org.apache.amoro.shade.org.apache.iceberg.BaseMetastoreTableOperations.refresh(BaseMetastoreTableOperations.java:97)
~[amoro-mixed-format-flink-runtime-1.17-0.7-SNAPSHOT.jar:0.7-SNAPSHOT]
at
org.apache.amoro.shade.org.apache.iceberg.BaseMetastoreTableOperations.current(BaseMetastoreTableOperations.java:80)
~[amoro-mixed-format-flink-runtime-1.17-0.7-SNAPSHOT.jar:0.7-SNAPSHOT]
at
org.apache.amoro.shade.org.apache.iceberg.BaseMetastoreCatalog.loadTable(BaseMetastoreCatalog.java:47)
~[amoro-mixed-format-flink-runtime-1.17-0.7-SNAPSHOT.jar:0.7-SNAPSHOT]
at
org.apache.amoro.shade.com.github.benmanes.caffeine.cache.BoundedLocalCache.lambda$doComputeIfAbsent$14(BoundedLocalCache.java:2406)
~[amoro-mixed-format-flink-runtime-1.17-0.7-SNAPSHOT.jar:0.7-SNAPSHOT]
at
java.util.concurrent.ConcurrentHashMap.compute(ConcurrentHashMap.java:1853)
~[?:1.8.0_332]
at
org.apache.amoro.shade.com.github.benmanes.caffeine.cache.BoundedLocalCache.doComputeIfAbsent(BoundedLocalCache.java:2404)
~[amoro-mixed-format-flink-runtime-1.17-0.7-SNAPSHOT.jar:0.7-SNAPSHOT]
at
org.apache.amoro.shade.com.github.benmanes.caffeine.cache.BoundedLocalCache.computeIfAbsent(BoundedLocalCache.java:2387)
~[amoro-mixed-format-flink-runtime-1.17-0.7-SNAPSHOT.jar:0.7-SNAPSHOT]
at
org.apache.amoro.shade.com.github.benmanes.caffeine.cache.LocalCache.computeIfAbsent(LocalCache.java:108)
~[amoro-mixed-format-flink-runtime-1.17-0.7-SNAPSHOT.jar:0.7-SNAPSHOT]
at
org.apache.amoro.shade.com.github.benmanes.caffeine.cache.LocalManualCache.get(LocalManualCache.java:62)
~[amoro-mixed-format-flink-runtime-1.17-0.7-SNAPSHOT.jar:0.7-SNAPSHOT]
at
org.apache.amoro.shade.org.apache.iceberg.CachingCatalog.loadTable(CachingCatalog.java:166)
~[amoro-mixed-format-flink-runtime-1.17-0.7-SNAPSHOT.jar:0.7-SNAPSHOT]
at
org.apache.amoro.shade.org.apache.iceberg.flink.FlinkCatalog.loadIcebergTable(FlinkCatalog.java:339)
~[amoro-mixed-format-flink-runtime-1.17-0.7-SNAPSHOT.jar:0.7-SNAPSHOT]
at
org.apache.amoro.shade.org.apache.iceberg.flink.FlinkCatalog.getTable(FlinkCatalog.java:333)
~[amoro-mixed-format-flink-runtime-1.17-0.7-SNAPSHOT.jar:0.7-SNAPSHOT]
at
org.apache.amoro.shade.org.apache.iceberg.flink.FlinkCatalog.getTable(FlinkCatalog.java:93)
~[amoro-mixed-format-flink-runtime-1.17-0.7-SNAPSHOT.jar:0.7-SNAPSHOT]
at
org.apache.amoro.flink.catalog.FlinkUnifiedCatalog.getTable(FlinkUnifiedCatalog.java:182)
~[amoro-mixed-format-flink-runtime-1.17-0.7-SNAPSHOT.jar:0.7-SNAPSHOT]
at
org.apache.flink.table.catalog.CatalogManager.getPermanentTable(CatalogManager.java:408)
~[flink-table-api-java-uber-1.17.1.jar:1.17.1]
at
org.apache.flink.table.catalog.CatalogManager.getTable(CatalogManager.java:364)
~[flink-table-api-java-uber-1.17.1.jar:1.17.1]
at
org.apache.flink.table.planner.catalog.DatabaseCalciteSchema.getTable(DatabaseCalciteSchema.java:73)
~[?:?]
at
org.apache.calcite.jdbc.SimpleCalciteSchema.getImplicitTable(SimpleCalciteSchema.java:126)
~[?:?]
at
org.apache.calcite.jdbc.CalciteSchema.getTable(CalciteSchema.java:295) ~[?:?]
at
org.apache.calcite.sql.validate.EmptyScope.resolve_(EmptyScope.java:145) ~[?:?]
at
org.apache.calcite.sql.validate.EmptyScope.resolveTable(EmptyScope.java:101)
~[?:?]
at
org.apache.calcite.sql.validate.DelegatingScope.resolveTable(DelegatingScope.java:214)
~[?:?]
at
org.apache.calcite.sql.validate.IdentifierNamespace.resolveImpl(IdentifierNamespace.java:116)
~[?:?]
at
org.apache.calcite.sql.validate.IdentifierNamespace.validateImpl(IdentifierNamespace.java:188)
~[?:?]
at
org.apache.calcite.sql.validate.AbstractNamespace.validate(AbstractNamespace.java:89)
~[?:?]
at
org.apache.calcite.sql.validate.SqlValidatorImpl.validateNamespace(SqlValidatorImpl.java:1042)
~[?:?]
at
org.apache.calcite.sql.validate.SqlValidatorImpl.validateQuery(SqlValidatorImpl.java:1017)
~[?:?]
at
org.apache.calcite.sql.validate.SqlValidatorImpl.validateFrom(SqlValidatorImpl.java:3287)
~[?:?]
at
org.apache.calcite.sql.validate.SqlValidatorImpl.validateFrom(SqlValidatorImpl.java:3272)
~[?:?]
at
org.apache.calcite.sql.validate.SqlValidatorImpl.validateSelect(SqlValidatorImpl.java:3558)
~[?:?]
at
org.apache.calcite.sql.validate.SelectNamespace.validateImpl(SelectNamespace.java:64)
~[?:?]
at
org.apache.calcite.sql.validate.AbstractNamespace.validate(AbstractNamespace.java:89)
~[?:?]
at
org.apache.calcite.sql.validate.SqlValidatorImpl.validateNamespace(SqlValidatorImpl.java:1042)
~[?:?]
at
org.apache.calcite.sql.validate.SqlValidatorImpl.validateQuery(SqlValidatorImpl.java:1017)
~[?:?]
at org.apache.calcite.sql.SqlSelect.validate(SqlSelect.java:247) ~[?:?]
at
org.apache.calcite.sql.validate.SqlValidatorImpl.validateScopedExpression(SqlValidatorImpl.java:992)
~[?:?]
at
org.apache.calcite.sql.validate.SqlValidatorImpl.validate(SqlValidatorImpl.java:741)
~[?:?]
at
org.apache.flink.table.planner.calcite.FlinkPlannerImpl.org$apache$flink$table$planner$calcite$FlinkPlannerImpl$$validate(FlinkPlannerImpl.scala:183)
~[?:?]
at
org.apache.flink.table.planner.calcite.FlinkPlannerImpl.validate(FlinkPlannerImpl.scala:113)
~[?:?]
at
org.apache.flink.table.planner.calcite.FlinkPlannerImpl.validateRichSqlInsert(FlinkPlannerImpl.scala:292)
~[?:?]
at
org.apache.flink.table.planner.calcite.FlinkPlannerImpl.org$apache$flink$table$planner$calcite$FlinkPlannerImpl$$validate(FlinkPlannerImpl.scala:175)
~[?:?]
at
org.apache.flink.table.planner.calcite.FlinkPlannerImpl.validate(FlinkPlannerImpl.scala:113)
~[?:?]
at
org.apache.flink.table.planner.operations.SqlToOperationConverter.convert(SqlToOperationConverter.java:281)
~[?:?]
at
org.apache.flink.table.planner.delegation.ParserImpl.parse(ParserImpl.java:106)
~[?:?]
at
org.apache.flink.table.gateway.service.operation.OperationExecutor.executeStatement(OperationExecutor.java:186)
~[flink-sql-gateway-1.17.1.jar:1.17.1]
at
org.apache.flink.table.gateway.service.SqlGatewayServiceImpl.lambda$executeStatement$1(SqlGatewayServiceImpl.java:212)
~[flink-sql-gateway-1.17.1.jar:1.17.1]
at
org.apache.flink.table.gateway.service.operation.OperationManager.lambda$submitOperation$1(OperationManager.java:119)
~[flink-sql-gateway-1.17.1.jar:1.17.1]
at
org.apache.flink.table.gateway.service.operation.OperationManager$Operation.lambda$run$0(OperationManager.java:258)
~[flink-sql-gateway-1.17.1.jar:1.17.1]
at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
[?:1.8.0_332]
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[?:1.8.0_332]
at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
[?:1.8.0_332]
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[?:1.8.0_332]
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
[?:1.8.0_332]
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
[?:1.8.0_332]
at java.lang.Thread.run(Thread.java:750) [?:1.8.0_332]
Caused by: org.ietf.jgss.GSSException: No valid credentials provided
(Mechanism level: Failed to find any Kerberos tgt)
at
sun.security.jgss.krb5.Krb5InitCredential.getInstance(Krb5InitCredential.java:162)
~[?:1.8.0_332]
at
sun.security.jgss.krb5.Krb5MechFactory.getCredentialElement(Krb5MechFactory.java:122)
~[?:1.8.0_332]
at
sun.security.jgss.krb5.Krb5MechFactory.getMechanismContext(Krb5MechFactory.java:189)
~[?:1.8.0_332]
at
sun.security.jgss.GSSManagerImpl.getMechanismContext(GSSManagerImpl.java:224)
~[?:1.8.0_332]
at
sun.security.jgss.GSSContextImpl.initSecContext(GSSContextImpl.java:212)
~[?:1.8.0_332]
at
sun.security.jgss.GSSContextImpl.initSecContext(GSSContextImpl.java:179)
~[?:1.8.0_332]
at
com.sun.security.sasl.gsskerb.GssKrb5Client.evaluateChallenge(GssKrb5Client.java:201)
~[?:1.8.0_332]
... 107 more
[ERROR] Could not execute SQL statement. Reason:
GSSException: No valid credentials provided (Mechanism level: Failed to find
any Kerberos tgt)
```
### Anything else
_No response_
### Are you willing to submit a PR?
- [X] Yes I am willing to submit a PR!
### Code of Conduct
- [X] I agree to follow this project's Code of Conduct
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]