Storm 0.10.0 如何创建DRPC Remote client?

Storm 0.10.0 how to create the DRPC Remote client?

随着 Storm 0.10.0 的发布,DRPCClient 的签名被更改为包含一个 Map 参数

//conf map, drpc server, port no, timeout for the call
new DRPCClient(conf, "192.168.0.217", 3772, 5000);

conf默认有以下

Config conf = new Config();
conf.setDebug(false);

这是一个异常

java.lang.NullPointerException
java.lang.RuntimeException: java.lang.NullPointerException
at backtype.storm.security.auth.AuthUtils.GetTransportPlugin(AuthUtils.java:230)
at backtype.storm.security.auth.ThriftClient.reconnect(ThriftClient.java:91)

如果我将以下内容添加到 conf

conf.put("storm.thrift.transport", "backtype.storm.security.auth.SimpleTransportPlugin");

例外是

Don't know how to convert null to int
java.lang.IllegalArgumentException: Don't know how to convert null to int
at backtype.storm.utils.Utils.getInt(Utils.java:420)
at backtype.storm.security.auth.ThriftClient.reconnect(ThriftClient.java:100)

DRPC 的风暴启动器,即 https://github.com/nathanmarz/storm-starter/blob/master/src/jvm/storm/starter/trident/TridentReach.java 处的风暴三叉戟,仅显示本地的 DRPC 客户端。

教程站点上的文档已过时,带有新的 API 签名 http://storm.apache.org/documentation/Trident-tutorial.html 上面写着

DRPCClient client = new DRPCClient("drpc.server.location", 3772);

我知道调用涉及一些安全问题,但是我们在哪里可以找到有关如何调用它的文档。

        Config conf = new Config();
        conf.setDebug(false);
        conf.put("storm.thrift.transport", "backtype.storm.security.auth.SimpleTransportPlugin");
        conf.put(Config.STORM_NIMBUS_RETRY_TIMES, 3);
        conf.put(Config.STORM_NIMBUS_RETRY_INTERVAL, 10);
        conf.put(Config.STORM_NIMBUS_RETRY_INTERVAL_CEILING, 20);
        conf.put(Config.DRPC_MAX_BUFFER_SIZE, 1048576);

添加所有这些,它有效。

Config conf = new Config();
Map defaultConfig = Utils.readDefaultConfig();
conf.putAll(defaultConfig);