文化工业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 {
ListTablesRespon tablesList = kc.getTablesList();
运动协调能力TablesList().forEach(System.out::println);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (kc != null) {
try {
小程序教程kc.shutdown();
} catch (KuduException e) {
e.printStackTrace();
}
}
电的标志>机要工作
}
}
控制台出现这个异常:中间省略了许多.....
....................
Caud 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
Caud 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⽂件找这个主机名,但是本机没有配置,所以会失败,直到超时。
服务器在安装kudu时,如果做修改通过8051访问的话会看到master 显⽰
rpc_address { host: "localhost" port: 7051 }(我是在服务器上测试使⽤,装的单trver单master)
这个rpc_address 的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-trver这时候会看到master变成了
rpc_address { host: "mykudu" port: 7051 } 。然后在你的客户端主机的host上⾯配置上mukudu 主机对应的ip 不是172.31.203.226 这个ip ⽽是对外暴露的ip。