我已经开始进行分析项目。用例是要了解客户的购买模式和数据源,例如Web日志,关系数据库(包含产品主数据,客户主数据)。关系数据库团队,Hadoop团队完全不同。在体系结构讨论期间,讨论了主数据(产品,客户,)是一次性负载,增量更新是从oracle到hdfs的每日更新,并且使用Hive需要生成当前 View (包含所有最新产品)变化)。从产品详细信息开始。
根据我的理解,从长远来看,创建此类小文件将是对名称节点的负担。
当有人遇到这种解决方案时,您将如何处理?
最佳答案
我还没有发现任何问题。
如果您从一个大文件开始,每天添加1个文件,那么一年后您将获得〜1000个文件,这不是问题(至少对于name节点而言不是问题)。
尽管如此,无论数量多少,在HDFS中保存小文件并不是最佳选择。
我建议您采用一种适用的方法,并在经过足够的时间后合并文件,例如:
在
union all
中使用view
将这两个表组合在一起,并创建一个加载过程,以便在可能的情况下偶尔将数据从HDFS加载到主表中。 如果确实遇到有关太多小文件的名称节点争用,则可以阅读有关解决“小文件问题” here的方法。