在Java连接hbase时出现的问题
问题1:
java.net.ConnectException: Connection refused: no further information
- zookeeper.ClientCnxn: Session 0x0 for server null
- zookeeper未启动,或无法连接,从查看各节点zookeeper启动状态、端口占用、防火墙等方面查看原因。
问题2:
找不到zookeeper服务器,则需要在windows本地的C:\Windows\System32\drivers\etc\下的hosts文件中添加zookeeper集群的映射。
问题3:
在最初的时候,我们设计的模式是拿出每天的股票信息,以股票名作为表名,然后每天遍历爬虫爬取到的股票信息,逐一添加到各个表中,结果在我执行了代码以后,每次都是程序执行到了插入第300条股票信息,也就是在往第三个表中插入数据的时候,程序就会卡死,接下来就会一直提示信息INFO [main] client.AsyncProcess: #2, waiting for some tasks to finish. Expected max=0, tasksInProgress=35。强制结束后再次运行就会报错,后来发现在/hbase/hbase-common/src/main/resources/hbase-default.xml中有这么一条配置信息
就是说我的代码连接数过大引起的问题。当然,与此同时集群也出现了问题,hdfs文件系统中的/hbase文件夹出现了损坏,于是我删掉重新建了一个,重启服务之后集群恢复正常。之后我们重新讨论了一下,设计了一下hbase中的表的模式,我们决定将所有股票信息插入在一张表中,问题从侧面得到了解决。
问题4:
最终显示页面读取数据的时候发现传入的数据是乱码
解决:代码中涉及到的全部的编码全是utf-8,在页面输入时的数据传入java查询类中时
String str = new String(stocknum.getBytes("UTF-8"), "ISO-8859-1");