我正在尝试在cloudera VM(5.5)中查询HBase但是获得以下异常:
Error connecting HBase: org.apache.hadoop.hbase.MasterNotRunningException: com.google.protobuf.ServiceException: org.apache.hadoop.net.ConnectTimeoutException: 20000 millis timeout while waiting for channel to be ready for connect. ch : java.nio.channels.SocketChannel[connection-pending remote=quickstart.cloudera/192.168.1.117:60000]
at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation$StubMaker.makeStub(HConnectionManager.java:1592)
at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation$MasterServiceStubMaker.makeStub(HConnectionManager.java:1618)
at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.getKeepAliveMasterService(HConnectionManager.java:1826)
at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.isMasterRunning(HConnectionManager.java:848)
at org.apache.hadoop.hbase.client.HBaseAdmin.checkHBaseAvailable(HBaseAdmin.java:2359)
无法弄清楚可能是什么问题。有什么想法吗?
答案 0 :(得分:2)
您可以尝试以下方法。
方法1: 检查的简单方法是从浏览器
方法2:
如果您从java程序查询,那么在运行任何查询之前进行一般性检查可能是从您的客户端调用以下方法。
public static void checkWhetherHbaseIsRunning() throws MasterNotRunningException, ZooKeeperConnectionException {
// Create the required configuration.
Configuration conf = HBaseConfiguration.create();
// Check if Hbase is running
try{
HBaseAdmin.checkHBaseAvailable(conf);
}catch(Exception e){
System.err.println("Exception at " + e);
System.exit(1);
}
}
方法3:从沙箱它将告诉哪个端口hbase主机正在运行
ps -aef | grep hmaster
方法4: 我想你也可以从Cloudera经理那里查看,因为你使用的是CDH5.5
答案 1 :(得分:0)
您可以运行 netstat -ntpl |机器192.168.1.117上的grep 60000 确认端口已链接到进程。
运行 ps -elf | grep ** ProcessIDGotFromAbove 检查HBase master是否正在运行该进程。
如果HBase Master正在运行且端口也在监听60000,那么您可以运行Linux命令 lsof -i:60000 -r 2 然后运行查询。如果连接成功到60000,则在终端中,连接状态将从Listening更改为Established。
确保您已禁用防火墙&师父正在跑步。