摘要:
1、Encapsulate Collection(封装集合) :把集合进行封装,只提供调用端需要的接口;有些时候并不需要把所有操作暴露给用户,只需要给用户需要的操作即可,做法就是封装。2、Move Method(移动方法) :即把方法放到合适的位置(通常指合适的类中)。如果一个方法经常被另外一个类使用时,或者该方法本身就不应该放在这个类里面,那么应该考虑将其移动到合适的类中3、Pull Up Method(提升方法):提升方法是指将一个很多继承类都要用到的方法提升到基类中,这样可以减少代码量,同时让类的结构更清晰,如果不是每个子类都有这个方法的话,可以考虑使用接口或者其他方式4、Push Do 阅读全文
摘要:
MapReduce是一种处理海量数据的并行编程模型和计算框架,用于对大数据及的并行计算。1、MapReduce基础1)MapReduce处理数据集过程,如下图:a)Map阶段:MapReduce 框架将任务的输入分割成固定大小的片段(splits),随后将每个split进一步分解成一批键值对。Hadoop为每个split创建一个Map任务用于执行用户自定义的map函数,并将对应split中的对作为输入,得到计算的中间结果.接着将中间结果按照K2进行排序,并将key值相同的value放在一起形成元组。最后再根据Key值的范围将这些元组进行分组,对应不同的Reduce任务。b)Reduce阶段:R 阅读全文
摘要:
1、HDFS设计前提与目标(1)硬件错误是常态而不是异常。 错误检测并快速自动恢复是HDFS最核心设计目标(2)流式数据访问。运行在HDFS上的应用主要是以流式数据读取为主,做批量处理而不是用户交互处理,所以HDFS更关注数据访问的高吞吐量。(3)大规模数据集。HDFS支持大文件存储,并能提供整体上高的数据传输宽带,能在一个集群里扩展到数百个节点。(4)简单一致性模型。HDFS的应用程序需要对文件实行一次性写、多次读的访问模式。文件一经创建、写入和关闭之后就不需要再更改了。(5)移动计算比移动数据更划算。在数据旁边执行操作效率会比较高,可以减少网络的拥塞和提高系统的吞吐量。HDFS提供了接口, 阅读全文