【问题标题】:Dealing with Master Data Updates in hadoop在 hadoop 中处理主数据更新
【发布时间】:2013-12-26 15:23:38
【问题描述】:

我已经开始了一个分析项目。用例是了解客户购买模式和数据源,如 Web 日志、关系数据库(包含产品主数据、客户主数据)。关系数据库团队,hadoop 团队是完全不同的。在架构讨论期间,讨论了主数据(产品、客户、)将是一次性加载,增量更新将是从 oracle 到 hdfs 的每日 sqoop,并且使用 Hive 需要生成当前视图(包含所有最新产品变化)。从产品详细信息开始。

  1. Oracle 端的产品主控大约为 10G。
  2. 每日增量从 5 MB 到 100 MB 不等。

根据我的理解,从长远来看,创建这样的小文件会对名称节点造成负担。

有人遇到过这样的解决方案,你是如何处理的?

【问题讨论】:

    标签: hadoop hive master-data-management


    【解决方案1】:

    我还没有发现任何问题。 如果您从一个大文件开始并每天添加 1 个文件,一年后您将得到大约 1000 个文件,这不是问题(至少对于名称节点而言不是)。
    尽管如此,无论数量多少,在 HDFS 中保存小文件都不是最佳选择。
    我建议您对此采取应用方法并在经过足够的时间后合并文件,例如:

    1. 在您的表(产品主)上创建每月分区,每天将新文件插入表中,当月结束后,插入覆盖数据回到同一分区。
    2. 如果数据断言不是简单地通过插入完成,而是存在更复杂的逻辑,则解决方案可能是创建主表,然后将增量数据复制到 HDFS 位置并在该位置创建外部表。
      view 中使用 union all 组合这两个表,并创建一个加载过程,尽可能将数据从 HDFS 加载到主表。

    如果您确实遇到关于太多小文件的名称节点争用,您可以阅读有关解决“小文件问题”here 的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-14
      • 1970-01-01
      • 2012-07-24
      • 2017-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-03
      相关资源
      最近更新 更多