首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >魔术头球没有出现

魔术头球没有出现
EN

Stack Overflow用户
提问于 2018-12-31 20:50:35
回答 1查看 557关注 0票数 2

我正在尝试使用这个例子将Nifi连接到Flink:

代码语言:javascript
复制
    StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();

    SiteToSiteClientConfig clientConfig = new SiteToSiteClient.Builder()
            .url("http://localhost:8090/nifi")
            .portName("Data for Flink")
            .requestBatchCount(5)
            .buildConfig();

    SourceFunction<NiFiDataPacket> nifiSource = new NiFiSource(clientConfig);
    DataStream<NiFiDataPacket> streamSource = env.addSource(nifiSource).setParallelism(2);

    DataStream<String> dataStream = streamSource.map(new MapFunction<NiFiDataPacket, String>() {
        @Override
        public String map(NiFiDataPacket value) throws Exception {
            return new String(value.getContent(), Charset.defaultCharset());
        }
    });

    dataStream.print();
    env.execute();

我将Nifi作为具有默认属性的独立服务器运行,但以下属性除外:

代码语言:javascript
复制
nifi.remote.input.host=localhost
nifi.remote.input.secure=false
nifi.remote.input.socket.port=8090
nifi.remote.input.http.enabled=true

每次调用都失败,在Nifi中有以下日志:

代码语言:javascript
复制
[Site-to-Site Worker Thread-24] o.a.nifi.remote.SocketRemoteSiteListener 
Unable to communicate with remote instance null due to
org.apache.nifi.remote.exception.HandshakeException: Handshake 
with nifi://localhost:61680 failed because the Magic Header 
was not present; closing connection

Nifi版本: 1.7.1,Flink版本: 1.7.1

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-01 15:07:11

在使用nifi-toolkit之后,我删除了nifi.remote.input.socket.port的自定义值,然后将transportProtocol(SiteToSiteTransportProtocol.HTTP)作为URL添加到我的SiteToSiteClientConfighttp://localhost:8080/nifi中。

首先,我更改端口的原因是,如果不指定协议HTTP,默认情况下它将使用RAW。当从Flink端使用RAW协议时,客户端无法创建Transaction并打印以下警告:

代码语言:javascript
复制
Unable to refresh Remote Group's peers due to Remote instance of NiFi 
is not configured to allow RAW Socket site-to-site communications

这就是为什么我认为这是港口问题

因此,现在使用Nifi的默认配置,它可以像预期的那样工作:

代码语言:javascript
复制
SiteToSiteClientConfig clientConfig = new SiteToSiteClient.Builder()
            .url("http://localhost:8080/nifi")
            .portName("portNameAsInNifi")
            .transportProtocol(SiteToSiteTransportProtocol.HTTP)
            .requestBatchCount(1)
            .buildConfig();
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53991316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档