jjzjj

java - HBase Java Api 卡在 put()

coder 2024-01-08 原文

我一直在连接到我的 HBase 并使用我的 Java 应用程序正常执行命令。但是最近,一旦我以这种方式得到一张 table :

Table table = hbconnection.getTable(TableName.valueOf(DOC_TABLE_NAME));

然后它会卡在这样的命令上:

table.put(myput);

我没有得到异常。应用程序不会终止。它只是卡在那里...

当我在 CLI 中查看 Hbase 输出时,我注意到了这一部分:

2015-10-20 15:01:53,207 INFO  [ProcessThread(sid:0 cport:-1):] server.PrepRequestProcessor: Got user-level KeeperException when processing sessionid:0x150855715570000 type:create cxid:0xd57 zxid:0x62e txntype:-1 reqpath:n/a Error Path:/hbase/namespace/hbase Error:KeeperErrorCode = NodeExists for /hbase/namespace/hbase
2015-10-20 15:01:53,217 INFO  [Greg:52905.activeMasterManager] master.HMaster: Master has completed initialization

2015-10-20 15:01:53,220 INFO  [greg:52905.activeMasterManager] quotas.MasterQuotaManager: Quota support disabled
2015-10-20 15:02:10,001 INFO  [SessionTracker] server.ZooKeeperServer: Expiring session 0x1508540d00a0009, timeout of 40000ms exceeded
2015-10-20 15:02:10,002 INFO  [SessionTracker] server.ZooKeeperServer: Expiring session 0x1508540d00a0008, timeout of 40000ms exceeded
2015-10-20 15:02:10,005 INFO  [ProcessThread(sid:0 cport:-1):] server.PrepRequestProcessor: Processed session termination for sessionid: 0x1508540d00a0009
2015-10-20 15:02:10,007 INFO  [ProcessThread(sid:0 cport:-1):] server.PrepRequestProcessor: Processed session termination for sessionid: 0x1508540d00a0008
2015-10-20 15:06:48,610 INFO  [LruBlockCacheStatsExecutor] hfile.LruBlockCache: totalSize=1.67 MB, freeSize=1.58 GB, max=1.58 GB, blockCount=4, accesses=17, hits=13, hitRatio=76.47%, , cachingAccesses=17, cachingHits=13, cachingHitsRatio=76.47%, evictions=29, evicted=0, evictedPerRun=0.0
2015-10-20 15:06:58,791 INFO  [greg,52936,1445346099888_ChoreService_1] regionserver.HRegionServer: greg,52936,1445346099888-MemstoreFlusherChore requesting flush for region hbase:meta,,1.1588230740 after a delay of 20679
2015-10-20 15:07:08,790 INFO  [greg,52936,1445346099888_ChoreService_1] regionserver.HRegionServer: greg,52936,1445346099888-MemstoreFlusherChore requesting flush for region hbase:meta,,1.1588230740 after a delay of 6649
2015-10-20 15:07:18,790 INFO  [greg,52936,1445346099888_ChoreService_1] regionserver.HRegionServer: greg,52936,1445346099888-MemstoreFlusherChore requesting flush for region hbase:meta,,1.1588230740 after a delay of 18558
2015-10-20 15:07:19,481 INFO  [MemStoreFlusher.0] regionserver.HRegion: Started memstore flush for hbase:meta,,1.1588230740, current region memstore size 2.79 KB, and 1/1 column families' memstores are being flushed.
2015-10-20 15:07:19,643 INFO  [MemStoreFlusher.0] regionserver.DefaultStoreFlusher: Flushed, sequenceid=332, memsize=2.8 K, hasBloomFilter=false, into tmp file file:/C:/Users/greg/AppData/Local/Temp/hbase-greg/hbase/data/hbase/meta/1588230740/.tmp/edcebd7b3e8841de931094a5f97f7d1b
2015-10-20 15:07:19,702 INFO  [MemStoreFlusher.0] regionserver.HStore: Added file:/C:/Users/greg/AppData/Local/Temp/hbase-greg/hbase/data/hbase/meta/1588230740/info/edcebd7b3e8841de931094a5f97f7d1b, entries=12, sequenceid=332, filesize=6.0 K
2015-10-20 15:07:19,705 INFO  [MemStoreFlusher.0] regionserver.HRegion: Finished memstore flush of ~2.79 KB/2856, currentsize=0 B/0 for region hbase:meta,,1.1588230740 in 224ms, sequenceid=332, compaction requested=false
2015-10-20 15:11:48,609 INFO  [LruBlockCacheStatsExecutor] hfile.LruBlockCache: totalSize=1.67 MB, freeSize=1.58 GB, max=1.58 GB, blockCount=4, accesses=19, hits=15, hitRatio=78.95%, , cachingAccesses=19, cachingHits=15, cachingHitsRatio=78.95%, evictions=59, evicted=0, evictedPerRun=0.0

我在 Windows 和 JDK 1.8 上运行。 我的 hbase-site 配置是空的。 我的应用程序的类路径如下:

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" path="src"/>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
    <classpathentry kind="lib" path="C:/Users/Greg/Documents/Tools/hbase-1.1.2-bin/lib/commons-configuration-1.6.jar"/>
    <classpathentry kind="lib" path="C:/Users/Greg/Documents/Tools/hbase-1.1.2-bin/lib/commons-lang-2.6.jar"/>
    <classpathentry kind="lib" path="C:/Users/Greg/Documents/Tools/hbase-1.1.2-bin/lib/commons-logging-1.2.jar"/>
    <classpathentry kind="lib" path="C:/Users/Greg/Documents/Tools/hbase-1.1.2-bin/lib/log4j-1.2.17.jar"/>
    <classpathentry kind="lib" path="C:/Users/Greg/Documents/Tools/hbase-1.1.2-bin/lib/protobuf-java-2.5.0.jar"/>
    <classpathentry kind="lib" path="C:/Users/Greg/Documents/Tools/hbase-1.1.2-bin/lib/slf4j-api-1.7.7.jar"/>
    <classpathentry kind="lib" path="C:/Users/Greg/Documents/Tools/hbase-1.1.2-bin/lib/slf4j-log4j12-1.7.5.jar"/>
    <classpathentry kind="lib" path="C:/Users/Greg/Documents/Tools/hbase-1.1.2-bin/lib/zookeeper-3.4.6.jar"/>
    <classpathentry kind="lib" path="C:/Users/Greg/Documents/Tools/hbase-1.1.2-bin/lib/hadoop-client-2.5.1.jar"/>
    <classpathentry kind="lib" path="C:/Users/Greg/Documents/Tools/hbase-1.1.2-bin/lib/hadoop-common-2.5.1.jar"/>
    <classpathentry kind="lib" path="C:/Users/Greg/Documents/Tools/hbase-1.1.2-bin/lib/hbase-client-1.1.2.jar"/>
    <classpathentry kind="lib" path="C:/Users/Greg/Documents/Tools/hbase-1.1.2-bin/lib/hbase-common-1.1.2.jar"/>
    <classpathentry kind="lib" path="C:/Users/Greg/Documents/Tools/hbase-1.1.2-bin/lib/guava-12.0.1.jar"/>
    <classpathentry kind="lib" path="C:/Users/Greg/Documents/Tools/hbase-1.1.2-bin/lib/commons-collections-3.2.1.jar"/>
    <classpathentry kind="lib" path="C:/Users/Greg/Documents/Tools/hbase-1.1.2-bin/lib/hadoop-hdfs-2.5.1.jar"/>
    <classpathentry kind="lib" path="C:/Users/Greg/Documents/Tools/hbase-1.1.2-bin/lib/hadoop-auth-2.5.1.jar"/>
    <classpathentry kind="lib" path="C:/Users/Greg/Documents/Tools/hbase-1.1.2-bin/lib/hbase-annotations-1.1.2.jar"/>
    <classpathentry kind="lib" path="C:/Users/Greg/Documents/Tools/hbase-1.1.2-bin/lib/hbase-protocol-1.1.2.jar"/>
    <classpathentry kind="lib" path="C:/Users/Greg/Documents/Tools/hbase-1.1.2-bin/lib/htrace-core-3.1.0-incubating.jar"/>
    <classpathentry kind="lib" path="C:/Users/Greg/Documents/Tools/hbase-1.1.2-bin/lib/commons-io-2.4.jar"/>
    <classpathentry kind="lib" path="C:/Users/Greg/Documents/Tools/hbase-1.1.2-bin/lib/netty-all-4.0.23.Final.jar"/>
    <classpathentry kind="lib" path="C:/Users/Greg/Documents/Tools/hbase-1.1.2-bin/lib/commons-codec-1.9.jar"/>
    <classpathentry kind="lib" path="C:/Users/Greg/Documents/Tools/tika-core-1.5.jar"/>
    <classpathentry kind="lib" path="C:/Users/Greg/Documents/Tools/tika-parsers-1.5.jar"/>
    <classpathentry kind="lib" path="C:/Users/Greg/Documents/Tools/pdfbox-app-1.8.10.jar"/>
    <classpathentry kind="output" path="bin"/>
</classpath>

我该如何解决这个问题并让 HBase 再次响应? 感谢您的帮助。


编辑

我尝试删除 C:\Users\greg\AppData\Local\Temp 中的 tmp 数据 以及我项目中的 datazookeeper 文件夹,现在 Hbase 甚至没有启动。

2015-10-20 15:51:27,022 INFO  [RS:0;greg:54045-SendThread(127.0.0.1:2181)] zookeeper.ClientCnxn: Opening socket connection to server 127.0.0.1/127.0.0.1:2181. Will not attempt to authenticate using SASL (unknown error)
2015-10-20 15:51:27,213 INFO  [main-SendThread(127.0.0.1:2181)] zookeeper.ClientCnxn: Opening socket connection to server 127.0.0.1/127.0.0.1:2181. Will not attempt to authenticate using SASL (unknown error)
2015-10-20 15:51:28,026 WARN  [RS:0;greg:54045-SendThread(127.0.0.1:2181)] zookeeper.ClientCnxn: Session 0x150858481600003 for server null, unexpected error, closing socket connection and attempting reconnect
java.net.ConnectException: Connection refused: no further information
        at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
        at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717)
        at org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:361)
        at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1081)
2015-10-20 15:51:28,217 WARN  [main-SendThread(127.0.0.1:2181)] zookeeper.ClientCnxn: Session 0x150858481600001 for server null, unexpected error, closing socket connection and attempting reconnect
java.net.ConnectException: Connection refused: no further information
        at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
        at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717)
        at org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:361)

最佳答案

您的 session 似乎以不一致的状态结束,在 ZooKeeper 中留下了一些元数据(这是您遇到的第一个错误),也许您可​​以通过使用 ZooKeeper client 自己清理 ZooKeeper 来解决该错误并清理那里的 HBase 条目并重新启动 HBase。

但是现在您甚至无法启动 HBase,我建议 download并在同一地址 (127.0.0.1:2181) 启动您自己的 ZooKeeper 服务器,然后尝试再次启动 HBase。如果可行,则意味着您需要研究正确修复 HBase ZooKeeper 连接。我对 HBase 不是很熟悉但是 this可能是一个很好的起点。

关于java - HBase Java Api 卡在 put(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33237840/

有关java - HBase Java Api 卡在 put()的更多相关文章

  1. java - 等价于 Java 中的 Ruby Hash - 2

    我真的很习惯使用Ruby编写以下代码:my_hash={}my_hash['test']=1Java中对应的数据结构是什么? 最佳答案 HashMapmap=newHashMap();map.put("test",1);我假设? 关于java-等价于Java中的RubyHash,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/22737685/

  2. java - 从 JRuby 调用 Java 类的问题 - 2

    我正在尝试使用boilerpipe来自JRuby。我看过guide从JRuby调用Java,并成功地将它与另一个Java包一起使用,但无法弄清楚为什么同样的东西不能用于boilerpipe。我正在尝试基本上从JRuby中执行与此Java等效的操作:URLurl=newURL("http://www.example.com/some-location/index.html");Stringtext=ArticleExtractor.INSTANCE.getText(url);在JRuby中试过这个:require'java'url=java.net.URL.new("http://www

  3. ruby-on-rails - Rails 3,嵌套资源,没有路由匹配 [PUT] - 2

    我真的为这个而疯狂。我一直在搜索答案并尝试我找到的所有内容,包括相关问题和stackoverflow上的答案,但仍然无法正常工作。我正在使用嵌套资源,但无法使表单正常工作。我总是遇到错误,例如没有路线匹配[PUT]"/galleries/1/photos"表格在这里:/galleries/1/photos/1/edit路线.rbresources:galleriesdoresources:photosendresources:galleriesresources:photos照片Controller.rbdefnew@gallery=Gallery.find(params[:galle

  4. java - 我的模型类或其他类中应该有逻辑吗 - 2

    我只想对我一直在思考的这个问题有其他意见,例如我有classuser_controller和classuserclassUserattr_accessor:name,:usernameendclassUserController//dosomethingaboutanythingaboutusersend问题是我的User类中是否应该有逻辑user=User.newuser.do_something(user1)oritshouldbeuser_controller=UserController.newuser_controller.do_something(user1,user2)我

  5. java - 什么相当于 ruby​​ 的 rack 或 python 的 Java wsgi? - 2

    什么是ruby​​的rack或python的Java的wsgi?还有一个路由库。 最佳答案 来自Python标准PEP333:Bycontrast,althoughJavahasjustasmanywebapplicationframeworksavailable,Java's"servlet"APImakesitpossibleforapplicationswrittenwithanyJavawebapplicationframeworktoruninanywebserverthatsupportstheservletAPI.ht

  6. Observability:从零开始创建 Java 微服务并监控它 (二) - 2

    这篇文章是继上一篇文章“Observability:从零开始创建Java微服务并监控它(一)”的续篇。在上一篇文章中,我们讲述了如何创建一个Javaweb应用,并使用Filebeat来收集应用所生成的日志。在今天的文章中,我来详述如何收集应用的指标,使用APM来监控应用并监督web服务的在线情况。源码可以在地址 https://github.com/liu-xiao-guo/java_observability 进行下载。摄入指标指标被视为可以随时更改的时间点值。当前请求的数量可以改变任何毫秒。你可能有1000个请求的峰值,然后一切都回到一个请求。这也意味着这些指标可能不准确,你还想提取最小/

  7. 【Java 面试合集】HashMap中为什么引入红黑树,而不是AVL树呢 - 2

    HashMap中为什么引入红黑树,而不是AVL树呢1.概述开始学习这个知识点之前我们需要知道,在JDK1.8以及之前,针对HashMap有什么不同。JDK1.7的时候,HashMap的底层实现是数组+链表JDK1.8的时候,HashMap的底层实现是数组+链表+红黑树我们要思考一个问题,为什么要从链表转为红黑树呢。首先先让我们了解下链表有什么不好???2.链表上述的截图其实就是链表的结构,我们来看下链表的增删改查的时间复杂度增:因为链表不是线性结构,所以每次添加的时候,只需要移动一个节点,所以可以理解为复杂度是N(1)删:算法时间复杂度跟增保持一致查:既然是非线性结构,所以查询某一个节点的时候

  8. 【Java入门】使用Java实现文件夹的遍历 - 2

    遍历文件夹我们通常是使用递归进行操作,这种方式比较简单,也比较容易理解。本文为大家介绍另一种不使用递归的方式,由于没有使用递归,只用到了循环和集合,所以效率更高一些!一、使用递归遍历文件夹整体思路1、使用File封装初始目录,2、打印这个目录3、获取这个目录下所有的子文件和子目录的数组。4、遍历这个数组,取出每个File对象4-1、如果File是否是一个文件,打印4-2、否则就是一个目录,递归调用代码实现publicclassSearchFile{publicstaticvoidmain(String[]args){//初始目录Filedir=newFile("d:/Dev");Datebeg

  9. java - 为什么 ruby​​ modulo 与 java/other lang 不同? - 2

    我基本上来自Java背景并且努力理解Ruby中的模运算。(5%3)(-5%3)(5%-3)(-5%-3)Java中的上述操作产生,2个-22个-2但在Ruby中,相同的表达式会产生21个-1-2.Ruby在逻辑上有多擅长这个?模块操作在Ruby中是如何实现的?如果将同一个操作定义为一个web服务,两个服务如何匹配逻辑。 最佳答案 在Java中,模运算的结果与被除数的符号相同。在Ruby中,它与除数的符号相同。remainder()在Ruby中与被除数的符号相同。您可能还想引用modulooperation.

  10. ruby - Ruby 是否使用 $stdout 来写入 puts 和 return 的输出? - 2

    我想知道Ruby用来在命令行打印这些东西的输出流:irb(main):001:0>a="test"=>"test"irb(main):002:0>putsatest=>nilirb(main):003:0>a=>"test"$stdout是否用于irb(main):002:0>和irb(main):003:0>?而且,在这两次调用之间,$stdout的值是否有任何变化?另外,有人能告诉我打印/写入这些内容的Ruby源代码吗? 最佳答案 是的。而且很容易向自己测试/证明。在命令行试试这个:ruby-e'puts"foo"'>test.

随机推荐