【问题标题】:Presto in Dataproc: configure a Kafka catalogDataproc 中的 Presto:配置 Kafka 目录
【发布时间】:2021-07-02 09:37:42
【问题描述】:

我正在尝试使用 Presto 作为可选组件创建一个 dataproc 集群,并且我想向其中添加一个 kafka 目录。在https://cloud.google.com/dataproc/docs/concepts/components/prestohttps://prestodb.io/docs/current/connector/kafka.html#configuration-properties 之后,我正在使用以下命令:

gcloud beta dataproc clusters create mycluster \
    --region us-central1 \
    --no-address \
    --zone us-central1-a \
    --single-node \
    --master-machine-type n1-standard-4 \
    --master-boot-disk-size 500 \
    --project myproject \
    --optional-components=PRESTO \
    --enable-component-gateway \
    --properties="presto-catalog:kafkastream.connector.name=kafka,presto-catalog:kafkastream.kafka.tables-names=topicname,presto-catalog:kafkastream.kafka.nodes=kafkavm:9092,presto-catalog:kafkastream.kafka.default-schema=default,presto-catalog:kafkastream.kafka.hide-internal-columns=false"
   

所以,基本上我想设置properties 来安装名为kafkastream 的目录,该目录连接到端口9092 上的kafka 虚拟机并创建一个表default.topicname

但是,当我尝试创建集群时,状态变为错误。在日志中我发现了与StructuredError{presto, Component presto failed to activate 相关的内容。 日志中的其他错误是

google-dataproc-startup[1129]: activate-component-presto[2447]: Query 12345 failed: Presto server is still initializing
google-dataproc-startup[1129]: activate-component-presto[2447]: 'get_node_information' attempt 6 failed! Sleeping 10s.
google-dataproc-startup[1129]: activate-component-presto[2447]: Error running command: java.net.ConnectException: Failed to connect to localhost/0:0:0:0:0:0:0:1:8060

如果我删除 properties 部分 Presto 可以完美运行。

设置kafka目录的正确方法是什么?有人可以帮助我吗?我在其他 stackoverflow 主题和在线都找不到与此问题相关的信息。

【问题讨论】:

    标签: apache-kafka presto google-cloud-dataproc


    【解决方案1】:

    可选组件 Presto 的 --properties 功能似乎有一个错误,它无法按预期工作。但是,我找到了一种通过 GCS 存储桶中的初始化脚本 init-script.sh 设置 kafka 目录的方法:

    #init-script.sh
    function add_kafka-catalog() {
      cat > /etc/presto/conf/catalog/kafka.properties <<EOF
    connector.name=kafka
    kafka.nodes=my-vm:9092
    kafka.table-names=my-topic
    kafka.hide-internal-columns=false
    EOF
    }
    
    # Restart presto to read new catalogs
    function restart_presto() {
        sudo /usr/lib/presto/bin/launcher restart
    }
    
    function main() {
    add_kafka-catalog
    restart_presto
    }
    main
    

    并通过

    启动集群
    gcloud beta dataproc clusters create mycluster \
        --region us-central1 \
        --no-address \
        --zone us-central1-a \
        --single-node \
        --master-machine-type n1-standard-4 \
        --master-boot-disk-size 500 \
        --project myproject \
        --optional-components=PRESTO \
        --enable-component-gateway
        --initialization-actions 'gs://mybucket/init-script.sh
    

    【讨论】:

      【解决方案2】:

      属性名称kafka.tables-names有错别字:

      $ cat /var/log/presto/server.log | grep Exception -A 10
      
      ...
      1) Error: Configuration property 'kafka.tables-names' was not used
      
      1 error
          at io.airlift.bootstrap.Bootstrap.initialize(Bootstrap.java:238)
          at io.prestosql.plugin.kafka.KafkaConnectorFactory.create(KafkaConnectorFactory.java:73)
          at io.prestosql.connector.ConnectorManager.createConnector(ConnectorManager.java:349)
          at io.prestosql.connector.ConnectorManager.createCatalog(ConnectorManager.java:208)
          at io.prestosql.connector.ConnectorManager.createCatalog(ConnectorManager.java:200)
          at io.prestosql.connector.ConnectorManager.createCatalog(ConnectorManager.java:186)
      

      应该是kafka.table-namestable 之后没有s)。您在 init 操作中正确执行了此操作,但在 --properties 标志中执行了错误。

      【讨论】:

      • 非常感谢我没注意到
      猜你喜欢
      • 2013-12-01
      • 2019-12-31
      • 1970-01-01
      • 2018-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-19
      • 1970-01-01
      相关资源
      最近更新 更多