问题标签 [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.

0 投票
1 回答
1036 浏览

schema - 使用 hbase 的 Feed 聚合器。如何设计架构?

我正在从事一个涉及监视大量 rss/atom 提要的项目。我想使用 hbase 进行数据存储,但在设计架构时遇到了一些问题。对于第一次迭代,我希望能够生成一个聚合的提要(所有提要的最后 100 个帖子按时间倒序排列)。

目前我正在使用两个表:

我需要某种用于聚合提要的索引表。我应该如何构建它?hbase 是这类应用程序的好选择吗?

问题更新:是否有可能(在 hbase 中)设计一种可以有效回答如下查询的模式?

0 投票
5 回答
8149 浏览

hadoop - OLAP 可以在 BigTable 中做吗?

过去,我曾经使用在 MySQL 上运行的 OLAP 多维数据集构建 WebAnalytics。现在,我使用的 OLAP 多维数据集只是一个大表(好吧,它的存储比那更智能),其中每一行基本上是一个测量值或一组测量值的聚合。每个度量都有一堆维度(即哪个页面名称、用户代理、ip 等)和一堆值(即有多少浏览量、多少访问者等)。

您在这样的表上运行的查询通常采用以下形式(元 SQL):

因此,您可以使用提到的过滤器获得所选日期的每个小时的总数。一个障碍是这些立方体通常意味着全表扫描(各种原因),这意味着您可以制作这些东西的大小(以 MiB 为单位)的实际限制。

我目前正在学习 Hadoop 等的来龙去脉。

在 BigTable 上将上述查询作为 mapreduce 运行看起来很简单:只需将“小时”作为键,在映射中过滤并通过对值求和来减少。

您能否在 BigTable 类型的系统上“实时”(即通过用户界面并且用户尽快得到他们的答案)而不是批处理模式运行我上面显示的查询(或至少具有相同的输出)?

如果不; 在 BigTable/Hadoop/HBase/Hive 等领域做这样的事情的合适技术是什么?

0 投票
4 回答
6583 浏览

sql - HBase 中的高级查询

鉴于以下 HBase 模式场景(来自官方常见问题解答)......

您将如何为两个实体(例如学生和课程)之间的多对多关联设计 Hbase 表?

我会定义两个表:

学生:学生 ID 学生数据(姓名、地址、...)课程(此处使用课程 ID 作为列限定符)

课程:课程 ID 课程数据(姓名、教学大纲、...)学生(此处使用学生 ID 作为列限定符)

此架构使您可以快速访问查询,显示学生的所有班级(学生表、课程家庭)或班级的所有学生(课程表、学生家庭)。

您将如何满足要求:“给我所有共享至少两门共同课程的学生”?您能否在 HBase 中构建一个“查询”来返回该集合,或者您是否必须检索所有相关数据并自己在代码中处理?

0 投票
1 回答
1485 浏览

couchdb - 哪个是最适合 RDBMS 背景人员的 Key-Value Store?

在所有键值存储中是否有明显的赢家?Cassandra、MongoDB、CouchDB?他们都遵循一些中央指导方针吗?或者他们在定义 API 时都有自己的发言权。

我在问这个问题,尤其是从刚接触键值存储的 RDBMS 技术人员的角度来看。我们应该遵循哪一个来最好地掌握对该领域的理解/使用?

我们从他们的理论中了解到 RDMS,即所有可用的 DB(Oracle、SQL Server 等)都将具有所有工件,例如表、索引、外键等。唯一的区别是效率、安全性和特性。

我如何知道这些以文档为中心的数据库的普遍理论,并知道所有这些数据库(Mongo、Couch 等)将拥有的最小工件是什么?

0 投票
6 回答
15868 浏览

cassandra - 将海量有序时间序列数据存储在 bigtable 衍生品中

我试图弄清楚这些新奇的数据存储,如 bigtable、hbase 和 cassandra 到底是什么。

我处理大量的股票市场数据,数十亿行的价格/报价数据,每天可以添加多达 100 GB 的数据(尽管这些文本文件通常至少压缩一个数量级)。这些数据基本上是一些数字、两三个短字符串和一个时间戳(通常是毫秒级)。如果我必须为每一行选择一个唯一标识符,我将不得不选择整行(因为交换可能会在同一毫秒内为同一符号生成多个值)。

我想将这些数据映射到 bigtable(我包括它的派生词)的最简单方法是通过符号名称和日期(这可能会返回一个非常大的时间序列,超过一百万个数据点并非闻所未闻)。从阅读他们的描述来看,这些系统似乎可以使用多个键。我还假设十进制数字不是键的好候选者。

其中一些系统(例如 Cassandra)声称能够进行范围查询。例如,我是否能够在上午 11:00 到下午 1:30 之间有效地查询给定日期的 MSFT 的所有值?

如果我想搜索给定日期的所有符号,并请求价格在 10 美元到 10.25 美元之间的所有符号(所以我正在搜索值,并希望返回键作为结果)怎么办?

如果我想得到两个时间序列,从另一个中减去一个,然后返回两个时间序列及其结果,我是否必须在我自己的程序中执行他的逻辑?

阅读相关论文似乎表明这些系统不太适合大规模时间序列系统。但是,如果像谷歌地图这样的系统是基于它们的,我认为时间序列应该也可以工作。例如,将时间视为 x 轴,将价格视为 y 轴,将符号视为命名位置——突然之间,bigtable 似乎应该是时间序列的理想存储(如果可以存储、检索整个地球) ,缩放和注释,股市数据应该是微不足道的)。

一些专家可以指出我正确的方向或消除任何误解。

谢谢

0 投票
2 回答
834 浏览

mysql - 如果 HBase 不在分布式环境中运行,它是否有意义?

我正在建立一个数据索引,这将需要以(document, term, weight). 我将存储多达几百万个这样的行。目前我在 MySQL 中将其作为一个简单的表来执行。我将文档和术语标识符存储为字符串值,而不是其他表的外键。我正在重新编写软件并寻找更好的数据存储方式。

看看 HBase 的工作方式,这似乎非常适合模式。我可以映射document{term => weight}.

我在单个节点上执行此操作,所以我不关心分布式节点等。我应该坚持使用 MySQL,因为它可以工作,还是尝试 HBase 是否明智?我看到 Lucene 将它用于全文索引(这类似于我正在做的事情)。我的问题实际上是单个 HBase 节点与单个 MySQL 节点相比如何?我来自 Scala,那么直接 Java API 是否比 JDBC 和 MySQL 解析等每个查询都具有优势?

我主要关心的是插入速度,因为这是以前的瓶颈。处理后,我可能最终会将数据放回 MySQL 进行实时查询,因为我需要做一些在 MySQL 中更好的计算。

我将尝试对两者进行原型设计,但我相信社区可以为我提供一些有价值的见解。

0 投票
1 回答
400 浏览

hadoop - 这是 HBase 的合适(或可能)使用吗?

我想将 HBase 用作存储,我可以在其中推送几百万个格式的条目,{document => {term => weight}}例如“将术语 X 插入文档 Y,权重为 Z”,然后发出类似“选择此文档的前 1000 个术语”或“为每个文档选择前 1000 个术语”。这适用于我当前的 MySQL 实现,但也许该域更适合 HBase。我注意到 HBase 和 BigTable 用于全文索引,这是一个类似的问题域。

您可以说我只是在 HBase 上阅读了几页,但我希望您理解我的问题的要点。它与这个问题有关

可能的障碍可能包括 HBase 不允许使用与LIMIT子句等效的查询。鉴于我想按权重查询,我想关联{weight => term},这对于具有相同权重的两个术语来说是有问题的(我假设 HBase 只允许唯一键)。或者,我必须存储给定权重的术语集合,但这会限制我准确限制返回术语数量的能力。

0 投票
2 回答
894 浏览

sql - 在 Hadoop MapReduce 中缓存地图应用程序?

从数据流的角度来看 MapReduce 和 HBase 的组合,我的问题似乎很合适。我有大量文档要映射、合并和缩减。我之前的 SQL 实现是将任务拆分为批处理操作,将 Map 的结果累积存储到表中,然后执行相当于 reduce 的操作。这样做的好处是,在执行期间(或执行之间)的任何时候,我都可以在那个时间点获得 Map 的结果。

据我了解,将此作业作为 MapReduce 运行需要每次运行所有 Map 函数。

我的 Map 函数(实际上是任何函数)总是为给定的输入提供相同的输出。如果我不需要,重新计算输出根本没有意义。我的输入(一组文档)将不断增长,我将定期对数据运行 MapReduce 操作。在执行之间,我应该只需要为新添加的文档计算 Map 函数。

我的数据可能是 HBase -> MapReduce -> HBase。鉴于 Hadoop 是一个完整的生态系统,它可能能够知道给定函数已应用于具有给定标识的行。我假设 HBase 表中的条目是不可变的。Hadoop 是否/可以考虑到这一点?

我从文档(尤其是 Cloudera 视频)中了解到,重新计算(潜在冗余数据)可能比针对 Hadoop 正在用于处理的问题类别进行持久化和检索更快。

有什么意见/答案吗?

0 投票
1 回答
3347 浏览

hadoop - 来自 HBase 的 Hadoop mapreduce 流式传输

我正在构建一个使用 HBase (0.20.1) 作为数据源和数据接收器的 Hadoop (0.20.1) mapreduce 作业。我想用 Python 编写这份工作,这需要我使用 hadoop-0.20.1-streaming.jar 将数据流进出我的 Python 脚本。如果数据源/接收器是 HDFS 文件,这可以正常工作。

Hadoop 是否支持从/到 HBase 的流式传输以进行 mapreduce?

0 投票
11 回答
36463 浏览

storage - 可扩展的图像存储

我目前正在为基于 Web 的应用程序设计一个架构,该架构还应该提供某种图像存储。用户将能够上传照片作为该服务的主要功能之一。查看这些图像也是主要用途之一(通过网络)。

但是,我不确定如何在我的应用程序中实现这种可扩展的图像存储组件。我已经考虑过不同的解决方案,但由于缺少经验,我期待听到您的建议。除了图像,还必须保存元数据。以下是我的初步想法:

  1. 使用像 HDFS 这样的(分布式)文件系统,并准备专用的网络服务器作为“文件系统客户端”,以保存上传的图像和服务请求。图像元数据保存在一个附加数据库中,包括每个图像的文件路径信息。

  2. 在 HDFS 之上使用 HBase 等面向 BigTable 的系统,并将图像和元数据一起保存。同样,网络服务器桥接图像上传和请求。

  3. 使用像 CouchDB 这样完全无模式的数据库来存储图像和元数据。此外,使用基于 HTTP 的 RESTful API 使用数据库本身进行上传和交付。(附加问题:CouchDB 确实通过 Base64 保存 blob。但是它能否以图像/jpeg 等形式返回数据)?