处理hadoop中的主数据更新

时间:2013-12-26 15:23:38

标签: hadoop hive master-data-management

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

  1. Oracle方面的产品主数据约为10G。
  2. 每日增量从5 MB到100 MB不等。
  3. 根据我的理解,从长远来看,创建这样的小文件将是名称节点上的负载。

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

1 个答案:

答案 0 :(得分:1)

我还没有看到任何问题。 如果您从一个大文件开始并且每天添加1个文件,那么一年之后会产生~1000个文件,这不是问题(至少不是名称节点)。
不过,无论数量多少,在HDFS中保存小文件都不是最佳选择 我建议你采用一种适用的方法,并在经过足够的时间后合并文件,例如:

  1. 在您的表(产品主数据)上创建每月分区,每天将新文件插入表中,在月份结束后,插入将数据重写回同一分区。
  2. 如果数据断言不是简单地通过插入完成,而是存在更复杂的逻辑,则解决方案可能是创建主表,然后将增量数据复制到HDFS位置并在该位置创建外部表。 /> 在union all中使用view组合这两个表并创建一个加载过程,以便在可能的情况下从HDFS到主表一段时间加载数据。
  3. 如果您确实遇到有关太多小文件的名称节点争用,您可以阅读有关解决“小文件问题”here的方法。