如何查看hadoop源码
㈠ 如何使用Maven构建《hadoop权威指南3》随书的源码包
《hadoop:the definitive guide 3th》中的例子默认提供了一种编译和构建jar包方法——maven,如果没有maven你会发现编译测试随书的源码会非常的麻烦(至少在命令行下),当然你也可以使用eclipse导入随书的源码再自己一个个的添加依赖性jar包(恐怕也不太容易)。不过还好有非常好的开源的软件项目管理工具来帮助我们做这些无关于程序本身设计与架构的琐碎的工作,那就是maven!
如果你对maven还不太了解,可以参看这里。
《hadoop:the definitive guide 3th》的源码包可以从github中下载到,如下图所示:
下面我们就可以切换到本书的源文件包的根目录下使用maven来构建本书的jar包了:
% mvn package -DskipTests -Dhadoop.version=1.0.4
执行过这条命令后就是很长时间的等待,maven会到他的中央仓库和apache的仓库中下载所需要的jar包和pom.xml文件(这个过程可能要持续大约一个小时,要确保你的电脑已经连上网络,下载完成后在~/.m2/repository文件夹中——也即本地仓库——可以看到已经下载下来的jar包和pom文件),然后再逐个构建根目录下pom.xml中配置的moles,等所有的工作做完就可以看到已经打包的各个jar包,从而可以很方便的在命令行使用hadoop命令测试书中的代码了。
㈡ window下怎么编译hadoop的源码
a) 进入windows命令行模式,进入到D:\soft\hadoop-2.6.4-src\hadoop-maven-plugins目录,执行"mvn install"命令,如果命令行界面提示:build success"时表示成功:
b) 进入到hadoop-2.5.2-src 目录,执行"mvn eclipse:eclipse -DskipTests"命令,如果出现"BUILD SUCCESS"说明hadoop源码编译成功。
c) 打开eclipse开发工具,将D:\soft\hadoop-2.6.4-src导入到workspace中,就可以查看源码。
㈢ 在Ubuntu中,用mvn打包hadoop源代码是报错,咋回事
将hadoop源码解压到一个目录,注意目录层次不要太深,否则可能无法解压。
进入hadoop-maven-plugins文件夹,执行 mvn install
返回源码根目录,执行 mvn eclipse:eclipse –DskipTests
eclipse在任意目录创建新的WorkSpace
eclipse设置Maven:window->preference->maven->{Installations...;user Settings:maven\conf\settings.xml}
eclipse:File->inport->Existing Projects into WorkSpace->Hadoop源码根目录
㈣ Hadoop 请教学习顺序
虽然从事Hadoop方面工作,但是不是高手,毕竟只有一年经历而已。
分享下本人的学习经历吧。
了解Hadoop运行机制,可以学习Hadoop权威指南或者Hadoop实战;
了解Hadoop运行流程,看懂HADOOP_HOME/bin/下面主要执行脚本。
查看core-default.xml/hdfs-default.xml/mapred-default.xml等默认配置
文件,及core-site.xml/hdfs-site.xml/mapred-site.xml等相关文件,学会
如何进行参数优化,以及掌握如何配置读取压缩文件,默认的gzip,及
自定义的lzo,学会自定义Combiner/Patitioner等,掌握各种输入输出
格式的区别及应用场景,学会自定义输入输出格式,其次学习MapRece算法,
比如In-Map-Combing,相对频度计算,Pairs算法,Strips算法等。掌握好
maprece编程。
在这其中,需要好好阅读HADOOP_HOME/src/目录下的Hadoop源码,
这个就是开源最大的好处。说的比较乱,但是就凑合着借鉴下吧
㈤ hadoop中命令经常含有-fs,-dfs,fs和dfs有什么区别作用是什么
You can see definitions of the two commands (hadoop fs & hadoop dfs) in
可以看一下hadoop的源代码
$HADOOP_HOME/bin/hadoop
...elif [ "$COMMAND" = "datanode" ] ; then CLASS='org.apache.hadoop.hdfs.server.datanode.DataNode' HADOOP_OPTS="$HADOOP_OPTS $HADOOP_DATANODE_OPTS"elif [ "$COMMAND" = "fs" ] ; then CLASS=org.apache.hadoop.fs.FsShell HADOOP_OPTS="$HADOOP_OPTS $HADOOP_CLIENT_OPTS"elif [ "$COMMAND" = "dfs" ] ; then CLASS=org.apache.hadoop.fs.FsShell HADOOP_OPTS="$HADOOP_OPTS $HADOOP_CLIENT_OPTS"elif [ "$COMMAND" = "dfsadmin" ] ; then CLASS=org.apache.hadoop.hdfs.tools.DFSAdmin HADOOP_OPTS="$HADOOP_OPTS $HADOOP_CLIENT_OPTS"...
So, they are exactly the same.
所以,发现两者是完全一样的功能。
谢谢