宇文氏 发表于 2016-12-11 10:49:04

Hadoop的DistributedFileSystem改造 设计模式的威力

  最近在对HDFS对DistribuitedFileSystem进行改造,目标是实现一个自己定制的DFS。
  显而易见,大概会有以下几种构思:
  一是完全实现一个新的DFS,显然难度也太大,也等于是自己在重造车轮,显然不靠谱;
  二是修改现有的DFS,在其中加入各种判断和分支,这也显然不靠谱;
  最后选择了写一个包装器,实现的是原有的FileSystem的接口,然后在其中包含DitstributedFileSytstem
  的类对象,然后根据实际的需求,对这个类对象进行各种操作。
  使用的时候,将原有的hadoop-site.xml的fs.hdfs.impl改成这个类即可,
  当系统对FileSystem实例化的时候将自动实例话这个类,相当的方便,因此在一定程度上做到类插件化的效果,同时也能保证完全不影响任何的原有的代码。
  

  其实这个做法与最近了解到的其他在使用hadoop的大公司以及hadoop社区的做法十分类似,即尽量在原有代码的外围做各种的包装,而非对原有代码进行修改,特别是针对一些新功能或新设计,而非涉及到底层效率或原有框架的修改;
  这样做的好处十分明显,一方面减少了对原有代码的影响,避免出现意料之外的状况;另一方面也使得各种新功能变成可配置的选项,这也是轻量化的一种。
  

  做了半天标题party,其实上面说的就是设计模式中的适配器模式。
  引用《Head First设计模式》中的定义:
  适配器模式将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。
  

  一句话:设计模式威武啊。
页: [1]
查看完整版本: Hadoop的DistributedFileSystem改造 设计模式的威力