摘要:http://www.csdn.net/article/a/2012-05-25/2806036
阅读全文
摘要:http://hadoopilluminated.com/hadoop_book/chapter-MapReduce_Internals.html
阅读全文
摘要:学hadoop有些时日了,一直都是把写好的Job push到cluster中的一个Node上,然后再来hadoop jar XXX.jar YYY arg1 arg2一直都用这个命令来提交Job。如果我们要开发hadoop的相关APP怎么办?那应该要远程向JobTracker提交Job才对呀。既然本地的Java代码是可以读写远程HDFS的,那应该也能远程提交代码。有什么方法呢?在经过一番google之后,似乎找到了一些方法:整个过程如上图所示。准备工作:确保你的hadoop不是localhost,也就是说你的core-site.xml 等等那些文件填写的是你的真实IP,你可以从另外一台机器上访
阅读全文
摘要:如果想利用mapreduce并行计算的话,不能指望所有都是hadoop来跟你做,hadoop不可能跟你做很多事情。看下面一个问题:x1 / 1 + x2 / 2 + x3 / 3 + …… + xn / n = 1求出当n = 10时的所有正整数解。先确定我们要采用的办法,就是搜索穷举。搜出n个未知数的解。例如我们想用四个mapper来执行,就将输入文件划分为四个split就行了。例如,输入文件为: 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 910 10这10个值,为x1可能的10个值。也就是说,我们将搜索空间,划分为这10个,然后来用mapper来并行计算。但是,如
阅读全文
摘要:这两天一直在研究用hadoop进行并行计算的事情,既然要并行,就逃不过将大问题划分成小问题这一步。所以hadoop里的InputFormat是非常关键的。通常有把输入文件按单个文件一个split来划分 ,也有按记录的行来划分。下面我介绍按行划分的代码,这里所谓的按行划分,就是将输入行按每N行划分为一个split。 1 package seven.ili; 2 3 import org.apache.hadoop.classification.InterfaceAudience; 4 import org.apache.hadoop.conf.Configuration; 5 import o.
阅读全文
摘要:1 package seven.ili; 2 3 import org.apache.hadoop.conf.Configuration; 4 import org.apache.hadoop.fs.BlockLocation; 5 import org.apache.hadoop.fs.FileStatus; 6 import org.apache.hadoop.fs.FileSystem; 7 import org.apache.hadoop.fs.Path; 8 import org.apache.hadoop.io.IntWritable; 9 import or...
阅读全文
摘要:《hadoop in action》中有一句话:“当reducer任务接收来自各个mapper的输出时,它按照键/值对中的键对输入数据进行排序,并将相同键的值归并。然后调用reduce()函数”,也就是说,下面这幅图,shuffer and sort是在各个reduce task上执行的,执行完后调用reduce()函数。其实这个图还不是很完整,最上端应该是InputFormat(InputSplit 和 RecordReader )这个负责将整个输入划分,分发给每一个mapper。InputSplit的数目,也就是《hadoop in action》中文书中所译的输入分片,分片的数目是等于m
阅读全文
摘要:一直没搞清cloudera和hadoop到底是个什么关系,于是百度了一下。看了一些资料,下面简单说明一下。有人说cloudera和hadoop的关系就如,ubuntu和linux的关系。而cloudera也正是想成为hadoop的发行版的提供者,实际应用的主导者。众所周知,hadoop需要在集群上配置、安装,在使用过程中还需要我们的管理。Hadoop安装、部署、管理的难度非常大,这使用很多用户对Hadoop望而却步,好在这种情况不久就得到了改善,Cloudera提供了非常简单的Hadoop的发布版本,能够十分方便地对Hadoop进行安装、部署和管理,这导致目前大约有75%的Hadoop新用户使
阅读全文
摘要:分布式文件系统虚拟目录及命名空间的实现方法http://www.doc88.com/p-717876372220.html可以读一下,讲得还算清楚
阅读全文
摘要:有时候,当我们在使用hadoop处理数据时,我们想知道mapper所处理的这个file chunk(文件块)在hdfs中的文件名是什么。将下面的代码加入你的mapper中,可以得到当前mapper所处理输入文件的文件名:1 FileSplit fileSplit = (FileSplit)context.getInputSplit();2 String filename = fileSplit.getPath().getName();3 System.out.println("File name "+filename);4 System.out.println("
阅读全文
摘要:hadoop的文件系统在程序代码里面用起来就如我们本地的文件系统一样,可以从里面读取文件,存入文件,等等。下面我们来演示一个从hdfs中的一个目录里,读取这个目录下所有文件的文件名的程序。 1 import org.apache.hadoop.conf.Configuration; 2 import org.apache.hadoop.fs.*; 3 import org.apache.hadoop.mapreduce.lib.input.FileSplit; 4 import org.junit.Test; 5 6 import java.io.IOException; 7 import .
阅读全文
摘要:1 package seven.ili.patent; 2 3 import java.io.IOException; 4 5 import org.apache.hadoop.conf.Configuration; 6 import org.apache.hadoop.conf.Configured; 7 import org.apache.hadoop.fs.Path; 8 import org.apache.hadoop.io.IntWritable; 9 import org.apache.hadoop.io.LongWritable;10 import org.apache.h...
阅读全文
摘要:数据块:HDFS的块大小为64MB,HDFS上的文件被划分为多个分块,作为独立的存储单元。但与其他文件系统不同的是,HDFS中小于一个块大小的文件不会占据整个块的空间。一个文件的大小可以大于集群中任何一个磁盘的容量,其他所有块不需要存储在同一个磁盘上。用 hadoop fsck / -files -blocks 可以查看整个文件系统中各文件的块组成情况。Namenode 与 Datanode:HDFS的模式是“管理者-工作者”模式,namenode就是管理者,datanode就是工作者。namenode手里有文件系统的整个命名空间,也就相当于有一个“管理账簿”。而datanode就是真正的工作
阅读全文
摘要:网上搜索到的那个top K问题的解法,我觉得有些地方都没有讲明白。因为我们要找出top K, 那么就应该显式的指明the num of reduce tasks is one.不然我还真不好理解为什么可以得到top K的结果。这里顺便提及一下,一个map task就是一个进程。有几个map task就有几个中间文件,有几个reduce task就有几个最终输出文件。好了,这就好理解了,我们要找的top K 是指的全局的前K条数据,那么不管中间有几个map, reduce最终只能有一个reduce来汇总数据,输出top K。下面写出思路和代码:1. Mappers使用默认的mapper数据,一个
阅读全文
摘要:If you need to split your Map Reduce jar file in two jobs in order to get two different output file, one from each reducers of the two jobs.I mean that the first job has to produce an output file that will be the input for the second job in chain.I will provide some ways following to solve this prob
阅读全文
摘要:为什么有时候我们写的好好的map(k1, v1, k2, v2) ——> reduce(k2,list(v2), k3, v3)为什么就是出现Type mismatch in value from map这样的错误呢?为什么呢?对于大多数的mapreduce程序而言,都是基于模板来写的,很少有人从一个空白来写出mapreduce程序,没有这个必要。问题就出在你的这个模板上,你的模板上可能有这么一句:1 job.setCombinerClass(Reduce.class); 这样一来数据流就变了,变成了map(k1, v1, k2, v2) ——> combiner(k2,list(
阅读全文
摘要:hadoop概述,讲清楚一些基础问题:http://www.blogjava.net/killme2008/archive/2008/06/05/206043.html http://os.51cto.com/art/201211/364374.htm推荐这个博客:http://www.cnblogs.com/forfuture1978/category/300670.html还有这个:http://www.coder4.com/archives/category/cloud_computingITEYE上的一个杭州牛人的博客:http://langyu.iteye.com/blog/154.
阅读全文