我正在执行一个简单的 Hadoop MapReduce 程序,其中 HBase 作为输入和输出。我收到错误消息:
java.lang.RuntimeException: org.apache.hadoop.hbase.client.NoServerForRegionException: Unable to find region for OutPut,,99999999999999 after 10 tries.
当 hbase 版本存在差异时,我们会出现此异常。
我们的代码是使用 0.94.X 版本的 hbase jar 构建并运行的。而 hbase 服务器在 0.90.3 上运行。
当我们使用正确版本(0.90.3)的 hbase jar 更改我们的 pom 文件时,它开始正常工作。
查询bin/hbase hbck
查找Region server在哪台机器上运行。确保您的所有区域服务器都已启动并正在运行。用于start regionserver
启动 Region 服务器
即使机器上的 Regionserver 启动了,它也可能因为时间同步而失败。
确保在所有 Regionserver 节点和 HbaseMaster 节点上都安装了 NTP。
由于 Hbase 在使用时间戳作为索引的键值对上工作,因此它允许时间偏差小于 3 秒。
删除(或移至 /tmp)WAL 日志在我们的案例中有所帮助:
hdfs dfs -mv /apps/hbase/data/MasterProcWALs/state-*.log /tmp