Apache flink Flink写入Hdfs加密区域

Apache flink Flink写入Hdfs加密区域,apache-flink,flink-streaming,Apache Flink,Flink Streaming,我在当前环境中有一个加密的hdfs区域。我正在使用Flink 1.2.0集群,使用Apache parquet writer 1.9.0版将拼花文件写入hdfs加密区域。我在写入非加密区域时没有问题,但在写入加密区域的那一刻,我出现了以下错误: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.hdfs.UnknownCryptoProtocolVersionException): No crypto protocol version

我在当前环境中有一个加密的hdfs区域。我正在使用Flink 1.2.0集群,使用Apache parquet writer 1.9.0版将拼花文件写入hdfs加密区域。我在写入非加密区域时没有问题,但在写入加密区域的那一刻,我出现了以下错误:

org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.hdfs.UnknownCryptoProtocolVersionException): No crypto protocol versions provided by the client are supported. Client provided: [] NameNode supports: [CryptoProtocolVersion{description='Unknown', version=1, unknownValue=null}, CryptoProtocolVersion{description='Encryption zones', version=2, unknownValue=null}]
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.chooseProtocolVersion(FSNamesystem.java:2538)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.startFileInt(FSNamesystem.java:2682)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.startFile(FSNamesystem.java:2599)
at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.create(NameNodeRpcServer.java:595)
at org.apache.hadoop.hdfs.server.namenode.AuthorizationProviderProxyClientProtocol.create(AuthorizationProviderProxyClientProtocol.java:112)
at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.create(ClientNamenodeProtocolServerSideTranslatorPB.java:395)
at org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenodeProtocolProtos.java)
at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:617)
at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:1073)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2086)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2082)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:422)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1693)
at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2080)

at org.apache.hadoop.ipc.Client.call(Client.java:1406)
at org.apache.hadoop.ipc.Client.call(Client.java:1359)
at org.apache.hadoop.ipc.ProtobufRpcEngine$Invoker.invoke(ProtobufRpcEngine.java:206)
at com.sun.proxy.$Proxy10.create(Unknown Source)
at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolTranslatorPB.create(ClientNamenodeProtocolTranslatorPB.java:245)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:186)
at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:102)
at com.sun.proxy.$Proxy12.create(Unknown Source)
at org.apache.hadoop.hdfs.DFSOutputStream.newStreamForCreate(DFSOutputStream.java:1425)
at org.apache.hadoop.hdfs.DFSClient.create(DFSClient.java:1449)
at org.apache.hadoop.hdfs.DFSClient.create(DFSClient.java:1374)
at org.apache.hadoop.hdfs.DistributedFileSystem$6.doCall(DistributedFileSystem.java:390)
at org.apache.hadoop.hdfs.DistributedFileSystem$6.doCall(DistributedFileSystem.java:386)
at org.apache.hadoop.fs.FileSystemLinkResolver.resolve(FileSystemLinkResolver.java:81)
at org.apache.hadoop.hdfs.DistributedFileSystem.create(DistributedFileSystem.java:386)
at org.apache.hadoop.hdfs.DistributedFileSystem.create(DistributedFileSystem.java:330)
at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:907)
at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:888)
at org.apache.parquet.hadoop.ParquetFileWriter.<init>(ParquetFileWriter.java:239)
at org.apache.parquet.hadoop.ParquetWriter.<init>(ParquetWriter.java:273)
at org.apache.parquet.hadoop.ParquetWriter.<init>(ParquetWriter.java:222)
at org.apache.parquet.hadoop.ParquetWriter.<init>(ParquetWriter.java:188)
at org.apache.parquet.hadoop.ParquetWriter.<init>(ParquetWriter.java:158)
at org.apache.parquet.hadoop.ParquetWriter.<init>(ParquetWriter.java:124)
at org.apache.parquet.hadoop.ParquetWriter.<init>(ParquetWriter.java:97)
at org.apache.parquet.hadoop.ParquetWriter.<init>(ParquetWriter.java:71)
at org.apache.parquet.avro.AvroParquetWriter.<init>(AvroParquetWriter.java:54)
at com.dataplatform.integration.flink.sink.BucketParquetWriter.write(BucketParquetWriter.java:160)
at com.dataplatform.integration.flink.sink.BucketParquetSink.invoke(BucketParquetSink.java:347)
at org.apache.flink.streaming.api.operators.StreamSink.processElement(StreamSink.java:38)
at org.apache.flink.streaming.runtime.io.StreamInputProcessor.processInput(StreamInputProcessor.java:185)
at org.apache.flink.streaming.runtime.tasks.OneInputStreamTask.run(OneInputStreamTask.java:63)
at org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:261)
at org.apache.flink.runtime.taskmanager.Task.run(Task.java:656)
at java.lang.Thread.run(Thread.java:745)
org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.hdfs.UnknownCryptoProtocolVersionException):不支持客户端提供的加密协议版本。提供的客户端:[]名称节点支持:[加密协议版本{description='Unknown',version=1,unknownValue=null},加密协议版本{description='Encryption zones',version=2,unknownValue=null}]
位于org.apache.hadoop.hdfs.server.namenode.FSNamesystem.chooseProtocolVersion(FSNamesystem.java:2538)
位于org.apache.hadoop.hdfs.server.namenode.FSNamesystem.startFileInt(FSNamesystem.java:2682)
位于org.apache.hadoop.hdfs.server.namenode.FSNamesystem.startFile(FSNamesystem.java:2599)
位于org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.create(NameNodeRpcServer.java:595)
位于org.apache.hadoop.hdfs.server.namenode.AuthorizationProviderProxyClientProtocol.create(AuthorizationProviderProxyClientProtocol.java:112)
位于org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.create(ClientNamenodeProtocolServerSideTranslatorPB.java:395)
位于org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenodeProtocolProtos.java)
在org.apache.hadoop.ipc.protobufrpcnengine$Server$protobufrpinvoker.call(protobufrpcnengine.java:617)
位于org.apache.hadoop.ipc.RPC$Server.call(RPC.java:1073)
位于org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2086)
位于org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2082)
位于java.security.AccessController.doPrivileged(本机方法)
位于javax.security.auth.Subject.doAs(Subject.java:422)
位于org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1693)
位于org.apache.hadoop.ipc.Server$Handler.run(Server.java:2080)
位于org.apache.hadoop.ipc.Client.call(Client.java:1406)
位于org.apache.hadoop.ipc.Client.call(Client.java:1359)
位于org.apache.hadoop.ipc.protobufrpceengine$Invoker.invoke(protobufrpceengine.java:206)
位于com.sun.proxy.$Proxy10.create(未知源)
在org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolTranslatorPB.create(ClientNamenodeProtocolTranslatorPB.java:245)上
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:498)
位于org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:186)
位于org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:102)
位于com.sun.proxy.$Proxy12.create(未知源)
位于org.apache.hadoop.hdfs.DFSOutputStream.newStreamForCreate(DFSOutputStream.java:1425)
位于org.apache.hadoop.hdfs.DFSClient.create(DFSClient.java:1449)
位于org.apache.hadoop.hdfs.DFSClient.create(DFSClient.java:1374)
位于org.apache.hadoop.hdfs.DistributedFileSystem$6.doCall(DistributedFileSystem.java:390)
位于org.apache.hadoop.hdfs.DistributedFileSystem$6.doCall(DistributedFileSystem.java:386)
位于org.apache.hadoop.fs.FileSystemLinkResolver.resolve(FileSystemLinkResolver.java:81)
位于org.apache.hadoop.hdfs.DistributedFileSystem.create(DistributedFileSystem.java:386)
在org.apache.hadoop.hdfs.DistributedFileSystem.create(DistributedFileSystem.java:330)上
位于org.apache.hadoop.fs.FileSystem.create(FileSystem.java:907)
位于org.apache.hadoop.fs.FileSystem.create(FileSystem.java:888)
位于org.apache.parquet.hadoop.ParquetFileWriter。(ParquetFileWriter.java:239)
位于org.apache.parquet.hadoop.parquetwitter(parquetwitter.java:273)
位于org.apache.parquet.hadoop.parquetwitter(parquetwitter.java:222)
位于org.apache.parquet.hadoop.parquetwitter(parquetwitter.java:188)
位于org.apache.parquet.hadoop.parquetwitter(parquetwitter.java:158)
位于org.apache.parquet.hadoop.parquetwitter。(parquetwitter.java:124)
位于org.apache.parquet.hadoop.parquetwitter(parquetwitter.java:97)
位于org.apache.parquet.hadoop.parquetwitter(parquetwitter.java:71)
在org.apache.parquet.avro.avroparquetwitter上(avroparquetwitter.java:54)
在com.dataplatform.integration.flink.sink.BucketParquetWriter.write(BucketParquetWriter.java:160)上
位于com.dataplatform.integration.flink.sink.BucketParquetSink.invoke(BucketParquetSink.java:347)
位于org.apache.flink.streaming.api.operators.StreamSink.processElement(StreamSink.java:38)
位于org.apache.flink.streaming.runtime.io.StreamInputProcessor.processInput(StreamInputProcessor.java:185)
位于org.apache.flink.streaming.runtime.tasks.OneInputStreamTask.run(OneInputStreamTask.java:63)
位于org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:261)
位于org.apache.flink.runtime.taskmanager.Task.run(Task.java:656)
运行(Thread.java:745)

我已经阅读了Hadoop版本,并且知道Hadoop TDE(透明数据加密)在2.6.0版之后发布。但是Flink使用Hadoop 2.3.0版进行编译。就TDE而言,这会导致任何不兼容问题吗?

例如,您可以下载使用不同Hadoop预构建的Flink,或者您可以通过将-Dhadoop.version=2.6.0传递给Maven来选择Hadoop版本来构建Flink。

谢谢mbalassi。将使用2.6.0 hadoop编译并测试它。