kuduclient连接不到kudu服务器
⽤spark读取kudu过程中出现了问题,⾸先我想先连接kudu服务器,然后再添加⼀张表,然后插⼊数据。,但是执⾏下⾯的代码:
public static List<String> KUDU_MASTER = wArrayList("172.16.1.17:7051", "172.16.1.16:7051", "172.16.1.18:7051");
中秋节贺卡祝福语简短>就是爱你歌词public static void main(String[] args) {
KuduClient kc = new
KuduClient.KuduClientBuilder(KUDU_MASTER).defaultAdminOperationTimeoutMs(60000).defaultSocketReadTimeoutMs(60000). defaultOperationTimeoutMs(60000).build();
try {
ListTablesResponse tablesList = kc.getTablesList();
关于父爱的文案短句
} catch (Exception e) {
e.printStackTrace();
} finally {
if (kc != null) {
try {
kc.shutdown();
} catch (KuduException e) {
e.printStackTrace();
}
}
七夕情人}
}
控制台出现这个异常:中间省略了许多.....
....................
Caused by: org.apache.kudu.client.NoLeaderFoundException: Master config
(172.16.1.17:7051,172.16.1.16:7051,172.16.1.18:7051) has no leader. Exceptions received:
(172.16.1.17:7051,172.16.1.16:7051,172.16.1.18:7051) has no leader
org.apache.kudu.client.RecoverableException: connection disconnected,org.apache.kudu.client.RecoverableException:
connection disconnected,org.apache.kudu.client.RecoverableException: connection disconnected
at org.apache.kudu.client.ConnectToCluster.incrementCountAndCheckExhausted(ConnectToCluster.java:272)
... 50 more
Caused by: org.apache.kudu.client.RecoverableException: connection disconnected
... 33 more
粗体部分是重点,客户端不到master的leader
在⽹上搜了⼀⼤堆:设置完如下的配置,也不起作⽤。
--rpc_encryption=disabled
--rpc_authentication=disabled
--trusted_subnets=0.0.0.0/0
最后发现是因为kudu客户端连接kudu服务器时,服务器返回master的主机名,告诉客户端谁是master,然后通信,但是主机名不是主机的ip,所以客户端会在本地hosts⽂件这个主机名,但是本机没有配置,所以会失败,直到超时。
丁俊晖 147服务器在安装kudu时,如果做修改通过8051访问的话会看到master 显⽰
rpc_addresses { host: "localhost" port: 7051 }(我是在服务器上测试使⽤,装的单tserver单master)
这个rpc_addresses 的localhost会返回给你的客户端,然后你的客户端⽤这个,在本地的hosts⽂件中查,本地的localhost就是本机,然后上⾯没有kudu 服务,所以就会⼀直到超时。
在服务器上⽤ifconfig查inet addr:172.31.203.226 这个是⽹卡的ip把这个ip加到/etc/hosts中 ⽐如 172.31.203.226 mykudu. 然后再127.0.0.1 对应的localhost后⾯也加上mykuku , 127.0.0.1 localhost mykudu。
早安九月然后重启kudu 服务,kudu-master 和kudu-tserver这时候会看到master变成了
rpc_addresses { host: "mykudu" port: 7051 } 。然后在你的客户端主机的host上⾯配置上mukudu 主机对应的ip 不是172.31.203.226 这个ip ⽽是对外暴露的ip。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论