和各位请教关于使用JavaAPI访问HBase很慢的问题

SunShine_Mike 2017-10-26 05:25:44
入门Hadoop-2.x后,可能有HBase需求,所以预先进行了HBase的搭建和使用测试,在测试过程中(Windows Eclipse开发环境下使用JavaAPI访问HBase)发现了一个问题:访问HBase很慢,需要20s左右!具体请看以下说明。【虽说HBase并非能实现实时性很严格的读取,但是其还是具有一定程度的实时读取性能的】


0、Hadoop-2.x测试环境:
0.1)版本: Hadoop-2.7.4 、 HBase-1.2.6 、 zookeeper-3.4.10 (服务器操作系统为 CentOS 6.5 x64)
0.2)搭建模式:完全分布式搭建(由3个节点组成:master 【NameNode、ResourceManager、Hmaster】、slave1【DataNode】 、slave2【DataNode】)
0.3 ) 各节点上的进程服务启动状态:
master:


slave1:


slave2:


0.4)用本地HBase Shell展示将要用JavaAPI访问的表“table1”内容:



1、Windows Eclipse 的Java程序相关代码:
项目目录:


测试类(主程序入口):


访问HBase的工具类HBaseDao:
初始化HBase连接:


HBase表查询:



2、程序运行(控制台输出):


所有的HBase操作都需要至少等待以上划线处的2个“9s”,在网上也有人和我一样需要等待2个9s,但是目前未能找出导致2个9s的问题在哪?以及如何解决?望闻CSDN大神多,还请多多指教,不胜感激啊!!



...全文
2048 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
灬大眼睛ˇ 2019-09-07
  • 打赏
  • 举报
回复
你还,我也是每次连接需要二十秒,别人第二次都是反应很快,我的第二次依旧需要二十秒,问一下你的问题是怎么解决的
SunShine_Mike 2017-12-17
  • 打赏
  • 举报
回复
引用 3 楼 Dante_003 的回复:
你把hadoop的配置去掉,那个hadoop.home.dir的东西。 hbase java api访问hbase不需要其它任何东西,只需要那个jar和jdk就可以。 你先这样试下。
试过了。连接速度慢和这个应该关系不大,这个Hadoop配置只是为了解决Windows下Hadoop工具的使用路径缺失ERROR。 起初运行访问HBase程序时,报了上述的Hadoop工具的使用路径缺失ERROR和一个Hadoop本地库不兼容的WARNING,但并不影响HBase的访问; 仍然是 20秒连接HBase 加 毫秒级或秒级的数据检索。 最后,暂时通过 “将 客户端访问程序的平台 换为Linux“ ,连接速度就变得很快了。 HBase基于Hadoop平台,而Apache官网上编译好的Hadoop BIN包默认的支持 x86 32位 的Linux,所以直接搬到Windows平台下使用的话会出现很多兼容性问题; 因此若要在Windows平台下开发Hadoop程序,最好就是到Apache官网上下载Hadoop源码包,然后编译对应Windows平台的Hadoop,来开发Hadoop程序。
SunShine_Mike 2017-12-17
  • 打赏
  • 举报
回复
引用 2 楼 vtopqx 的回复:
有没有试过单机的Hbase访问,用java访问
因为实际生产环境,本身就不用单机版的,所以就没打算测试单机版的。 实际上这个问题是:客户端访问程序 连接 远程HBase数据库的时间耗费过大。 最后,暂时通过 “将 客户端访问程序的平台 换为Linux“ ,连接速度就变得很快了。 HBase基于Hadoop平台,而Apache官网上编译好的Hadoop BIN包默认的支持 x86 32位 的Linux,所以直接搬到Windows平台下使用的话会出现很多兼容性问题; 因此若要在Windows平台下开发Hadoop程序,最好就是到Apache官网上下载Hadoop源码包,然后编译对应Windows平台的Hadoop,来开发Hadoop程序。
码太狼 2017-11-10
  • 打赏
  • 举报
回复
你把hadoop的配置去掉,那个hadoop.home.dir的东西。 hbase java api访问hbase不需要其它任何东西,只需要那个jar和jdk就可以。 你先这样试下。
  • 打赏
  • 举报
回复
有没有试过单机的Hbase访问,用java访问
SunShine_Mike 2017-10-26
  • 打赏
  • 举报
回复
补充HBase配置文件: “hbase-env.sh” # export JAVA_HOME=/usr/java/jdk1.6.0/ export JAVA_HOME=/home/hadoop/jdk1.8.0_151 # Extra Java CLASSPATH elements. Optional. export HBASE_CLASSPATH=/home/hadoop/hadoop-2.7.4/etc/hadoop/ # Tell HBase whether it should manage it's own instance of Zookeeper or not. export HBASE_MANAGES_ZK=false “ hbase-site.sh” <configuration> <property> <name>hbase.rootdir</name> <value>hdfs://master.hadoop:9000/hbase</value> </property> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <property> <name>hbase.zookeeper.quorum</name> <value>master:21810,slave1:21810,slave2:21810</value> </property> <property> <name>hbase.zookeeper.property.clientPort</name> <value>21810</value> </property> </configuration>

20,848

社区成员

发帖
与我相关
我的任务
社区描述
Hadoop生态大数据交流社区,致力于有Hadoop,hive,Spark,Hbase,Flink,ClickHouse,Kafka,数据仓库,大数据集群运维技术分享和交流等。致力于收集优质的博客
社区管理员
  • 分布式计算/Hadoop社区
  • 涤生大数据
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧