本来是要复习考试的,但是看得那个什么编译原理的书就头大。。最近搜了一下hadoop的源码分析,在javaeye上面有一个blog写的不错:http://caibinbupt.iteye.com/blog/262412,毕竟是别人的,自己原来是看过hadoop源码但是没有自己总结过,现在再重新从头整理一下。
hadoop是apache就google提出来的map/reduce分布式计算框架的开源实现,hadoop包括以下子项目:
hdfs:分布式文件系统的具体实现,本来是基于一个名为bigtable的论文而开源实现的;
map/reduce:分布式计算框架;
hbase:一个支持结构化数据或者非结构化或者半结构化的数据的可扩展数据库数据;
zookeeper:用于应用程序中协调个节点配置信息及性能的框架;
等等等等。。。。还有很多具体的介绍就去apache上去看看:http://hadoop.apache.org/
当然,接触hadoop的时候大家看得最多的是map/reduce这个基于map/reduce的算法,所以,我也是从这个算法在hadoop中的实现开始了解其机制的,下面是上面那个blog中的一张关于map/reduce的流程图:
在hadoop的文档中有中文介绍,下面我关于wordcount的例子来解释一下map/reduce,wordcount中的代码分为3部分:map函数,reduce函数和main函数,想要了解hadoop的map/reduce计算机制,我先从main函数中的关于job配置开始(从官网上下载的hadoop包中的文档是0.18的,但是从0.21开始,包的结构就发生了很大改变,我这里就贴0.2+中的代码),wordcount中的main函数如下:
public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs();
if (otherArgs.length != 2) {
System.err.println("Usage: wordcount <in> <out>");
System.exit(2);
}
Job job = new Job(conf, "word count");
job.setJarByClass(WordCount.class);
job.setMapperClass(TokenizerMapper.class);
job.setCombinerClass(IntSumReducer.class);
job.setReducerClass(IntSumReducer.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
FileInputFormat.addInputPath(job, new Path(otherArgs[0]));
FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));
System.exit(job.waitForCompletion(true) ? 0 : 1);
}
首先是作业的配置信息:Configuration conf = new Configuration();在之前版本中配置信息都储存在Jobonf类中,而在现在的版本是Configuration中,在eclipse使用前者时会出现以过时警告。看看Configuration中到底有什么吧:
core-default.xml : Read-only defaults for hadoop.
core-site.xml: Site-specific configuration for a given hadoop installation.
Configutation中主要是提供关于hadoop的一些配置信息,如果没有指明,就从classpath中添加上面两个resource,就是你当初在机器上配置hadoop时所需要修改的fs.default.name等等之类的配置文件,比如文件缓冲块的大小,文件系统的端口号。其次是添加该作业到服务器有关配置,job是描述一个有关map/reduce操作的接口,这个作业是如何被处理的都从这个接口添加到其中,他会指名mapper,reducer,inputformat,outputformat,inputkeyclass等具体的作业信息。
分享到:
相关推荐
Hadoop的源码分析涉及对整个系统的拆解和理解,是一个复杂且细致的工作。通过对Hadoop源码的分析,开发者可以深入理解分布式系统的内部结构,掌握数据处理和存储的高级技巧,以及学习如何构建一个可靠、可扩展的...
这个"Hadoop源码分析视频下载"提供了一种深入理解Hadoop内部工作原理的途径,这对于开发者、系统管理员以及对大数据技术感兴趣的人来说是非常有价值的。接下来,我们将详细探讨Hadoop的核心组件、其设计哲学、源码...
Hadoop 源代码分析 Hadoop 是一个开源的分布式计算框架,由 Apache 基金会维护。Hadoop 的核心组件包括 HDFS(Hadoop Distributed File System)和 MapReduce。HDFS 是一个分布式文件系统,可以存储大量的数据,而 ...
总的来说,Hadoop源码分析是提升大数据处理技术深度的重要途径,涵盖的内容广泛且深入,包括分布式文件系统的设计原理、并行计算模型的实现、资源管理的优化策略等多个方面。通过学习和研究,你将能够构建起对Hadoop...
### Hadoop源码分析知识点概览 #### 一、Hadoop概述与背景 - **Google核心技术**:Hadoop的设计理念很大程度上受到了Google一系列核心技术的影响,包括Google File System (GFS)、BigTable以及MapReduce等。这些...
Hadoop源代码分析完整版.pdf
《Hadoop源码分析 第一章 Hadoop脚本》 Hadoop是大数据处理领域中的一个核心框架,它为海量数据的存储和计算提供了分布式解决方案。本文将深入剖析Hadoop脚本,带你理解其背后的实现机制,这对于理解Hadoop的工作...
在深入探讨Hadoop源码分析之前,我们先理解Hadoop的核心概念。Hadoop是一个开源的分布式计算框架,由Apache基金会开发,主要用于处理和存储大规模数据。它的主要组件包括HDFS(Hadoop Distributed File System)和...
"Hadoop源代码分析完整版" Hadoop作为一个开源的分布式计算框架,具有高可扩展性和高性能的特点。Hadoop的源代码分析可以分为多个部分,包括HDFS、MapReduce、YARN等。 首先,让我们了解Hadoop的架构。Hadoop的...
深入云计算:Hadoop源代码分析(修订版)
对于希望深入理解Hadoop的开发者来说,源码分析是不可或缺的一部分。本资源"**Hadoop源码分析.rar**"包含了丰富的资料,旨在帮助学习者更深入地了解Hadoop的工作原理和实现细节。 **MapReduce**是Hadoop的核心计算...
### Hadoop源码分析(client部分) #### Hadoop概述 Hadoop是一个开源的分布式存储与计算框架,由Apache基金会维护。它为用户提供了处理和存储海量数据的能力,并且能够运行在低成本的商品硬件集群上。Hadoop的...
《Hadoop源代码分析》是一本深入探讨Hadoop核心组件MapReduce的专著。Hadoop是Apache软件基金会的一个开源项目,旨在提供分布式存储和计算框架,以处理和存储大量数据。MapReduce是Hadoop的核心计算模型,它通过将大...
学习Hadoop源码过程中做的源码分析,共享一下,PPT中有我的邮箱,可以互相探讨。Hadoop源码分析(client端提交job到rm端)
7. **扩展性与插件机制**:Hadoop允许用户自定义InputFormat、OutputFormat、Partitioner和Reducer等,源码分析可以帮助我们理解这些接口的实现,以及如何为特定需求定制Hadoop组件。 8. **Hadoop与其他组件的集成*...