没有合适的资源?快使用搜索试试~ 我知道了~
Hadoop-海量文件的分布式计算处理方案.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 27 浏览量
2023-10-25
10:48:21
上传
评论
收藏 24KB DOCX 举报
温馨提示
试读
3页
Hadoop 是Google MapReduce的一个Java实现。MapReduce是一种简化的分布式编程模式,让程序自动分布到一个由普通机器组成的超大集群上并发执行。就如同java程序员可以 不考虑内存泄露一样, MapReduce的run-time系统会解决输入数据的分布细节,跨越机器集群的程序执行调度,处理机器的失效,并且管理机器之间的通讯请求。这样的 模式允许程序员可以不需要有什么并发处理或者分布式系统的经验,就可以处理超大的分布式系统得资源。
资源推荐
资源详情
资源评论
Hadoop-海量文件的分布式计算处理方案
Hadoop 是Google MapReduce的一个Java实现。MapReduce是一种简化的分布式编程模式,让程序自动分布到一个由
普通机器组成的超大集群上并发执行。就如同java程序员可以 不考虑内存泄露一样, MapReduce的run-time系统会
解决输入数据的分布细节,跨越机器集群的程序执行调度,处理机器的失效,并且管理机器之间的通讯请求。这样
的 模式允许程序员可以不需要有什么并发处理或者分布式系统的经验,就可以处理超大的分布式系统得资源。
一、概论
作为 Hadoop 程序员,他要做的事情就是:
1、定义 Mapper,处理输入的 Key-Value 对,输出中间结果。
2、定义 Reducer,可选,对中间结果进行规约,输出最终结果。
3、定义 InputFormat 和 OutputFormat,可选,InputFormat 将每行输入文件的内容转换为 Java 类供 Mapper 函
数使用,不定义时默认为 String。
4、定义 main 函数,在里面定义一个 Job 并运行它。
然后的事情就交给系统了。
1.基本概念:Hadoop 的 HDFS 实现了 google 的 GFS 文件系统,NameNode 作为文件系统的负责调度运行在 master,
DataNode 运行在每个机器上。同时 Hadoop 实现了 Google 的MapReduce,JobTracker 作为 MapReduce 的总调度
运行在 master,TaskTracker 则运行在每个机器上执行 Task。
2.main()函数,创建 JobConf,定义 Mapper,Reducer,Input/OutputFormat 和输入输出文件目录,最后把 Job 提
交給 JobTracker,等待 Job 结束。
3.JobTracker,创建一个 InputFormat 的实例,调用它的 getSplits()方法,把输入目录的文件拆分成 FileSplist
作为 Mapper task 的输入,生成 Mapper task 加入 Queue。
4.TaskTracker 向 JobTracker 索求下一个 Map/Reduce。
Mapper Task 先从 InputFormat 创建 RecordReader,循环读入 FileSplits 的内容生成 Key与 Value,传给 Mapper
函数,处理完后中间结果写成 SequenceFile.
Reducer Task 从运行 Mapper 的 TaskTracker 的 Jetty 上使用 http 协议获取所需的中间内容(33% ),Sort/M erge
后(66%) ,执行 Reducer 函数,最后按照 OutputFormat 写入结果目录。
TaskTracker 每10秒向 JobTracker 报告一次运行情况,每完成一个 Task10秒后,就会向 JobTracker 索求下一个
Task。
Nutch 项目的全部数据处理都构建在 Hadoop 之上 , 详见 Scalable
Computing
with Hadoop 。
二、程序员编写的代码
我们做一个简单的分布式的 Grep,简单对输入文件进行逐行的正则匹配,如果符合就将该行打印到输出文件。因为
是简单的全部输出,所以我们只要写 Mapper 函数,不用写Reducer 函数,也不用定义 Input/Output Format。
package demo.hadoop
public class HadoopGrep{
public static class RegMapper extends MapReduceBase implements Mapper {
private Pattern pattern;
public void configure(JobConf job){
pattern = Pattern.compile(job.get( " mapred.mapper.regex " ));
}
public void map(WritableComparable key, Writable value, OutputCollector output, Reporter reporter)throws
IOException {
String text = ((Text) value).toString();
Matcher matcher = pattern.matcher(text);
if(matcher.find()) {
资源评论
小小哭包
- 粉丝: 1899
- 资源: 3854
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功