Итак, во-первых, я хочу сказать, что единственное, что я видел, касается этой проблемы: Spark 1.6.1 SASL. Однако при добавлении конфигурации для проверки искры и пряжи она все еще не работает. Ниже моя конфигурация для искры с помощью искры подати на кластере пряжи на ОЙ Амазонке:Spark SASL не работает на emr с пряжей
SparkConf sparkConf = new SparkConf().setAppName("secure-test");
sparkConf.set("spark.authenticate.enableSaslEncryption", "true");
sparkConf.set("spark.network.sasl.serverAlwaysEncrypt", "true");
sparkConf.set("spark.authenticate", "true");
sparkConf.set("spark.serializer", "org.apache.spark.serializer.KryoSerializer");
sparkConf.set("spark.kryo.registrator", "org.nd4j.Nd4jRegistrator");
try {
sparkConf.registerKryoClasses(new Class<?>[]{
Class.forName("org.apache.hadoop.io.LongWritable"),
Class.forName("org.apache.hadoop.io.Text")
});
} catch (Exception e) {}
sparkContext = new JavaSparkContext(sparkConf);
sparkContext.hadoopConfiguration().set("fs.s3a.impl", "org.apache.hadoop.fs.s3a.S3AFileSystem");
sparkContext.hadoopConfiguration().set("fs.s3a.enableServerSideEncryption", "true");
sparkContext.hadoopConfiguration().set("spark.authenticate", "true");
Обратите внимание, что я добавил spark.authenticate к конфигурации Hadoop в sparkContext в коде вместо колонкового site.xml (который Я предполагаю, что смогу это сделать, потому что другие вещи тоже работают).
Означает здесь: https://github.com/apache/spark/blob/master/common/network-yarn/src/main/java/org/apache/spark/network/yarn/YarnShuffleService.java Кажется, что оба искры.authenticate's необходимы. Когда я запускаю это приложение, я получаю следующую трассировку стека.
17/01/03 22:10:23 INFO storage.BlockManager: Регистрация исполнителя с локальным внешним сервисом тасования. 17/01/03 22:10:23 ERROR client.TransportClientFactory: исключение при загрузке клиента после 178 мс java.lang.RuntimeException: java.lang.IllegalArgumentException: Неизвестный тип сообщения: -22 at org.apache.spark. network.shuffle.protocol.BlockTransferMessage $ Decoder.fromByteBuffer (BlockTransferMessage.java:67) at org.apache.spark.network.shuffle.ExternalShuffleBlockHandler.receive (ExternalShuffleBlockHandler.java:71) at org.apache.spark.network. server.TransportRequestHandler.processRpcRequest (TransportRequestHandler.java:149) на org.apache.spark.network.server.TransportRequestHandler.handle (TransportRequestHandler.java:102) в org.apache.spark.network.server.TransportChannelHandler.channelRead0 (TransportChannelHandler.java:104) на org.apache.spark.network.server.TransportChannelHandler.channelRead0 (TransportChannelHandler.java:51) в io.netty.channel.SimpleChannelInboundHandler.channelRead (SimpleChannelInboundHandler.java:105) в io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead (AbstractChannelHandlerContext.java:333) на io.netty.channel.AbstractChannelHandlerContext.fireChannelRead (AbstractChannelHandlerContext.java:319) на io.netty.handler.timeout.IdleStateHandler.channelRead (IdleStateHandler.java:254) в io.netty .channel.AbstractChannelHandlerContext.invokeChannelRead (AbstractChannelHandlerContext.java:333) на io.netty.channel.AbstractChannelHandlerContext.fireChannelRead (AbstractChannelHandlerContext.java:319) в io.netty.handler.codec.MessageToMessageDecoder.ch annelRead (MessageToMessageDecoder.java:103) на io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead (AbstractChannelHandlerContext.java:333) на io.netty.channel.AbstractChannelHandlerContext.fireChannelRead (AbstractChannelHandlerContext.java:319) на org.apache. spark.network.util.TransportFrameDecoder.channelRead (TransportFrameDecoder.java:86) на io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead (AbstractChannelHandlerContext.java:333) на io.netty.channel.AbstractChannelHandlerContext.fireChannelRead (AbstractChannelHandlerContext.java: 319) на io.netty.channel.DefaultChannelPipeline.fireChannelRead (DefaultChannelPipeline.java:787) на io.netty.channel.nio.AbstractNioByteChannel $ NioByteUnsafe.read (AbstractNioByteChannel.java:130)на io.netty.channel.nio.NioEventLoop.processSelectedKey (NioEventLoop.java:511) в io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized (NioEventLoop.java:468) в io.netty.channel.nio. NioEventLoop.processSelectedKeys (NioEventLoop.java:382) на io.netty.channel.nio.NioEventLoop.run (NioEventLoop.java:354) на io.netty.util.concurrent.SingleThreadEventExecutor $ 2.run (SingleThreadEventExecutor.Java: 116) на java.lang.Thread.run (Thread.java:745)
В Документах искру, он говорит
For Spark on YARN deployments, configuring spark.authenticate to true will automatically handle generating and distributing the shared secret. Each application will use a unique shared secret.
, который кажется неправильным на основе комментариев в файле пряжи выше, но с проблемой стрельбы, я все еще теряюсь на том, куда я должен пойти, чтобы заставить салз работать? Я пропустил что-то очевидное, что где-то задокументировано?