标签: hbase

如何设计Hbase架构?

假设我有这个RDBM表(Entity-attribute-value_model):

col1: entityID
col2: attributeName
col3: value
Run Code Online (Sandbox Code Playgroud)

我想使用HBase由于扩展问题.

我知道访问Hbase表的唯一方法是使用主键(游标).您可以获取特定键的游标,并逐个迭代行.

问题是,在我的情况下,我希望能够迭代所有3列.例如 :

  • 对于给定的entityID,我想获得它的所有属性和值
  • for give attributeName和value我想要所有的entitiIDS ...

所以我有一个想法是构建一个Hbase表来保存数据(表DATA,其中entityID作为主索引),以及2个"索引"表,其中一个以attributeName作为主键,另一个表示值

每个索引表将保存DATA表的指针列表(entityID).

这是一种合理的方法吗?或者是对Hbase概念的"滥用"?

在这篇博客中,作者说:

HBase允许通过主键获取操作并在行范围内扫描(思考:游标).(如果你有二级指标的规模和需求,不要担心 - Lucene拯救!但这是另一篇文章.)

你知道Lucene怎么帮忙吗?

- Yonatan

rdbms hadoop hbase hive

11
推荐指数
1
解决办法
8853
查看次数

Hadoop Hbase:是否在表之间传播列族

Hbase文档清楚地表明,您应该将类​​似的列分组到列族中,因为物理存储是由列族完成的.

但是,将两个列族放在同一个表中是什么意思,而不是每个列组有单独的表?这种方式"分区"表更有意义,以及一个"宽"表工作得更好的情况下是否存在特定情况?

单独的表应该导致单独的"行区域",这在某些列族(作为一个整体)非常稀疏时可能是有益的.相反,何时将列族聚集在一起是否有利?

database-design hadoop hbase

11
推荐指数
2
解决办法
6112
查看次数

HBase:Thrift vs Rest表现

我知道StackOverflow上有一些关于REST和Thrift for HBase的帖子,但我想稍微关注一下性能问题.

我一直在使用Node.js中的以下库连接到HBase实例:

找出为什么我不会从Thrift网关得到响应的麻烦之后,我终于让两个脚本都运行了,结果如下(每个输出相当于1000个操作完成):

??[mt@Marcs-MacBook-Pro]?[~/Sources/node-hbase]
???? node hbase.js 
hbase-write: 99ms
hbase-write: 3412ms
hbase-write: 3854ms
hbase-write: 3924ms
hbase-write: 3808ms
hbase-write: 9035ms
hbase-read: 216ms
hbase-read: 4676ms
hbase-read: 3908ms
hbase-read: 3498ms
hbase-read: 4139ms
hbase-read: 3781ms
completed
??[mt@Marcs-MacBook-Pro]?[~/Sources/node-hbase]
???? node thrift.js 
hbase-write: 4ms
hbase-write: 931ms
hbase-write: 1061ms
hbase-write: 988ms
hbase-write: 839ms
hbase-write: 807ms
hbase-read: 2ms
hbase-read: 435ms
hbase-read: 562ms
hbase-read: 414ms
hbase-read: 427ms
hbase-read: 423ms
completed
??[mt@Marcs-MacBook-Pro]?[~/Sources/node-hbase]
???? 
Run Code Online (Sandbox Code Playgroud)

使用的脚本可以在这里找到:https://github.com/stelcheck/node-hbase-vs-thrift

我的问题是,是否有人注意到HB和Thrift之间的差异(或者甚至只是一般的任何应用程序/语言)?

rest hadoop hbase thrift node.js

11
推荐指数
1
解决办法
1万
查看次数

HBase Kerberos连接更新策略

最近我在我的集​​群中启用了kerberos,一切都运行良好,直到我的kerberos登录到期,比如12小时.此时我创建的任何连接,使用这些连接创建的任何表都会在我使用它们时抛出.这可能会使我的应用程序崩溃,具体取决于我如何处理它.

我不介意崩溃,因为我的应用程序是由滑块管理的,当它下降时会复活应用程序,但这只会在HBase被"使用"时发生(即我在一个现在陈旧的桌子上调用方法连接)可能是由用户交互引起的,这会导致用户体验不佳.

我不希望身份验证实现细节遍及我的应用程序,也不希望更频繁地创建连接对象,因为这是一个代价高昂的操作,会产生大量的RPC调用(zookeeper元数据位置开始).

有没有一个共同的策略(最好是在HBase客户端中内置)来管理kerberos身份验证到期并在发生这种情况时更新HBase连接/表?

hbase kerberos

11
推荐指数
1
解决办法
7335
查看次数

通过Spark访问HBase表

我正在使用这个代码示例http://www.vidyasource.com/blog/Programming/Scala/Java/Data/Hadoop/Analytics/2014/01/25/lighting-a-spark-with-hbase来读取hbase使用Spark的表只有通过代码添加hbase.zookeeper.quorum的唯一更改,因为它没有从hbase-site.xml中选择它.

Spark 1.5.3 HBase 0.98.0

我正面临着这个错误 -

java.lang.IllegalAccessError: com/google/protobuf/HBaseZeroCopyByteString
at org.apache.hadoop.hbase.protobuf.RequestConverter.buildRegionSpecifier(RequestConverter.java:921)
at org.apache.hadoop.hbase.protobuf.RequestConverter.buildGetRowOrBeforeRequest(RequestConverter.java:132)
at org.apache.hadoop.hbase.protobuf.ProtobufUtil.getRowOrBefore(ProtobufUtil.java:1520)
at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.locateRegionInMeta(ConnectionManager.java:1294)
at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.locateRegion(ConnectionManager.java:1128)
at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.locateRegion(ConnectionManager.java:1111)
at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.locateRegion(ConnectionManager.java:1070)
at org.apache.hadoop.hbase.client.HTable.finishSetup(HTable.java:347)
at org.apache.hadoop.hbase.client.HTable.<init>(HTable.java:201)
at org.apache.hadoop.hbase.client.HTable.<init>(HTable.java:159)
at test.MyHBase.getTable(MyHBase.scala:33)
at test.MyHBase.<init>(MyHBase.scala:11)
at $line43.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw.fetch(<console>:30)
at $line44.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$anonfun$1.apply(<console>:49)
at $line44.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$anonfun$1.apply(<console>:49)
at scala.collection.Iterator$$anon$11.next(Iterator.scala:370)
at scala.collection.Iterator$class.foreach(Iterator.scala:742)
at scala.collection.AbstractIterator.foreach(Iterator.scala:1194)
at scala.collection.generic.Growable$class.$plus$plus$eq(Growable.scala:59)
at scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:104)
at scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:48)
at scala.collection.TraversableOnce$class.to(TraversableOnce.scala:308)
at scala.collection.AbstractIterator.to(Iterator.scala:1194)
at scala.collection.TraversableOnce$class.toBuffer(TraversableOnce.scala:300)
at scala.collection.AbstractIterator.toBuffer(Iterator.scala:1194)
at scala.collection.TraversableOnce$class.toArray(TraversableOnce.scala:287)
at scala.collection.AbstractIterator.toArray(Iterator.scala:1194)
at org.apache.spark.rdd.RDD$$anonfun$collect$1$$anonfun$12.apply(RDD.scala:905)
at org.apache.spark.rdd.RDD$$anonfun$collect$1$$anonfun$12.apply(RDD.scala:905)
at org.apache.spark.SparkContext$$anonfun$runJob$5.apply(SparkContext.scala:1848)
at org.apache.spark.SparkContext$$anonfun$runJob$5.apply(SparkContext.scala:1848)
at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:66)
at org.apache.spark.scheduler.Task.run(Task.scala:88)
at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:214)
at …
Run Code Online (Sandbox Code Playgroud)

hadoop hbase scala apache-spark

11
推荐指数
1
解决办法
945
查看次数

在区域服务器中获取hbase错误

 2017-04-29 14:24:14,135 ERROR  [B.fifo.QRpcServer.handler=49,queue=1,port=16020] ipc.RpcServer:
 Unexpected throwable object  java.lang.IllegalStateException: 
 Invalid currTagsLen -32712. Block offset: 3707853, block length: 72841, position: 0 (without header).
         at org.apache.hadoop.hbase.io.hfile.HFileReaderV3$ScannerV3.checkTagsLen(HFileReaderV3.java:226)
Run Code Online (Sandbox Code Playgroud)

我的应用程序正在更新计数器(使用增量),但我看到了这个问题.有人能告诉我这意味着什么以及如何解决它?

hbase(main):008:0> scan 'table-name', {LIMIT=>1,STARTROW=>'ad:event_count:b'}
ROW                                                         COLUMN+CELL                                                                                                    
ERROR: java.io.IOException: java.lang.IllegalStateException: Invalid currTagsLen -32701. Block offset: 272031, block length: 72441, position: 32487 (without header).
    at org.apache.hadoop.hbase.regionserver.HRegion$RegionScannerImpl.handleException(HRegion.java:5607)
    at org.apache.hadoop.hbase.regionserver.HRegion$RegionScannerImpl.<init>(HRegion.java:5579)
    at org.apache.hadoop.hbase.regionserver.HRegion.instantiateRegionScanner(HRegion.java:2627)
    at org.apache.hadoop.hbase.regionserver.HRegion.getScanner(HRegion.java:2613)
    at org.apache.hadoop.hbase.regionserver.HRegion.getScanner(HRegion.java:2595)
    at org.apache.hadoop.hbase.regionserver.RSRpcServices.scan(RSRpcServices.java:2282)
    at org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:32295)
Run Code Online (Sandbox Code Playgroud)

我不是没有使用任何标签.让我知道需要什么额外信息.

hbase

11
推荐指数
0
解决办法
344
查看次数

任何可扩展的OLAP数据库(Web应用程序规模)?

我有一个应用程序需要针对不同级别的聚合进行分析,这就是OLAP工作负载.我也想经常更新我的数据库.

例如,这是我的更新看起来像(架构看起来像:时间,目标,源IP,浏览器 - >访问)

(15:00-1-2-2010, www.stackoverflow.com, 128.19.1.1, safari) -->  105

(15:00-1-2-2010, www.stackoverflow.com, 128.19.2.1, firefox) --> 110

...

(15:00-1-5-2010, www.cnn.com, 128.19.5.1, firefox) --> 110
Run Code Online (Sandbox Code Playgroud)

然后我想问一下上个月从firefox浏览器访问www.stackoverflow.com的访问量是多少.

我知道Vertica系统可以以相对便宜的方式实现这一点(明智的性能和可扩展性,但可能不是成本方面的).我这里有两个问题.

1)是否有可以构建的开源产品来解决这个问题?特别是,蒙德里安系统的运作情况如何?(可扩展性和性能)2)是否有HBase或Hypertable基础解决方案(显然,裸HBase/Hypertable不能这样做)? - 但如果有基于HBase/Hypertable的项目,可扩展性可能不会成为IMO的问题)?

谢谢!

database olap hadoop hbase olap-cube

10
推荐指数
1
解决办法
3628
查看次数

HBase ORM for Ruby

什么Ruby的HBase ORM /适配器存在?哪个最好?为什么?

ruby orm hbase

10
推荐指数
2
解决办法
1452
查看次数

hadoop map使用HDFS输入和HBASE输出减少作业

我是hadoop的新手.我有一个MapReduce作业,应该从Hdfs获取输入并将reducer的输出写入Hbase.我没有找到任何好的例子.

这是代码,运行此示例的错误是map中的Type mismatch,期望ImmutableBytesWritable收到IntWritable.

映射器类

public static class AddValueMapper extends Mapper < LongWritable,
 Text, ImmutableBytesWritable, IntWritable > {  

  /* input <key, line number : value, full line>
   *  output <key, log key : value >*/  
public void map(LongWritable key, Text value, 
     Context context)throws IOException, 
     InterruptedException {
  byte[] key;
  int value, pos = 0;
  String line = value.toString();
  String p1 , p2 = null;
  pos = line.indexOf("=");

   //Key part
   p1 = line.substring(0, pos);
   p1 = p1.trim();
   key = Bytes.toBytes(p1);   

   //Value part
   p2 …
Run Code Online (Sandbox Code Playgroud)

java hadoop hbase mapreduce hdfs

10
推荐指数
1
解决办法
1万
查看次数

./bootstrap:17:exec:autoreconf:not found:OpenTSDB安装

我正在尝试在Ubuntu上安装OpenTSDB,我正在关注文档.但运行这些命令后:

git clone git://github.com/OpenTSDB/opentsdb.git
cd opentsdb
Run Code Online (Sandbox Code Playgroud)

运行此命令是提供以下控制台输出:

./build.sh
Run Code Online (Sandbox Code Playgroud)

控制台输出:

seed-admin@seedadmin-Inspiron-3847:~/Abharthan/opentsdb$ sudo ./build.sh
+ test -f configure
+ ./bootstrap
./bootstrap: 17: exec: autoreconf: not found
Run Code Online (Sandbox Code Playgroud)

有人可以建议问题是什么.

ubuntu hbase opentsdb

10
推荐指数
1
解决办法
5226
查看次数