[HADOOP] 안전한 YARN Hadoop 클러스터로 스파크 지원 보안
HADOOP안전한 YARN Hadoop 클러스터로 스파크 지원 보안
Kerberos로 구성된 Hadoop 3.0 클러스터가 있습니다. 모든 것이 잘 작동하고 YARN도 시작됩니다.
이제 Spark를 추가하고 Hadoop과 보안을 최대한 활용하고 싶습니다. 이를 위해 Spark 2.3의 이진 배포를 사용하고 다음을 수정했습니다.
spark-env.sh에서 :
YARN_CONF_DIR, 내 Hadoop 구성 파일 core-site.xml, hdfs-site.xml 및 yarn-site.xml이있는 폴더로 설정하십시오.
spark-defaults.conf에서 :
spark.master yarn
spark.submit.deployMode cluster
spark.authenticate true
spark.yarn.principal mysparkprincipal
spark.yarn.keytab mykeytabfile
YARN을 사용할 때 올바르게 이해하면 비밀 키가 자동으로 생성되므로 spark.authenticate.secret을 수동으로 설정할 필요가 없습니다.
내가 가진 문제는 근로자가 키에 대해 불평하고 있다는 것입니다.
java.lang.IllegalArgumentException: A secret key must be specified via the spark.authenticate.secret config
또한 Spark에서 YARN을 사용하고 있거나 hdfs 볼륨으로 무언가를 시도하고 있음을 로그에 표시하지 않습니다. Hadoop 구성 파일이 완전히 무시되는 것과 거의 같습니다. YARN에 대한 문서와 Spark 보안에 대한 문서를 읽었지만 명확하지 않습니다.
내 질문은 :
편집 / 추가 :
소스 코드를 살펴본 후 SASL에서 예외가 발생했는데 Spark에서 사용할 수 없으므로 이해할 수 없습니다.
내 하둡에서 SSL을 사용하도록 설정하고 (데이터 기밀성) Spark에 서버 구성을 제공하므로 하둡 구성에서 사용하도록 설정 한 경우 Spark에 SSL이 필요할 수 있습니다.
지금까지 나는 모든 것에 대해 정말로 혼란스러워했다.
예외는 다음과 같습니다.
java.lang.IllegalArgumentException: A secret key must be specified via the spark.authenticate.secret config
at org.apache.spark.SecurityManager$$anonfun$getSecretKey$4.apply(SecurityManager.scala:510)
at org.apache.spark.SecurityManager$$anonfun$getSecretKey$4.apply(SecurityManager.scala:510)
at scala.Option.getOrElse(Option.scala:121)
at org.apache.spark.SecurityManager.getSecretKey(SecurityManager.scala:509)
at org.apache.spark.SecurityManager.getSecretKey(SecurityManager.scala:551)
at org.apache.spark.network.sasl.SparkSaslClient$ClientCallbackHandler.handle(SparkSaslClient.java:137)
at com.sun.security.sasl.digest.DigestMD5Client.processChallenge(DigestMD5Client.java:337)
at com.sun.security.sasl.digest.DigestMD5Client.evaluateChallenge(DigestMD5Client.java:220)
at org.apache.spark.network.sasl.SparkSaslClient.response(SparkSaslClient.java:98)
at org.apache.spark.network.sasl.SaslClientBootstrap.doBootstrap(SaslClientBootstrap.java:71)
at org.apache.spark.network.crypto.AuthClientBootstrap.doSaslAuth(AuthClientBootstrap.java:115)
at org.apache.spark.network.crypto.AuthClientBootstrap.doBootstrap(AuthClientBootstrap.java:74)
at org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:257)
at org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:187)
at org.apache.spark.rpc.netty.NettyRpcEnv.createClient(NettyRpcEnv.scala:198)
at org.apache.spark.rpc.netty.Outbox$$anon$1.call(Outbox.scala:194)
at org.apache.spark.rpc.netty.Outbox$$anon$1.call(Outbox.scala:190)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
해결법
from https://stackoverflow.com/questions/50042083/spark-enable-security-with-secure-yarn-hadoop-cluster by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] Java 클라이언트를 통해 Hadoop 작업 정보를 가져올 수 없습니다 (0) | 2019.09.06 |
---|---|
[HADOOP] map reduce에서 최적 키를 선택하는 방법은 무엇입니까? (0) | 2019.09.06 |
[HADOOP] Hive를 사용하여 HDFS에서 파일 크기를 확인하는 방법 (0) | 2019.09.06 |
[HADOOP] Amazon EMR에서 HDFS를 다시 시작하는 방법 (0) | 2019.09.06 |
[HADOOP] 설정시 네임 노드가 하둡에서 작동하지 않는 이유 (0) | 2019.09.06 |