下载源码
apache 下载地址:
http://archive.apache.org/dist
/(apache的东西在这个地址下都有,很方便)
hadoop 1.1.2 下载 linux 版本 .tar.gz 文件
下载完成后,解压,进入src绑定
创建源码项目
eclipse新建 web project项目 因为hadoop有用到J2EE的包,
建立java project项目只能提供J2SE的包。
创建后记得将编码改为 UTF-8,
Java Compiler 改为1.6
导入源码
在项目中创建 Source Folder 文件夹 core
将解压后的 src\core 下的 org 复制到 eclipse的core下
将解压后的 src\core 下的core-default.xml(配置文件编译后都要在class下)
复制到 eclipse项目的src下
(这一步后代码会报错,后续需要将jar导入)
examples、hdfs、mapred、test、tools 同core一样的操作
test、tools和examples 不需要复制xml配置文件
导入jar
右键项目 Builde Path 在Libraries中 选择 Add External JARs
导入 hadoop解压后根目录下所有的 jar (hadoop-core-1.1.2.jar等)
导入 根目录lib下所有的 jar (asm-3.2.jar等)
导入 根目录src\test\lib 所有 jar
至此 hadoop源码中的jar 就全部导入,会发现大部分源码已经不再报错,
报错的类中提示 ...tools.ant....加载不到
我们还需要去
http://archive.apache.org/dist
/ 下载 ant 下的根目录
ant-current-bin.zip
文件
导入解压后根目录下lib中所有的 jar
如果你是在eclipse中创建的项目还会报错 sun 相关包找不到,
因为eclipse中默认不使用sun等特殊的包(myeclipse没有问题)
我们需要手动添加:
在 Builde Path 的Libraries 的JRE System。。下的Access rules 添加
阅读源码方法:
看启动脚本 根目录下 lib/start-all.sh
脚本里首先执行的是 config 脚本进行环境变量配置等操作
然后是 执行 dfs和mapred
在 start-dfs.sh 中可以看到 去启动了 dfs 守护线程,启动了namenode datanode
在项目中找到NameNode(org/apache/hadoop/hdfs/server/namenode/)
建议使用 Ctrl+Shift+R 进行搜索,这样方便一些。
在NameNode最下面有一个main方法,以此为起点查看hdfs的的源码,
可以看到方法里面先去 createNameNode -》init等等
至于其他包源码阅读同理。