hbase-site.xml中的zookeeper仲裁设置究竟是什么?
我试着从求职者那里收集一些信息.对于初学者,我想首先获得运行的工作信息,例如工作ID或工作名称等.但是已经卡住了,这就是我所拥有的(打印出当前正在运行的工作的工作ID):
public static void main(String[] args) throws IOException {
Configuration conf = HBaseConfiguration.create();
conf.set("hbase.zookeeper.quorum", "zk1.myhost,zk2.myhost,zk3.myhost");
conf.set("hbase.zookeeper.property.clientPort", "2181");
InetSocketAddress jobtracker = new InetSocketAddress("jobtracker.mapredhost.myhost", 8021);
JobClient jobClient = new JobClient(jobtracker, conf);
JobStatus[] jobs = jobClient.jobsToComplete();
for (int i = 0; i < jobs.length; i++) {
JobStatus js = jobs[i];
if (js.getRunState() == JobStatus.RUNNING) {
JobID jobId = js.getJobID();
System.out.println(jobId);
}
}
}
Run Code Online (Sandbox Code Playgroud)
这上面努力时显示作业ID,但现在我想显示的作业名称以及工作方式的魅力.所以我在打印作业ID后添加了这一行:
System.out.println(jobClient.getJob(jobId).getJobName());
Run Code Online (Sandbox Code Playgroud)
我得到这个例外:
Exception in thread "main" java.lang.NullPointerException
at org.apache.hadoop.mapred.JobClient$NetworkedJob.<init>(JobClient.java:226)
at org.apache.hadoop.mapred.JobClient.getJob(JobClient.java:1080)
at org.apache.test.JobTracker.main(JobTracker.java:28)
Run Code Online (Sandbox Code Playgroud)
jobClient不是null.我知道这是因为我尝试使用null …
我正在与一位朋友合作开发一个项目,该项目将利用Hbase来存储它的数据.有什么好的查询示例吗?我似乎正在编写大量的Java代码来遍历RowResult的列表,而在SQL领域,我可以编写一个简单的查询.我错过了什么吗?或者Hbase遗漏了什么?
我目前正在评估HBase作为数据存储区,但有一个问题没有得到解答:HBase在许多节点上存储了同一对象的许多副本(也就是复制).由于HBase具有所谓的强一致性(与最终一致性相对),因此它保证每个副本在读取时返回相同的值.
据我了解HBase概念,在读取值时,首先要查询HBase主服务器(必须有多个)提供数据的RegionServer.然后,我可以在没有主发明的情况下发出读写请求.然后如何复制工作?
我已经阅读了BigTable -Paper并搜索了文档,但我没有找到关于HBase架构的更多信息.
谢谢!
我设置了一个hbase集群来存储来自opentsdb的数据.最近由于重启了一些节点,hbase丢失了表"tsdb".我仍然可以在hbase的主节点页面上,但是当我点击它时,它给了我一个tableNotFoundException
org.apache.hadoop.hbase.TableNotFoundException: tsdb
at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:952)
at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:818)
at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:782)
at org.apache.hadoop.hbase.client.HTable.finishSetup(HTable.java:249)
at org.apache.hadoop.hbase.client.HTable.<init>(HTable.java:213)
at org.apache.hadoop.hbase.client.HTable.<init>(HTable.java:171)
......
Run Code Online (Sandbox Code Playgroud)
我进入了hbase shell,尝试找到'tsdb'表,但得到了类似的消息
hbase(main):018:0> scan 'tsdb'
ROW COLUMN+CELL
ERROR: Unknown table tsdb!
Run Code Online (Sandbox Code Playgroud)
但是当我试图重新创建这个表时,hbase shell告诉我该表已经存在...
hbase(main):013:0> create 'tsdb', {NAME => 't', VERSIONS => 1, BLOOMFILTER=>'ROW'}
ERROR: Table already exists: tsdb!
Run Code Online (Sandbox Code Playgroud)
我还可以在hbase shell中列出该表
hbase(main):001:0> list
TABLE
tsdb
tsdb-uid
2 row(s) in 0.6730 seconds
Run Code Online (Sandbox Code Playgroud)
看一下日志,我发现这应该是我的问题的原因
2012-05-14 12:06:22,140 WARN org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation: Encountered problems when prefetch META table:
org.apache.hadoop.hbase.TableNotFoundException: Cannot find row in .META. for table: tsdb, row=tsdb,,99999999999999
at org.apache.hadoop.hbase.client.MetaScanner.metaScan(MetaScanner.java:157)
at …Run Code Online (Sandbox Code Playgroud) 根据我的理解,行被插入到HBase表中,并被存储为不同区域服务器中的区域.因此,区域服务器存储数据
类似地,就Hadoop而言,数据存储在hadoop集群中存在的数据节点中.
假设我在Hadoop 1.1.1之上配置了HBase 0.90.6,如下所示
2个节点 - 主站和从站
根据我的陈述,如果表数据存储在区域服务器中; 那么数据节点和区域服务器的作用是什么?
任何文件系统都应提供API来访问其文件和目录等.
那么,"HDFS缺少随机读写访问"是什么意思?
所以,我们应该使用HBase.
大家好我在大型桌子上运行凤凰计数查询时收到以下错误消息.
0: jdbc:phoenix:hadoopm1:2181> select Count(*) from PJM_DATASET;
+------------+
| COUNT(1) |
+------------+
java.lang.RuntimeException: org.apache.phoenix.exception.PhoenixIOException: org.apache.phoenix.exception.PhoenixIOException: Failed after attempts=36, exceptions:
Fri Jan 09 02:18:10 CST 2015, null, java.net.SocketTimeoutException: callTimeout=60000, callDuration=62365: row '' on table 'PJM_DATASET' at region=PJM_DATASET,,1420633295836.4394a3aa2721f87f3e6216d20ebeec44., hostname=hadoopctrl,60020,1420790733247, seqNum=27753
at sqlline.SqlLine$IncrementalRows.hasNext(SqlLine.java:2440)
at sqlline.SqlLine$TableOutputFormat.print(SqlLine.java:2074)
at sqlline.SqlLine.print(SqlLine.java:1735)
at sqlline.SqlLine$Commands.execute(SqlLine.java:3683)
at sqlline.SqlLine$Commands.sql(SqlLine.java:3584)
at sqlline.SqlLine.dispatch(SqlLine.java:821)
at sqlline.SqlLine.begin(SqlLine.java:699)
at sqlline.SqlLine.mainWithInputRedirection(SqlLine.java:441)
at sqlline.SqlLine.main(SqlLine.java:424)
0: jdbc:phoenix:hadoopm1:2181>
Run Code Online (Sandbox Code Playgroud)
请帮忙.
我可以用什么而不是HTable(config,tablename)?
不推荐使用此方法.在每个例子中,我都会发现它们使用了这个或另一个Constuctor,它也被弃用了.
我有一个关于负载均衡器的基本问题.我刚刚完成了为我们的hadoop(2.3)集群添加新节点,该集群也有hbase v0.98.添加并在hadoop和hbase中使所有节点联机后,
如何通过hadoop再平衡器影响hbase?在hadoop重新平衡后,我是否需要明确尝试重新平衡hbase?
我的Hadoop集群完全被hbase占用.设置balancer_switch = true,它会自动重新平衡hbase和hadoop吗?
什么是确保hadoop和hbase都重新平衡并且工作正常的最佳方法是什么?