我使用kafka jars在scala shell上执行spark代码,我的目的是从kafka主题流式传输消息。我的spark对象已经创建,但是有人能帮助我在启动spark shell时如何传递jaas配置文件吗?我的错误指出缺少jaas配置
kmb7vmvb1#
假设你有一个 spark-kafka.jaas 当前正在运行的文件夹中的文件 spark-submit 从中,将其作为文件以及驱动程序和执行器选项传递
spark-kafka.jaas
spark-submit
spark-submit \ ... --files "spark-kafka.jaas#spark-kafka.jaas" \ --driver-java-options "-Djava.security.auth.login.config=./spark-kafka.jaas" \ --conf "spark.executor.extraJavaOptions=-Djava.security.auth.login.config=./spark-kafka.jaas"
您可能还需要设置 "security.protocol" 在spark code的kafka属性中,它是受支持的kafka属性之一 SASL 协议
"security.protocol"
SASL
1hdlvixo2#
我有一个像你一样的问题,我用这个启动脚本来运行我的spark shell,我用的是spark 2.3.0。
export HOME=/home/alessio.palma/scala_test spark2-shell \ --verbose \ --principal hdp_ud_appadmin \ --files "jaas.conf" \ --keytab $HOME/hdp_ud_app.keytab \ --master local[2] \ --packages org.apache.spark:spark-streaming-kafka-0-10_2.11:2.3.0,org.apache.kafka:kafka-clients:0.10.0.1 \ --conf spark.driver.extraJavaOptions="-Djava.security.auth.login.config=/home/alessio.palma/scala_test/jaas.conf -Djava.security.krb5.conf=/etc/krb5.conf" \ --conf spark.executor.extraJavaOptions="-Djava.security.auth.login.config=/home/alessio.palma/scala_test/jaas.conf -Djava.security.krb5.conf=/etc/krb5.conf" \ --driver-java-options spark.driver.extraJavaOptions="-Djava.security.auth.login.config=file://jaas.conf -Djava.security.krb5.conf=file:///etc/krb5.conf" \ --driver-java-options spark.executor.extraJavaOptions="-Djava.security.auth.login.config=file://jaas.conf -Djava.security.krb5.conf=file:///etc/krb5.conf" \ --queue=root.Global.UnifiedData.hdp_global_ud_app
任何尝试都失败,出现以下错误:
org.apache.kafka.common.KafkaException: Failed to construct kafka consumer : . Caused by: org.apache.kafka.common.KafkaException: org.apache.kafka.common.KafkaException: Jaas configuration not found
看起来像是 park.driver.extraJavaOptions 以及 spark.executor.extraJavaOptions 它们不起作用。在我将这一行添加到启动脚本的顶部之前,任何操作都失败了:
park.driver.extraJavaOptions
spark.executor.extraJavaOptions
export SPARK_SUBMIT_OPTS='-Djava.security.auth.login.config=/home/alessio.palma/scala_test/jaas.conf'
神奇的是jaas.conf文件被找到了。我建议在启动脚本中添加的另一项内容是:
export SPARK_KAFKA_VERSION=0.10
2条答案
按热度按时间kmb7vmvb1#
假设你有一个
spark-kafka.jaas
当前正在运行的文件夹中的文件spark-submit
从中,将其作为文件以及驱动程序和执行器选项传递您可能还需要设置
"security.protocol"
在spark code的kafka属性中,它是受支持的kafka属性之一SASL
协议1hdlvixo2#
我有一个像你一样的问题,我用这个启动脚本来运行我的spark shell,我用的是spark 2.3.0。
任何尝试都失败,出现以下错误:
看起来像是
park.driver.extraJavaOptions
以及spark.executor.extraJavaOptions
它们不起作用。在我将这一行添加到启动脚本的顶部之前,任何操作都失败了:神奇的是jaas.conf文件被找到了。我建议在启动脚本中添加的另一项内容是: