0

问候,

我一直在浏览这个网站上的问题,但没有找到任何相关的问题。

我目前已经构建了一个 Flex/PHP/MySQL 应用程序,我从我的 Hadoop 集群中提取数据并转储到 MySQL 表中。随着我的数据集不断增长,这有几个问题。

我正在寻找一个更强大的开源解决方案,因此已经开始研究 HBase 以及如何利用 PHP 或 Java 将我的数据提取到可视化应用程序中。

你们中有人在 Hadoop 或 HBase 之上构建了任何可视化平台吗?

谢谢!

4

2 回答 2

4

我不完全确定您是否指的是从 HBase 获取信息。我假设您想要构建一个聚合应用程序,它执行“sum”、“count”、“avg”等数据挖掘,例如对存储在 HBase 中的数据进行操作以生成图形/可视化。

在这种情况下,具体答案将取决于您尝试分析的数据的性质。一个这样的应用程序是来自 StumpleUpon 的http://opentsdb.net 。

在 HBase 上编写数据汇总器非常容易,因为它可以通过 MapReduce 实现。 http://hbase.apache.org/docs/r0.89.20100726/apidocs/org/apache/hadoop/hbase/mapred/package-summary.html

在我们的组织中,我们使用 Solr 执行财务报告的查询和聚合功能,然后我们将它们存储在 CMS 中进行渲染。因此允许我们为相同的数据集自定义渲染。如果您有兴趣将其存储到 HBase+Solr 上的 CMS 中,以下内容会很有趣 -

如果您希望像访问持久存储一样访问您的数据并且对 ORM 感兴趣,那么您可能会关注以下相关内容,否则请忽略它。以下内容复制自 - Java ORM for Hbase我的另一个答案。

在我看来,HBase 的优势在于将动态列保留在静态列族中。根据我使用 HBase 开发应用程序的经验,我发现确定单元限定符和值并不像 SQL 那样容易。

例如,一本书有许多作者,根据您的访问模式、作者编辑、应用层缓存实现,您可能希望选择将整个作者保存在书表中(即作者驻留在 2 个表中,作者表和书表) 或只是作者 ID。此外,作者的集合可以作为 XML/JSON 保存到一个单元格中,也可以保存为单个作者的单个单元格。

有了这种理解,我得出结论,编写一个成熟的 ORM,比如 Hibernate,不仅非常困难,实际上可能还没有定论。所以我采取了不同的方法,更像是 iBatis 之于 Hibernate。

  • 我的迷你框架:http : //github.com/smart-it/smart-dao [smart-hbase]
  • 用法:https ://github.com/smart-it/smart-cms [content-spi-impl 模块有用法]
  • 用法:https ://github.com/smart-it/jetty-session-hbase [hbase-impl 模块有用法]

让我试着解释一下它是如何工作的。为此,我将使用此处此处的源代码。

  1. 首要任务是实现 ObjectRowConverter 接口,在本例中为 SessionDataObjectConverter。抽象类封装了从 HBase 社区讨论和学习的基本最佳实践。该扩展基本上让您可以 100% 控制如何将对象转换为 HBase 行,反之亦然。对于这个 API 的唯一限制是您的域对象必须实现接口 PersistentDTO,该接口在内部用于创建 Put、Delete、执行 byte[] 到 id 对象,反之亦然。
  2. 下一个任务是像在 HBaseImplModule 中那样连接依赖项。如果您有兴趣,请告诉我,我将完成依赖注入。

就是这样。如何使用它们可以在这里找到。它基本上使用 CommonReadDao、CommonWriteDao 来读写 HBase 的数据。常见的 read dao 在查询中实现多线程行到对象的转换,多线程通过 ids 获取,通过 id 获取,并具有类似 Hibernate Criteria 的 API 以通过 Scan 查询到 HBase(没有可用的聚合函数)。Common write dao 实现了与一些附加功能相关的通用写相关代码,例如乐观/悲观锁定、单元格覆盖/合并检查实体(不)存在时保存、更新、删除等。

这个 ORM 是为我们的内部目的而开发的,我已经到了我的脖子上,因此还不能做一些文档。但是,如果您有兴趣,请告诉我,我花时间优先记录文档。

于 2010-12-01T06:17:16.023 回答
0

查看 metatron 发现:https ://github.com/metatron-app/metatron-discovery 。他们使用 Druid 和 Hive 进行 OLAP 和数据存储。它是开源的,因此您可以检查他们的代码。这可能会有所帮助。

于 2019-05-31T09:33:17.290 回答