Hadoop学习笔记(10) ——搭建源码学习环境

Hadoop学习笔记(10)

——搭建源码学习环境

上一章中,我们对整个hadoop的目录及源码目录有了一个初步的了解,接下来计划深入学习一下这头神象作品了。但是看代码用什么,难不成gedit?,单步调试呢? 看程序不能调那多痛苦啊,想看跟踪一下变量,想看一下执行路径都难。

所以这里,我们得把这个调试环境搭建起来。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

然后右健工程,选属性页,在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代码,甚至来修改它。

好了~~至此,第一季收工。 让思维飞一会儿,等后面看了些hadoop源码后,再来分享。 到时还会保持一向的处理方式:从简单入手。 程序分析就会main函数入手。

Hadoop学习笔记(10) ——搭建源码学习环境

时间: 2024-10-03 13:47:13

Hadoop学习笔记(10) ——搭建源码学习环境的相关文章

memcached学习笔记——存储命令源码分析下篇

上一篇回顾:<memcached学习笔记——存储命令源码分析上篇>通过分析memcached的存储命令源码的过程,了解了memcached如何解析文本命令和mencached的内存管理机制. 本文是延续上一篇,继续分析存储命令的源码.接上一篇内存分配成功后,本文主要讲解:1.memcached存储方式:2.add和set命令的区别. memcached存储方式 哈希表(HashTable) 哈希表在实践中使用的非常广泛,例如编译器通常会维护的一个符号表来保存标记,很多高级语言中也显式的支持哈希

memcached学习笔记——存储命令源码分析上

原创文章,转载请标明,谢谢. 上一篇分析过memcached的连接模型,了解memcached是如何高效处理客户端连接,这一篇分析memcached源码中的process_update_command函数,探究memcached客户端的set命令,解读memcached是如何解析客户端文本命令,剖析memcached的内存管理,LRU算法是如何工作等等. 解析客户端文本命令 客户端向memcached server发出set操作,memcached server读取客户端的命令,客户端的连接状态

Egret 学习笔记 h5牛牛源码 h5牛牛源码搭建教程

1.纹理集实际上就是将一些零碎的小图放到一张大图当中.游戏中也经常使用到纹理集.使用纹理集的好处很多,我们通过将大量的图片拼合为一张图片从而减少网络请求,原先加载数次的图片资源现在加载一次即可.同时,在引擎渲染的时候也会减少IO读取,从而提高h5牛牛源码性能.h5牛牛源码Q 2171793408     http://wowotouba.com/h52.只要发生事件,Flash就会调度事件对象.如果事件目标不在显示列表中,则Flash Player或AIR将事件对象直接调度到事件目标.例如,Fl

iScroll学习笔记2--浅读源码

iscroll的架子是这样的 (function (window, document, Math){ var utils = (function (){ var me = {}; // 扩展一些常用的工具方法为me的方法 return me; }()); function IScroll(el, options){ // 初始化一些属性和状态 } IScroll.prototype = { constructor: IScroll, // 主体方法都在这里 } }(window, documen

Python爬虫框架Scrapy 学习笔记 7------- scrapy.Item源码剖析

在前面的example中,我们知道定义一个Item类很简单,只要继承scrapy.Item,然后添加几个类型为scrapy.Field的对象作为类属性,就像下面这样 import scrapy class Product(scrapy.Item):     name = scrapy.Field()     price = scrapy.Field()     stock = scrapy.Field()     last_updated = scrapy.Field(serializer=st

CentOS 7运维管理笔记(10)----MySQL源码安装

MySQL可以支持多种平台,如Windows,UNIX,FreeBSD或其他Linux系统.本篇随笔记录在CentOS 7 上使用源码安装MySQL的过程. 1.下载源码 选择使用北理工的镜像文件: 在CentOS 7 中输入如下命令: [[email protected]:~/Downloads] # wget http://mirror.bit.edu.cn/mysql/Downloads/MySQL-5.6/mysql-5.6.31.tar.gz 2.解压mysql源码压缩文件,并更新软件

《一个操作系统的实现》学习笔记(一) bochs源码安装及配置

前言:本机环境ubuntu 14.04 bochs 2.4.5 一.下载 官网 http://bochs.sourceforge.net/ 二.安装 1.将下载好的压缩包解压并进入该目录 tar vxzf bochs-2.4.5.tar.gz cd bochs-2.4.5 2.安装编译程序依赖的包 sudo apt-get install build-essential 3.检测环境,打开调试功能的开关 ./configure --enable-debugger --enable-disasm

传播智客学习笔记--L24 网页源码查看和添加滚动条

添加滚动条 1 <ScrollView 2 android:layout_width="wrap_content" 3 android:layout_height="wrap_content" 4 > 5 <TextView 6 android:id="@+id/html" 7 android:layout_width="wrap_content" 8 android:layout_height="

使用shell脚本搭建源码LAMP环境

#!/bin/bash #auto install LAMP #by csy 2015-11-07 #Httpd define path variable A_FILES=apr-1.5.2.tar.gz A_FILES_DIR=apr-1.5.2 A_URL=http://mirrors.cnnic.cn/apache//apr/ A_PREFIX=/usr/local/apr AU_FILES=apr-util-1.5.4.tar.gz AU_FILES_DIR=apr-util-1.5.4