【问题标题】:Gathering heterogeneous data with hadoop使用hadoop收集异构数据
【发布时间】:2016-08-08 13:15:14
【问题描述】:

我们有一个系统,包括一些 Oracle 和 Microsoft SQL DBMS,可以从不同来源以不同格式获取数据、存储和处理数据。 “不同格式”是指文件:dbf、xls 等,包括二进制格式(图像),使用不同的工具导入 DBMS,并直接访问数据库。我想隔离所有传入的数据并将其“永久”存储,并希望稍后按源和创建时间获取它们。经过一些研究,我想尝试 hadoop 生态系统,但不太确定它是否是实现这一目标的充分解决方案。我应该使用生态系统的哪些部分?单独的 HDFS,Hive,可能是别的东西?能给我一点建议吗?

【问题讨论】:

    标签: hadoop


    【解决方案1】:

    我假设您想要存储包含数据的文件——实际上是一个可搜索的文件存档。

    文件本身可以存储在 HDFS 中……或者您可能会发现像 Amazon 的 S3 这样的系统更便宜、更灵活。在存储文件时,您可以通过附加到另一个文件来管理有关数据的其他数据,即:位置、来源和创建时间——简单的制表符分隔文件或 Hadoop 支持的几种其他格式使这很容易。

    您可以使用 Hive 或其他 SQL-on-Hadoop 工具管理和查询文件。实际上,您正在创建一个具有特殊属性的简单文件系统,因此诀窍是确保每次写入文件时也写入元数据。您可能需要处理诸如写入失败、删除、重命名或移动文件时发生的情况(我知道,您说“从不”)。

    根据您的需要,您的解决方案可能会更简单,您可能会发现将数据存储在 HDFS(或 AWS S3)内的子目录中更加简单。也许如果您想存储 2015 年 12 月 1 日创建的源“foo”中的 DBF 文件和“bar”中的 XLS 文件,您可以简单地创建一个目录结构,如

    /2015/12/01/foo/dbf/myfile.dbf
    /2015/12/01/bar/xls/myexcel.xls
    

    此解决方案具有自我维护的优势——文件路径存储元数据,使其非常便携和简单,只需要一个 shell 脚本即可实现。

    我认为没有任何理由让解决方案变得比必要的复杂。 Hadoop 或 S3 都适用于长期、高持久性的存储和查询。我的公司发现,将有关文件的信息存储在 Hadoop(我们用于许多其他目的)中并将文件本身存储在 AWS S3 上要简单得多、更容易保护并且更便宜。

    【讨论】:

    • 感谢您的回答。我不想组织简单的文件存储,因为这只是第一步——之后我想为数据分析添加一些可能性。问题是我现在不能说,所有这些文件到底是什么)我可以说它们的一部分,但是整个系统相当古老、复杂并且充满了遗留代码。没有一个人知道它的所有数据源(甚至这个系统的所有组件)。因此,一个目的是计算所有传入数据并将其系统化。
    【解决方案2】:

    您可能想做各种各样的事情,每件事情都有自己的解决方案。如果超过 1 个用例与您相关,您可能希望并行实施多个解决方案。

    1。存储文件以供使用

    如果您想以一种可以高效提取(分发)的方式存储文件,解决方案很简单:将文件放在 hdfs 上

    2。存储信息以供使用

    如果您想使用信息,而不是存储文件,您应该有兴趣以一种可以有效获取信息的方式存储信息。这里的一般解决方案是:以无损方式解析文件并将其信息存储在数据库中

    您可能会发现将信息存储在(分区的)ORC 文件中可能会很好。您可以在 Pig 中使用 Pive、Pig 甚至 UDF(例如 python)来执行此操作。

    3。保留文件以备将来使用

    在这种情况下,您主要关心的是保存文件,而不是易于访问。这里推荐的解决方案是:使用适当的备份存储压缩文件

    请注意,hdfs 所做的复制是为了更有效地处理数据(和硬件问题)。仅将数据保存在 hdfs 上并不意味着它已备份。

    【讨论】:

    • 前两种情况是相关的。我计划从第一种方法开始,而不是转向第二种方法,这可能是可能的(例如,部分传入数据是扫描文档的图像)。
    猜你喜欢
    • 1970-01-01
    • 2019-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多