我为远程服务器编写了以下hbase客户端类:
System.out.println("Hbase Demo Application ");
// CONFIGURATION
// ENSURE RUNNING
try {
HBaseConfiguration config = new HBaseConfiguration();
config.clear();
config.set("hbase.zookeeper.quorum", "192.168.15.20");
config.set("hbase.zookeeper.property.clientPort","2181");
config.set("hbase.master", "192.168.15.20:60000");
//HBaseConfiguration config = HBaseConfiguration.create();
//config.set("hbase.zookeeper.quorum", "localhost"); // Here we are running zookeeper locally
HBaseAdmin.checkHBaseAvailable(config);
System.out.println("HBase is running!");
// createTable(config);
//creating a new table
HTable table = new HTable(config, "mytable");
System.out.println("Table mytable obtained ");
addData(table);
} catch (MasterNotRunningException e) {
System.out.println("HBase is not running!");
System.exit(1);
}catch (Exception ce){ ce.printStackTrace();
Run Code Online (Sandbox Code Playgroud)
它抛出一些例外:
Oct 17, 2011 1:43:54 PM org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation getMaster
INFO: …Run Code Online (Sandbox Code Playgroud) 如何在Hbase shell中使用put命令插入多个值.我有一个有五个限定符的列族.如何使用Put使用一个命令将值插入所有这5个限定符
有没有人有关于如何使用嵌套实体创建Hbase表的示例?
例
UserName (string)
SSN (string)
+ Books (collection)
Run Code Online (Sandbox Code Playgroud)
例如,书籍集合看起来像这样
图书
isbn
title
etc...
Run Code Online (Sandbox Code Playgroud)
我找不到一个例子是如何创建这样的表.我看到很多人都在谈论它,以及在某些情况下它是如何做到最好的做法,但我找不到一个如何在任何地方做到这一点的例子.
谢谢...
问题
我正在尝试与Phoenix建立二级索引.索引创建需要几个小时.这似乎是由于HBase扫描速度慢,因为我注意到以下性能:
使用HBase shell和Java扫描程序.
注意:GET(通过rowkey)操作实现了良好的性能(约0.5秒).
上下文
故障排除
基于HBase书籍(http://hbase.apache.org/book.html#performance),这是我已经检查过的内容:
1)硬件
2)JVM
3)数据
4)HBase配置
大多数配置保持不变.
一些对我来说看起来不错的params
尝试以下配置更改而不会对性能产生任何影响
5)日志没有任何用处
cat hbase-hbase-master-cox.log …
我知道我可以拆分安装了Hadoop的EC2集群(除非我错了).Hbase怎么样?我可以预先制作Hadoop和Hbase吗?或者我需要弄脏手.如果不是一种选择,最佳选择是什么?Cloudera显然有两个包.这是要走的路吗?
谢谢您的帮助.
我刚刚从cloudera(3)安装了hadoop和hbase,但是当我尝试去http:// localhost:60010时,它只是坐在那里不断加载.
我可以很好地访问regionserver - http:// localhost:60030 ...查看主hbase服务器日志我可以看到以下内容.
看起来像根区域的问题.
所有这些都安装在运行Ubuntu(Natty)11的ext4 1TB分区上.没有集群/其他盒子.
任何帮助都会很棒!
11/05/15 19:58:27 WARN master.AssignmentManager: Failed assignment of -ROOT-,,0.70236052 to serverName=localhost,60020,1305452402149, load=(requests=0, regions=0, usedHeap=24, maxHeap=995), trying to assign elsewhere instead; retry=0
org.apache.hadoop.hbase.client.RetriesExhaustedException: Failed setting up proxy interface org.apache.hadoop.hbase.ipc.HRegionInterface to /127.0.0.1:60020 after attempts=1
at org.apache.hadoop.hbase.ipc.HBaseRPC.waitForProxy(HBaseRPC.java:355)
at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.getHRegionConnection(HConnectionManager.java:957)
at org.apache.hadoop.hbase.master.ServerManager.getServerConnection(ServerManager.java:606)
at org.apache.hadoop.hbase.master.ServerManager.sendRegionOpen(ServerManager.java:541)
at org.apache.hadoop.hbase.master.AssignmentManager.assign(AssignmentManager.java:901)
at org.apache.hadoop.hbase.master.AssignmentManager.assign(AssignmentManager.java:730)
at org.apache.hadoop.hbase.master.AssignmentManager.assign(AssignmentManager.java:710)
at org.apache.hadoop.hbase.master.AssignmentManager$TimeoutMonitor.chore(AssignmentManager.java:1605)
at org.apache.hadoop.hbase.Chore.run(Chore.java:66)
Caused by: java.net.ConnectException: Connection refused
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:567)
at org.apache.hadoop.net.SocketIOWithTimeout.connect(SocketIOWithTimeout.java:206)
at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:408)
at org.apache.hadoop.hbase.ipc.HBaseClient$Connection.setupIOstreams(HBaseClient.java:328)
at org.apache.hadoop.hbase.ipc.HBaseClient.getConnection(HBaseClient.java:883) …Run Code Online (Sandbox Code Playgroud) 我写了job mapreduce.输入是hbase中的一个表.
工作运行时出错:
org.apache.hadoop.hbase.client.ScannerTimeoutException:自上次调用以来传递了88557ms,当前在org.apache.hadoop.hbase.client.HTable $ ClientScanner.next(HTable.java:1196)的org上将超时设置为60000 org.apache.hadoop.mapred.MapTask上的org.apache.hadoop.hbase.mapreduce.TableRecordReader.nextKeyValue(TableRecordReader.java:142)中的.apache.hadoop.hbase.mapreduce.TableRecordReaderImpl.nextKeyValue(TableRecordReaderImpl.java:133) $ NewTrackingRecordReader.nextKeyValue(MapTask.java:532)在org.apache.hadoop.mapreduce.MapContext.nextKeyValue(MapContext.java:67)在org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:143)在org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:764)在org.apache.hadoop.mapred.MapTask.run(MapTask.java:370)在org.apache.hadoop.mapred.Child $ 4.run (Child.java:255)位于org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInf)的javax.security.auth.Subject.doAs(Subject.java:396)的java.security.AccessController.doPrivileged(Native Method)ormation.java:1083)在org.apache.hadoop.mapred.Child.main(Child.java:249)引起的:org.apache.hadoop.hbase.UnknownScannerException:org.apache.hadoop.hbase.UnknownScannerException:名称: 1502530095384129314在org.apache.hadoop.hbase.regionserver.HRegionServer.next(HRegionServer.java:1837)在sun.reflect.GeneratedMethodAccessor19.invoke(未知来源)在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)在java.lang.reflect.Method.invoke(Method.java:597)位于org.apache.hadoop.hbase.ipc的org.apache.hadoop.hbase.ipc.HBaseRPC $ Server.call(HBaseRPC.java:570). HBaseServer $ Handler.run(HBaseServer.java:1039)at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl. java:27)atg.apach的java.lang.reflect.Constructor.newInstance(Constructor.java:513)e.hadoop.hbase.RemoteExceptionHandler.decodeRemoteException在org.apache.hadoop.hbase.client.ScannerCallable(RemoteExceptionHandler.java:96)在org.apache.hadoop.hbase.client.ScannerCallable.call(ScannerCallable.java:83).调用(ScannerCallable.java:38)在org.apache.hadoop.hbase.client.HConnectionManager $ HConnectionImplementation.getRegionServerWithRetries(HConnectionManager.java:1226)在org.apache.hadoop.hbase.client.HTable $ ClientScanner.next(HTable. java:1187)......还有12个
你能帮帮我解决吗?
我正在尝试了解Apache Spark的内部结构.我想知道Spark是否在从InputFormat读取或写入OutputFormat(或Spark本身支持的其他格式而不是从MapReduce派生)时使用某些机制来确保数据局部性.
在第一种情况下(在读),我的理解是,使用InputFormat时,劈叉获得与主机,以便星火试图将任务分配给执行者,以减少网络传输尽可能多的相关的(或主机??)包含数据尽可能.
在写作的情况下,这种机制将如何运作?我知道从技术上讲,HDFS中的文件可以保存在本地的任何节点中并复制到其他两个(因此您可以将网络用于3个副本中的两个),但是,如果您考虑写入其他系统,例如NoSQL数据库( Cassandra,HBase,其他......),这类系统有自己的分发数据的方式.是否有一种方法来告诉火花分区在于优化由输出水槽预期数据的分布的基础上,数据局部性的方式的RDD(目标的NoSQL数据库,看到天然或通过OUTPUTFORMAT)?
我指的是一个环境,其中Spark节点和NoSQL节点存在于相同的phisical机器中.
我对HBase和Phoenix很新.
但有没有办法可以将数据转储/导出到文本文件?如果我可以指定字段终止符,例如',','|>'等,那将是非常值得注意的.
谢谢.
我有一个令人尴尬的并行任务,我使用Spark来分配计算.这些计算是在Python中进行的,我使用PySpark来读取和预处理数据.我的任务的输入数据存储在HBase中.不幸的是,我还没有找到一种令人满意的(即易于使用和可扩展的)方法来使用Python从/向Spark读取/写入HBase数据.
我之前探讨的内容:
使用我的Python进程连接happybase.该软件包允许使用HBase的Thrift API从Python连接到HBase.这样,我基本上跳过Spark进行数据读/写,并且错过了潜在的HBase-Spark优化.读取速度似乎相当快,但写入速度很慢.这是目前我最好的解决方案.
使用SparkContext newAPIHadoopRDD并saveAsNewAPIHadoopDataset使用HBase的MapReduce接口.这方面的例子曾经包含在Spark代码库中(见这里).但是,这些现在被认为是过时的,有利于HBase的Spark绑定(见这里).我还发现这个方法很慢而且很麻烦(用于阅读,编写工作得很好),例如,返回的字符串newAPIHadoopRDD必须以各种方式进行解析和转换,最终得到我想要的Python对象.它一次只支持一列.
我知道的替代方案:
我目前正在使用Cloudera的CDH和5.7.0版本hbase-spark(CDH发行说明和详细的博客文章).该模块(以前称为SparkOnHBase)将正式成为HBase 2.0的一部分.不幸的是,这个奇妙的解决方案似乎只适用于Scala/Java.
华为的Spark-SQL-on-HBase/Astro(我看不出两者之间有什么区别......).它看起来并不像我想要的解决方案那样强大且受到良好支持.