ERROR: org.apache.hadoop.hbase.MasterNotRunningException: Retried 7 times
Run Code Online (Sandbox Code Playgroud)
我在HBase中创建表时遇到此错误.我按照以下方式使用HBase创建表.我在控制台上键入以下命令.
create 'test', 'cf'
Run Code Online (Sandbox Code Playgroud)
我得到了上面提到的错误.出现此错误的原因是什么?我在独立系统中尝试此表.
我正在我的本地机器(伪分布式)上运行Hadoop MapReduce作业,该作业读取和写入HBase.我间歇性地得到一个错误,这会破坏工作,即使计算机一个人没有运行其他重要进程 - 请参阅下面的日志.作业死后,ZooKeeper Dump的输出看起来像这样,运行失败后客户端数量增加:
HBase is rooted at /hbase
Master address: SS-WS-M102:60000
Region server holding ROOT: SS-WS-M102:60020
Region servers:
SS-WS-M102:60020
Quorum Server Statistics:
ss-ws-m102:2181
Zookeeper version: 3.3.3-cdh3u0--1, built on 03/26/2011 00:20 GMT
Clients:
/192.168.40.120:58484[1]\(queued=0,recved=39199,sent=39203)
/192.168.40.120:37129[1]\(queued=0,recved=162,sent=162)
/192.168.40.120:58485[1]\(queued=0,recved=39282,sent=39316)
/192.168.40.120:58488[1]\(queued=0,recved=39224,sent=39226)
/192.168.40.120:58030[0]\(queued=0,recved=1,sent=0)
/192.168.40.120:58486[1]\(queued=0,recved=39248,sent=39267)
Run Code Online (Sandbox Code Playgroud)
我的开发团队目前正在使用CDH3U0发行版,因此HBase 0.90.1 - 这是一个在最近发布的版本中解决的问题吗?或者我应该对当前设置做些什么?我是否应该期望重新启动ZK并定期杀死客户端?我愿意接受任何合理的选择,让我的工作能够始终如一地完成.
2012-06-27 13:01:07,289 INFO org.apache.zookeeper.ClientCnxn: Opening socket connection to server SS-WS-M102/192.168.40.120:2181
2012-06-27 13:01:07,289 INFO org.apache.zookeeper.ClientCnxn: Socket connection established to SS-WS-M102/192.168.40.120:2181, initiating session
2012-06-27 13:01:07,290 WARN org.apache.zookeeper.ClientCnxn: Session 0x0 for server SS-WS-M102/192.168.40.120:2181, unexpected error, closing socket connection and …Run Code Online (Sandbox Code Playgroud) 我们想用两个QualifierFilters过滤HBase表上的扫描.意味着我们只希望获得表格的行,这些行具有某个列'col_A' 和(!)某个其他列'col_B'.
我们目前的方法如下:
FilterList filterList = new FilterList(FilterList.Operator.MUST_PASS_ALL);
Filter filter1 = new QualifierFilter(CompareOp.EQUAL, new BinaryComparator("col_A".getBytes()));
filterList.addFilter(filter1);
Filter filter2 = new QualifierFilter(CompareOp.EQUAL, new BinaryComparator("col_B".getBytes()));
filterList.addFilter(filter2);
Scan scan = new Scan();
scan.setFilter(filterList);
...
Run Code Online (Sandbox Code Playgroud)
尽管HBase表中有多行同时包含列'col_A'和'col_B',但ResultScanner不会返回此扫描的任何结果.
如果我们只将scan1应用于扫描,一切正常,我们会得到所有'col_A'的行.如果我们只将filter2应用于扫描,则它是相同的.我们确实获得了所有包含'col_B'的行.
只有当我们合并这两个过滤器时,我们才会得到任何结果.
只有从表中获得col_A AND col_B的行的正确方法是什么?
我正在尝试编写一个连接HBase的程序.但是,当我执行以下命令HBaseConfiguration.create(); 我得到以下错误:.
"hbase-default.xml文件似乎是和旧版本的HBase(null),这个版本是0.92.1-cdh4.1.2.当我深入挖掘并调试内部时观察以下内容:
class HBaseConfiguration
private static void checkDefaultsVersion(Configuration conf) {
if (conf.getBoolean("hbase.defaults.for.version.skip", Boolean.FALSE))return;
String defaultsVersion = conf.get("hbase.defaults.for.version");
String thisVersion = VersionInfo.getVersion();
if (!thisVersion.equals(defaultsVersion)) {
throw new RuntimeException(
"hbase-default.xml file seems to be for and old version of HBase (" +
defaultsVersion + "), this version is " + thisVersion);
}
}
Run Code Online (Sandbox Code Playgroud)
在我的情况下,HBase将默认版本返回为null,我不知道为什么它返回为null,因为我检查了与HBase.jar一起打包的hbase-default.xml中的相应条目,它具有正确的条目.
当我从独立程序尝试相同的事情时,它按预期工作.
Guyz,如果您有任何疑问,请与我们联系.
先谢谢,罗希特
我想扫描hbase表并将整数看作字符串(而不是它们的二进制表示).我可以进行转换,但不知道如何使用hbase shell中的Java API编写扫描语句:
org.apache.hadoop.hbase.util.Bytes.toString(
"\x48\x65\x6c\x6c\x6f\x20\x48\x42\x61\x73\x65".to_java_bytes)
org.apache.hadoop.hbase.util.Bytes.toString("Hello HBase".to_java_bytes)
Run Code Online (Sandbox Code Playgroud)
我将非常高兴有扫描示例,获取搜索二进制数据(long)并输出正常字符串.我使用的是hbase shell,而不是JAVA.
谁能告诉我Apache HBase数据库和Bigtable有什么区别?还是一样?哪一个支持关系(如果有)?如果他们是大搜索者,有什么区别?
我正在使用zookeeper ensemble for hbase.Zookeeper在3台机器上运行.虽然HBase也处于完全分布式模式.我有Nutch 2.x版本.当我启动nutch来抓取一些数据时,它会在nutch日志文件中给出以下bug.
ERROR zookeeper.ClientCnxnSocketNIO - Unable to open socket to localhost/0:0:0:0:0:0:0:1:2181
2015-01-23 16:34:21,956 WARN zookeeper.ClientCnxn - Session 0x0 for server null, unexpected error, closing socket connection and attempting reconnect
java.net.SocketException: Network is unreachable
at sun.nio.ch.Net.connect0(Native Method)
at sun.nio.ch.Net.connect(Net.java:457)
at sun.nio.ch.Net.connect(Net.java:449)
at sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:647)
at org.apache.zookeeper.ClientCnxnSocketNIO.registerAndConnect(ClientCnxnSocketNIO.java:266)
at org.apache.zookeeper.ClientCnxnSocketNIO.connect(ClientCnxnSocketNIO.java:276)
at org.apache.zookeeper.ClientCnxn$SendThread.startConnect(ClientCnxn.java:958)
at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:993)
2015-01-23 16:34:22,063 WARN zookeeper.RecoverableZooKeeper - Possibly transient ZooKeeper exception: org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/hbaseid
Run Code Online (Sandbox Code Playgroud)
当我在三个zookeepers实例上运行命令时
echo ruok | nc 1.1.1.1 2181 it says imok
Run Code Online (Sandbox Code Playgroud)
这有什么问题?我的hbase版本是0.94.14,zookeeper版本是3.4.5,solr版本是4.10.3(用于索引),Nutch版本是2.2.3
使用phoenix sqlline连接hbase.在SecureCRT终端上,我只能看到有三列超过10列的表.我想显示表的所有列以测试数据是否正常.是否应该设置任何配置?
0: jdbc:phoenix:10.35.66.72:2181:/hbase> select * from WL.MSGCENTER_PUSHMESSAGE;
+--------------+---------+---------------------------------------------------------------------------------------------------------------------------------------------+
| PLANID | BATCHID | |
+--------------+---------+---------------------------------------------------------------------------------------------------------------------------------------------+
| 520 | 1 | C285995F-AB23-4CF0-A9A4-F29175E9CD36 |
+--------------+---------+---------------------------------------------------------------------------------------------------------------------------------------------+
Run Code Online (Sandbox Code Playgroud)
选择1行(0.805秒)
我有带行键的HBase表,它由文本ID和时间戳组成,如下所示:
...
string_id1.1470913344067
string_id1.1470913345067
string_id2.1470913344067
string_id2.1470913345067
...
Run Code Online (Sandbox Code Playgroud)
如何过滤HBase扫描(在Scala或Java中)以获得某些字符串ID和时间戳超过某个值的结果?
谢谢
我有以下简单的代码:
import org.apache.hadoop.hbase.client.ConnectionFactory
import org.apache.hadoop.hbase.HBaseConfiguration
val hbaseconfLog = HBaseConfiguration.create()
val connectionLog = ConnectionFactory.createConnection(hbaseconfLog)
Run Code Online (Sandbox Code Playgroud)
我在spark-shell上运行,我收到以下错误:
14:23:42 WARN zookeeper.ClientCnxn: Session 0x0 for server null, unexpected
error, closing socket connection and attempting reconnect
java.net.ConnectException: Connection refused
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:739)
at org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:30)
at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1081)
Run Code Online (Sandbox Code Playgroud)
实际上有很多这些错误,其中有几个偶尔出现:
14:23:46 WARN client.ZooKeeperRegistry: Can't retrieve clusterId from
Zookeeper org.apache.zookeeper.KeeperException$ConnectionLossException:
KeeperErrorCode = ConnectionLoss for /hbase/hbaseid
Run Code Online (Sandbox Code Playgroud)
通过Cloudera的VM,我可以通过简单地重新启动hbase-master,regionserver和thrift来解决这个问题,但在我公司这里我不允许这样做,我也通过复制文件hbase-site.xml解决了一次激发conf目录,但我也不能,它有没有办法在spark-shell参数中设置这个特定文件的路径?