导航

随笔分类 -  hadoop

摘要:小文件指的是那些size比HDFS 的block size(默认64M)小的多的文件。如果在HDFS中存储小文件,那么在HDFS中肯定会含有许许多多这样的小文件(不然就不会用hadoop了)。而HDFS的问题在于无法很有效的处理大量小文件。任何一个文件,目录和block,在HDFS中都会被表示为一个object存储在namenode的内存中,没一个object占用150 bytes的内存空间。所以,如果有10million个文件,没一个文件对应一个block,那么就将要消耗namenode 3G的内存来保存这些block的信息。如果规模再大一些,那么将会超出现阶段计算机硬件所能满足的极限。不仅 阅读全文

posted @ 2011-12-06 09:11 清风无尘 阅读(217) 评论(0) 推荐(0)

摘要:在上一篇文章中我们讲解了一个基本的MapReduce作业由那些基本组件组成,从高层来看,所有的组件在一起工作时如下图所示:图4.4高层MapReduce工作流水线 MapReduce的输入一般来自HDFS中的文件,这些文件分布存储在集群内的节点上。运行一个MapReduce程序会在集群的许多节点甚至所有节点上运行mapping任务,每一个mapping任务都是平等的:mappers没有特定“标识物”与其关联。因此,任意的mapper都可以处理任意的输入文件。每一个mapper会加载一些存储在运行节点本地的文件集来进行处理(译注:这是移动计算,把计算移动到数据所在节点,可以避免额外的数据传输开. 阅读全文

posted @ 2011-11-23 08:25 清风无尘 阅读(309) 评论(0) 推荐(0)

摘要:函数式编程概念 MapReduce程序是设计用来并行计算大规模海量数据的,这需要把工作流分划到大量的机器上去,如果组件(component)之间可以任意的共享数据,那这个模型就没法扩展到大规模集群上去了(数百或数千个节点),用来保持节点间数据的同步而产生的通信开销会使得系统在大规模集群上变得不可靠和效率低下。 实际上,所有在MapReduce上的数据元素都是不可变的,这就意味着它们不能够被更新。如果在一个mapping任务中你改变了一个输入键值对,它并不会反馈到输入文件;节点间的通信只在产生新的输出键值对((key,value)pairs)时发生,Hadoop系统会把这些输出传到下一个... 阅读全文

posted @ 2011-11-20 15:25 清风无尘 阅读(347) 评论(0) 推荐(0)

摘要:1.1 HDFS结构图1.数据块Block:典型的Linux的数据块是4M,HDFS的默认数据块是64M。一般存在3个备份。2.索引节点INodeFile: LinuxFS每个文件以及目录都是由一个INode代表。中HDFS,INodeFile是目录树的单元,HDFS的目录树是在INode的集合上生成的。分为两种:1)指向一组Block,没有子INodeFile。2)指向一组INodeFile。3.目录项INodeDirectory:按照参考论文[1]来看,HDFS是没有目录项的。具体差别待补充。 HDFS设计的侧重点:1)节约NameNode的内存空间,HDFS没有Dentry。2)节约Na 阅读全文

posted @ 2011-11-20 15:06 清风无尘 阅读(607) 评论(0) 推荐(0)

摘要:1.什么是小文件 小文件指的是那些size比HDFS的block size(默认64M)小的多的文件。如果在HDFS中存储小文件,那么在HDFS中肯定会含有许许多多这样的小文件(不然就不会用hadoop了)。而HDFS的问题在于无法很有效的处理大量小文件。 任何一个文件,目录和block,在HDFS中都会被表示为一个object存储在namenode的内存中,每一个object占用150 bytes的内存空间。所以,如果有10million个文件,没一个文件对应一个block,那么就将要消耗namenode 3G的内存来保存这些block的信息。如果规模再大一些,那么将会超出现阶段计算机硬.. 阅读全文

posted @ 2011-11-20 15:04 清风无尘 阅读(461) 评论(0) 推荐(0)