Flink:如何在TaskManager中设置系统属性?

时间:2019-04-10 08:05:04

标签: apache-flink flink-streaming

我有一些来自kafka的代码读取消息,如下所示:

def main(args: Array[String]): Unit = {
    System.setProperty("java.security.auth.login.config", "someValue")
    val env = StreamExecutionEnvironment.getExecutionEnvironment

    val consumerProperties = new Properties()
    consumerProperties.setProperty("security.protocol", "SASL_PLAINTEXT")
    consumerProperties.setProperty("sasl.mechanism", "PLAIN")
    val kafkaConsumer = new FlinkKafkaConsumer011[ObjectNode](consumerProperties.getProperty("topic"), new JsonNodeDeserializationSchema, consumerProperties)

    val stream = env.addSource(kafkaConsumer)
}

当源尝试从Apache Kafka读取消息时,org.apache.kafka.common.security.JaasContext.defaultContext函数将加载“ java.security.auth.login.config”属性。

但是该属性仅在JobManager中设置,并且当我的作业开始运行时,该属性无法在TaskManager中正确加载,因此源将失败。

我尝试设置额外的JVM_OPTS,例如“ -Dxxx = yyy”,但是flink集群以独立模式部署,环境变量不能经常更改。

是否可以在TaskManager中设置属性?

1 个答案:

答案 0 :(得分:0)

Flink独立群集的文件bin/config.sh拥有一个名为DEFAULT_ENV_JAVA_OPTS的属性。

此外,如果您export $JVM_ARGS="your parameters"文件bin/config.sh将使用以下几行加载该文件:

# Arguments for the JVM. Used for job and task manager JVMs.
# DO NOT USE FOR MEMORY SETTINGS! Use conf/flink-conf.yaml with keys
# KEY_JOBM_MEM_SIZE and KEY_TASKM_MEM_SIZE for that!
if [ -z "${JVM_ARGS}" ]; then
    JVM_ARGS=""
fi