问题标签 [hbase]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
replication - 当 HBase 节点发生故障时会发生什么?
HBase很棒,但是...
当一个节点(爆炸/烧毁/被盗/被疯狂的 IT 撕成碎片)时,数据会发生什么?
- 数据是否丢失?
- 集群可以自动恢复吗?
- 我可以在不停机的情况下添加新节点吗?
谢谢你们,马克西姆。
nosql - 面向列的数据库(HBase、Cassandra)中的顺序行 ID?
在 HBase 中设计行 ID 时,我看到了两条相互矛盾的建议(特别是,但我认为它也适用于 Cassandra。)
- 将您经常聚集在一起的键分组以利用数据局部性。(White, Hadoop: The Definitive Guide,我记得在 HBase 站点上看到过,但找不到...)
- 分散密钥,以便工作可以分布在多台机器上(Twitter幻灯片 14 中的 Twitter、Pig 和 HBase)
我猜哪个是最佳的可能取决于您的用例,但是有没有人对这两种策略有任何经验?
java - 用于 Hbase 的 Java ORM
任何人都知道 HBase 的良好 Java ORM 实现。这个对 Ruby 来说真的很好看
http://www.stanford.edu/~sqs/rhino/doc/
但是找不到Java的。
谢谢。
java - 每个 HBase 表一个 Reducer
基本上,我需要将数据路由到正确的 Reducer。每个 Reducer 都将成为一个 TableReducer。
我有以下文件
venodor1, user1, xxxx=n venodor1, user1, xxxx=n venodor2, user2, xxxx=n venodor2, user2, xxxx=n
我需要将其插入以下 hbase 表中
表 vendor1: [user1] => {data:xxxx = n} [user2] => {data:xxxx = n}
表 vendor2: [user1] => {data:xxxx = n} [user2] => {data:xxxx = n}
格式为 [ROW_ID] => {[FAMILY]:[COLUMN] = [VALUE]}
- 每个供应商都有不同的 hbase 表
- 行需要根据行中的值转到不同的 hbase 表。
有没有办法做到这一点 ?与级联?还有其他解决方法吗?
谢谢,费德里科
java - 发送 Hbase 批量 Puts 压缩?
有没有办法发送一批压缩的 hbase put。
我将自动刷新设置为 false,并且我使用的 bufferSize 为 2MG。有没有办法压缩puts以便在一批中发送更多puts。
感谢,
database - 从聚合的博客数据中检索信息,怎么做?
我想知道如何从聚合日志中检索数据?这就是我所拥有的:
- 每天大约 30GB 的未压缩日志数据加载到 HDFS 中(这将很快增长到大约 100GB)
这是我的想法:
- 每天晚上使用 Pig 处理这些数据
- 读取、拆分和自定义日志UDF 检索如下数据:timestamp
, url
, user_id
(可以说,这就是我所需要的)
- 从日志条目并将其加载到 HBase (日志数据将无限存储)
然后,如果我想知道哪些用户在给定的时间范围内看到了特定页面,我可以快速查询 HBase,而无需每次查询都扫描整个日志数据(我想要快速的答案 - 分钟是可以接受的)。并且将同时进行多个查询。
您如何看待这个工作流程?您认为将这些信息加载到 HBase 中有意义吗?还有哪些其他选择,它们与我的解决方案相比如何?我感谢所有评论/问题和答案。先感谢您。
parallel-processing - HBase 如何跨 regionservers 分区表?
请告诉我 HBase 如何跨区域服务器分区表。
例如,假设我的行键是从 0 到 10M 的整数,并且我有 10 个区域服务器。
这是否意味着第一个 regionserver 将存储键值为 0 - 10M,第二个 1M - 2M,第三个 2M-3M,...第十个 9M - 10M 的所有行?
我希望我的行键是时间戳,但我认为大多数查询将适用于最新日期,所有查询将仅由一个区域服务器处理,是真的吗?
或者也许这些数据会以不同的方式传播?
或者,也许我可以以某种方式创建比我拥有的区域服务器更多的区域,因此(根据给定的示例)服务器 1 将具有密钥 0 - 0,5M 和 3M - 3,5M,这样我的数据将更平均地分布,是这样吗可能的?
更新
我刚刚发现有选项hbase.hregion.max.filesize
,你认为这会解决我的问题吗?
java - 类路径中的外部 jar 和 HBase
我在文件中使用外部 jar 时遇到问题。我总是得到:
这个文件在类路径上,我在运行 jar 时设置选项:
调用此命令后,此文件编译成功:
该怎么办?
java - 多个或批量获取或获取 HBase Java 客户端?
HBase Java 客户端是否支持多获取(又名批量获取),有点像 memcached 多获取?我已经搜索了文档和互联网至少一个小时,但找不到任何确定的东西。HTable API 提供多个 Delete 和多个 Put,但对 Get 没有任何明显的类似调用。
为了澄清,我试图获取不同的记录,而不是一系列记录。所以 Scan 不是我直观使用的。
我确实在一个线程(可能在 JIRA 上)阅读了一些关于 Scan 为使用过滤器进行批量随机访问提供等效功能的内容。如果有人可以确认这是最佳实践,并且可能会指出我要使用的正确类型的过滤器,那么我会走那条路。
谢谢!
java - 如何在同一集群上的 HBase 中创建表的副本?或者,如何在工作状态下操作时使用原始状态来服务请求
有没有一种有效的方法可以在同一个集群中在 HBase 中创建表结构+数据的副本?显然目标表会有不同的名称。到目前为止我发现了什么:
CopyTable 作业,已被描述为用于在不同HBase 集群之间复制数据的工具。我认为它会支持集群内操作,但不知道它是否旨在有效地处理这种情况。
使用导出+导入作业。这样做听起来像是一种 hack,但由于我是 HBase 的新手,也许这可能是一个真正的解决方案?
你们中的一些人可能会问我为什么要这样做。我的情况是我有数百万个需要访问的对象,如果你愿意的话,它们处于“快照”状态。有一个每天运行的批处理过程会更新其中的许多对象。如果该批处理过程中的任何步骤失败,我需要能够“回滚”到原始状态。不仅如此,在批处理过程中,我还需要能够将请求服务到原始状态。
因此,当前流程是我将原始表复制到工作副本,在更新工作副本时继续使用原始表服务请求。如果批处理成功完成,我会通知我的所有服务使用新表,否则我会丢弃新表。
使用 BDB 效果很好,但我现在处于一个真正大数据的全新世界,所以我可能采取了错误的方法。如果有人对我应该使用的模式有任何建议,他们非常受欢迎。:-)