搭建Hadoop0.20.2源码学习环境

2024-09-02 05:08

本文主要是介绍搭建Hadoop0.20.2源码学习环境,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

转载:http://www.cnblogs.com/zjfstudio/p/3919331.html

源码环境是建立在已经安装了hadoop的前提下。

Hadoop的主要代码是用java编写的,所以这里就选用eclipse作为环境。

Hadoop目录下,本身就可以为作eclipse的一个工程来操作,但这里我不想,我想自己来建一个工程,然后把它的代码自己添加进来。

创建一普通的java工程:

点下一步,输入工程名:HadoopSrcStudy,然后再下一步

然后一路下一步,再Finish完成:

 

接下来,添加源码了,打开hadoop下面的src文件夹,复制哪些呢? 我们先学学核心的吧,core,hdfs,marped这三个目录,复制到工程里面。(如何复制? 先在选中三个文件夹,然后回到eclipse中,选中HadoopSrcStudy工程,然后直接按一下ctrl+v)

好了,进来了,但现在这三个文件夹还不能当成源码进行编译,所以我们右健工程属性:

然后选中Java Build Path,在右边的tab页选中Source,然后点Add Folder:

在弹出页面中,选中core、hdfs、mapred三个目录,然后点两次OK,完成设置。

然后再看工程,这三个目录已经跟src文件夹的图标一样了,所以里面的java程序也就当成了源码,进行了编译,但发现2K多个Error。怎么回事?难不成还要引用其他的源码文件? 答案是少jar包。

所以我们先在源码目录下建一个jar的文件夹。然后将以下目录下的jar文件都复制进来。

hadoop-0.20.2/build/ivy/lib/Hadoop/common/*.jar

hadoop-0.20.2/lib/jsp-2.1/*.jar

hadoop-0.20.2/lib/kfs-0.2.2.jar

hadoop-0.20.2/lib/hsqldb-1.8.0.10.jar

(如果找不到build文件夹,是因为还没有编译源码,在作者的文章中找到了ant命令,用于编译hadoop源码:

~/hadoop-0.20.2$ant

~/hadoop-0.20.2$ant jar

~/hadoop-0.20.2$ant examples

在编译完后,我们发现,目录中多了一个build文件夹。这个文件夹下,我们发现有大量的子文件夹,再深入看,可以找到了N多个.class文件。那这个正是java程序的编译产出物。)

然后右健工程,选属性页,在BuildPath页,选Libraiers:

点击Add Jars:

选择jar文件夹下所有的jar文件,然后点两次OK。

这些发现bug立即减少:

但还是有,而且都只是这个RccTask文件里的,所以暂时先排掉吧,对着该文件右健菜单Build Path->Exclude即可。

好了,此时一个bug也没有了。

然后将hadoop-0.20.2目录下conf文件夹下的core-site.xml、hdfs-site.xml、mapred-site.xml、log4j.properties这几个文件,放在src目录下,

将hadoop-0.20.2目录下src文件夹下的,webapps复制到src目录下。

在eclipse中,src目录下建一个package,名为:org.apache.hadoop,然后将hadoop-0.20.2\build\src\org\apahe\hadoop\package-info.java文件,复制到该package下。目录如下:

这样源码调试环境就OK了。

 

让Hadoop在eclipse中运行起来

源码已经加入,并且已经编译通过了,接下来得在eclipse中跑一下,试下是否能正常跑起来。

这里我们尝试,用命令行中执行namenode,然后用eclipse运行datanode,然后再开一个命令行,用fs命令,是否能查到之前的内容。

1.打开命令行,进入hadoop-0.20.2目录,执行bin/hadoop namenode

2.在eclipse中,进入hdfs目录,再进入org.apache.hadoop.hdfs.server.datanode目录,打开DataNode.java文件,然后点上面的运行,然后就可以看到在eclipse中,正常的输出信息,且没有错误。该信息,可以在log文件夹下,找到datanode的日志,其内容是一样的。 同时在前面的命令行窗体中,可以看到namenode程序中收到一个datanode的接入请求。

3.再打开一个命令行窗口,进入hadoop-0.20.2目录bin/hadoop fs –ls,就可以看到输出了文件列表。

4.然后再输入命令bin/hadoop fs -cat out/* 就可以看到之前程序运行生成在out目录下的数据了。

如果上面两个命令都执行成功,说明namenode和在eclipse中运行的datanode都起作用了。可以再观察下,当我们在执行cat命令时,在eclipse中的输出框中,看到有新的响应输出,说明它工作了。

同样,我们还可以反过来,在eclipse中运行namenode,在命令行中运行datanode。同样的效果。

为了可以看到更多的调试日志输出,我们还可以打开src下的log4j.properties文件,在第二行中的INFO改成DEBUG,这样输出的内容会更详细。

 

到此为止我们的源码学习环境已经搭建好了,可以方便的在eclipse中调试hadoop代码,甚至来修改它。


这篇关于搭建Hadoop0.20.2源码学习环境的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1129076

相关文章

IntelliJ IDEA 中配置 Spring MVC 环境的详细步骤及问题解决

《IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决》:本文主要介绍IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决,本文分步骤结合实例给大... 目录步骤 1:创建 Maven Web 项目步骤 2:添加 Spring MVC 依赖1、保存后执行2、将新的依赖

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen

Java 正则表达式URL 匹配与源码全解析

《Java正则表达式URL匹配与源码全解析》在Web应用开发中,我们经常需要对URL进行格式验证,今天我们结合Java的Pattern和Matcher类,深入理解正则表达式在实际应用中... 目录1.正则表达式分解:2. 添加域名匹配 (2)3. 添加路径和查询参数匹配 (3) 4. 最终优化版本5.设计思

Python如何自动生成环境依赖包requirements

《Python如何自动生成环境依赖包requirements》:本文主要介绍Python如何自动生成环境依赖包requirements问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录生成当前 python 环境 安装的所有依赖包1、命令2、常见问题只生成当前 项目 的所有依赖包1、

Redis在windows环境下如何启动

《Redis在windows环境下如何启动》:本文主要介绍Redis在windows环境下如何启动的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Redis在Windows环境下启动1.在redis的安装目录下2.输入·redis-server.exe

Pytest多环境切换的常见方法介绍

《Pytest多环境切换的常见方法介绍》Pytest作为自动化测试的主力框架,如何实现本地、测试、预发、生产环境的灵活切换,本文总结了通过pytest框架实现自由环境切换的几种方法,大家可以根据需要进... 目录1.pytest-base-url2.hooks函数3.yml和fixture结论你是否也遇到过

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

浅谈配置MMCV环境,解决报错,版本不匹配问题

《浅谈配置MMCV环境,解决报错,版本不匹配问题》:本文主要介绍浅谈配置MMCV环境,解决报错,版本不匹配问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录配置MMCV环境,解决报错,版本不匹配错误示例正确示例总结配置MMCV环境,解决报错,版本不匹配在col

Java调用C++动态库超详细步骤讲解(附源码)

《Java调用C++动态库超详细步骤讲解(附源码)》C语言因其高效和接近硬件的特性,时常会被用在性能要求较高或者需要直接操作硬件的场合,:本文主要介绍Java调用C++动态库的相关资料,文中通过代... 目录一、直接调用C++库第一步:动态库生成(vs2017+qt5.12.10)第二步:Java调用C++

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.