搭建Hadoop源代码学习环境

hadoop文件目录相关

前面的文章把Hadoop算是简单的入门,下载的源码,写了HelloWorld,简要分析了其编程要点,然后也编了个较复杂的示例。接下来先看看其源码,研究下如何实现的。

研究源码,那我们就来先从整体上看一下Hadoop-0.20.2的目录:

这个是刚下完代码后,目录列表中的内容


目录/文件


说明


bin


下面存放着可执行的sh命名,所有操作都在这里


conf


配置文件所在目录


ivy


Apache Ivy是专门用来管理项目的jar包依赖的,这个是ivy的主要目录


lib


引用的库文件目录,里面存放用到的jar包


src


这个里面就是主要的源码了


build.xml


用于编译的配置文件。 编译我们用的是ant


CHANGES.txt


文本文件,记录着本版本的变更历史


ivy.xml


Ivy的配置文件


LICENSE.txt


文件本文件


NOTICE.txt


文本文件,记录着需要注意的地方


README.txt


说明文件。

进入src目录,可以看到如下图所示内容:

搭建hadoop源码学习环境

创建一普通的java工程:

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

然后全部默认下一步,再Finish完成:

接下来,添加源码了,打开hadoop下面的src文件夹,将core,hdfs,marped这三个目录,复制到工程里面。(先在选中三个文件夹ctrl+c,然后回到eclipse中,选中HadoopSrcStudy工程,然后直接按一下ctrl+v)

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

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

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

在源码目录下建一个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。

RccTask文件里还存在bug:

对着该文件右健菜单Build Path->Exclude即可。

然后将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下。目录如下:

这样源码调试环境完成。

让Hadoop在eclipse中运行起来

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

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

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

出现如下错误:

14/12/15 17:31:47 INFO datanode.DataNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting DataNode
STARTUP_MSG: host = ubuntu/127.0.1.1
STARTUP_MSG: args = []
STARTUP_MSG: version = 0.20.2
STARTUP_MSG: build = -r ; compiled by ‘wu‘ on Sun Nov 30 07:50:30 PST 2014
************************************************************/
14/12/15 17:31:49 INFO ipc.Client: Retrying connect to server: localhost/127.0.0.1:9000. Already tried 0 time(s).
14/12/15 17:31:50 INFO ipc.Client: Retrying connect to server: localhost/127.0.0.1:9000. Already tried 1 time(s).
14/12/15 17:31:51 INFO ipc.Client: Retrying connect to server: localhost/127.0.0.1:9000. Already tried 2 time(s).
14/12/15 17:31:52 INFO ipc.Client: Retrying connect to server: localhost/127.0.0.1:9000. Already tried 3 time(s).
14/12/15 17:31:53 INFO ipc.Client: Retrying connect to server: localhost/127.0.0.1:9000. Already tried 4 time(s).
14/12/15 17:31:54 INFO ipc.Client: Retrying connect to server: localhost/127.0.0.1:9000. Already tried 5 time(s).
14/12/15 17:31:55 INFO ipc.Client: Retrying connect to server: localhost/127.0.0.1:9000. Already tried 6 time(s).

终端输入命令:

bin/start-all.sh

控制台正常输出:

14/12/15 17:34:25 INFO datanode.DataNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting DataNode
STARTUP_MSG: host = ubuntu/127.0.1.1
STARTUP_MSG: args = []
STARTUP_MSG: version = 0.20.2
STARTUP_MSG: build = -r ; compiled by ‘wu‘ on Sun Nov 30 07:50:30 PST 2014
************************************************************/
14/12/15 17:34:25 INFO common.Storage: Storage directory /tmp/hadoop-wu/dfs/data is not formatted.
14/12/15 17:34:25 INFO common.Storage: Formatting ...
14/12/15 17:34:26 INFO datanode.DataNode: Registered FSDatasetStatusMBean
14/12/15 17:34:26 INFO datanode.DataNode: Opened info server at 50010
14/12/15 17:34:26 INFO datanode.DataNode: Balancing bandwith is 1048576 bytes/s
14/12/15 17:34:26 INFO mortbay.log: Logging to org.slf4j.impl.Log4jLoggerAdapter(org.mortbay.log) via org.mortbay.log.Slf4jLog
14/12/15 17:34:26 INFO http.HttpServer: Port returned by webServer.getConnectors()[0].getLocalPort() before open() is -1. Opening the listener on 50075
14/12/15 17:34:26 INFO http.HttpServer: listener.getLocalPort() returned 50075 webServer.getConnectors()[0].getLocalPort() returned 50075
14/12/15 17:34:26 INFO http.HttpServer: Jetty bound to port 50075
14/12/15 17:34:26 INFO mortbay.log: jetty-6.1.14
14/12/15 17:34:33 INFO mortbay.log: Started [email protected]:50075
14/12/15 17:34:34 INFO jvm.JvmMetrics: Initializing JVM Metrics with processName=DataNode, sessionId=null
14/12/15 17:34:34 INFO metrics.RpcMetrics: Initializing RPC Metrics with hostName=DataNode, port=50020
14/12/15 17:34:34 INFO ipc.Server: IPC Server Responder: starting
14/12/15 17:34:34 INFO ipc.Server: IPC Server listener on 50020: starting
14/12/15 17:34:34 INFO ipc.Server: IPC Server handler 0 on 50020: starting

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,这样输出的内容会更详细。

参考资料

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

时间: 12-16

搭建Hadoop源代码学习环境的相关文章

Hadoop源代码阅读环境搭建

Hadoop源代码阅读环境搭建 一.说明 作为一个学习hadoop的同学.必须在本机上搭建hadoop源代码阅读环境,这样,在方便阅读源代码的同一时候也方便进行调试和源代码改动. 好了.以下開始搭建好开发环境. 1.环境说明:hadoop 版本号:1.2.1. IDE:eclipse.操作系统:centos 2.网上有人是通过eclipse的新建项目指定文件夹的方式将hadoop文件夹转换成Eclipseproject同一时候导入eclipse,详细做法例如以下: File-->new-->J

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

Hadoop学习笔记(10) ——搭建源码学习环境 上一章中,我们对整个hadoop的目录及源码目录有了一个初步的了解,接下来计划深入学习一下这头神象作品了.但是看代码用什么,难不成gedit?,单步调试呢? 看程序不能调那多痛苦啊,想看跟踪一下变量,想看一下执行路径都难. 所以这里,我们得把这个调试环境搭建起来.Hadoop的主要代码是用java编写的,所以这里就选用eclipse作为环境. Hadoop目录下,本身就可以为作eclipse的一个工程来操作,但这里我不想,我想自己来建一个工程,

搭建Tomcat6源代码阅读环境

目标:使用MyEclipse8.5阅读Tomcat6源码. 第一步:在MyEclipse8.5中集成SVN插件. 第二步:从地址http://svn.apache.org/repos/asf/tomcat/tc6.0.x/trunk中check out代码,作为一个Java Project 这个svn地址可以从apache-tomcat-6.0.41-src/BUILDING.txt中发现. 第三步:简单配置一下,把java/res/test等目录设置为源码目录 第四步:处理jar包依赖错误 1

Hadoop初体验:快速搭建Hadoop伪分布式环境

0.前言 本文旨在使用一个全新安装好的Linux系统从0开始进行Hadoop伪分布式环境的搭建,以达到快速搭建的目的,从而体验Hadoop的魅力所在,为后面的继续学习提供基础环境. 对使用的系统环境作如下说明: 操作系统:CentOS 6.5 64位 主机IP地址:10.0.0.131/24 主机名:leaf 用户名:root hadoop版本:2.6.5 jdk版本:1.7 可以看到,这里直接使用root用户,而不是按照大多数的教程创建一个hadoop用户来进行操作,就是为了达到快速搭建Had

搭建实用深度学习环境(Ubuntu16.10+Theano0.8.2+Tensorflow0.11.0rc1+Keras1.1.0)

在动手安装之前,首先要确定硬件,系统,准备安装软件的版本,确定这些软硬件之间是否相互支持或兼容.本文安装的主要环境和软件如下: Ubuntu16.10+CUDA8.0(cudnn5.1,CNMEM)+Theano0.8.2+Tensorflow0.11.0rc1+Keras1.1.0 显卡型号为Quadro K6000. 深度学习的另外一个比较常用的开发环境是CAFFE,由于之前的很多大牛基于CAFFE做了很多注明的模型,且已经发布到网上,故这套框架更适合于应用.但CAFFE安装起来异常复杂,需

阿里云服务器centos7.3下搭建hadoop伪分布式环境

一.软硬件环境 CentOS 7.2 64位 OpenJDK-1.8.0 Hadoop-2.7 二.安装SSH客户端 安装ssh: yum install openssh-clients openssh-server 安装完成后,使用以下命令测试: ssh localhost输入 root 账户的密码,如果可以正常登录,则说明SSH安装没有问题. 配置SSH免key登陆 hadoop是一个分布式系统,节点间通过ssh通信,为了避免在连接过程中人工输入密码,需要进行ssh免key登陆的配置,由于本

ubuntu从头开始搭建hadoop伪分布式环境

13年学习过一段时间的hadoop,但是工作中用到的地方比较少,有些生疏,加上现在hadoop版本也已经比较新了,所以空闲时间想继续学习一下,找到这篇文章,从头开始搭建一个hadoop环境,转过来备忘 Hadoop developers usually test their scripts and code on a pseudo-distributed environment(also known as a single node setup), which is a virtual mach

0基础搭建Hadoop大数据处理-环境

由于Hadoop需要运行在Linux环境中,而且是分布式的,因此个人学习只能装虚拟机,本文都以VMware Workstation为准,安装CentOS7,具体的安装此处不作过多介绍,只作需要用到的知识介绍. VMware的安装,装好一个虚拟机后利用复制虚拟机的方式创建后面几个虚拟机,省时省力,需要注意的是需要修改每个虚拟机的IP与主机名. 所有虚拟机采用NAT模式上网,而且要保证与物理主机的IP互相能访问. 需要注意的几个问题.nat如果上网首先需要查看物理机(pc机)这个服务器已经启动.上网

Linux下搭建hadoop集群环境

小编写在前面的话 “天下武功,唯快不破”,但是如果不清楚原理,快也是徒劳.在这物欲横行,数据爆炸的年代,BigData时代到了,如果熟悉了整个hadoop的搭建过程,我们是否也能从中攫取一桶金?! 前期准备 l  两台linux虚拟机(本文使用redhat5,IP分别为 192.168.1.210.192.168.1.211) l  JDK环境(本文使用jdk1.6,网上很多配置方法,本文省略) l  Hadoop安装包(本文使用Hadoop1.0.4) 搭建目标 210作为主机和节点机,211