Hadoop源码阅读环境搭建(IDEA)

本文详细介绍了如何使用IDEA或Eclipse搭建Hadoop源码工程,包括源码下载、IDEA工程创建流程及maven环境配置。通过具体步骤指导,帮助读者深入理解Hadoop的架构设计和代码实现。

拿到一份Hadoop源码之后,经常关注的两件事情就是

1、怎么阅读?涉及IDEA和Eclipse工程搭建。IDEA搭建,选择源码,逐步导入即可;Eclipse可以选择后台生成工程,也可以选择IDE导入。二者工程也可以互相导入\到处。

2、怎么构建?利用maven,生成安装包。

二者均需配置maven,相关工具配置参考另两篇帖子《Hadoop源码编译环境搭建》和《IDEA配置maven中央库

1、下载源码

http://mirror.bit.edu.cn/apache/hadoop/common/

 

2、导入IDEA工程

新建工程:

File-->New-->Project from Existing Sources

 

选择源码目录:

 

 

选择maven:

 

 

 选择"Search for projects recursively",并设置maven环境变量。

 

依次选择所需工程:

开始scanning工程: 

 

 扫描完成之后:

 

3、查阅源码

经常看到各种大神总结帖子讲述HDFS、MapReduce和yarn等相关原理、配置参数,版本各一。

而真正的原理和机制关键在于架构设计和代码实现。官方文档和源码实现才是学习正途,前人的总结与分享应该作为一种借鉴和捷径;奇正犄角,学习一种新东西。

 一个Hadoop源码阅读工程就创建好了。比如打开FsShell

 

转载于:https://www.cnblogs.com/HopkinsCybn/p/10127360.html

### 如何在 IntelliJ IDEA 中配置 Hadoop 开发环境 #### 创建 Maven 项目并设置依赖项 为了开始构建支持 Hadoop 的应用程序,在 IntelliJ IDEA 中创建一个新的 Maven 项目[^1]。通过这种方式,能够利用 Maven 自动化管理项目的依赖关系。 对于那些偏好手动控制依赖版本的人来说,可以选择不使用Maven而直接向工程中加入所需的Jar文件作为库的一部分;这可以通过菜单栏中的【File】->【Project Structure】->【Libraries】来完成,并在此处添加必要的Hadoop JARs到classpath里去[^2]。 #### 导入 Hadoop 库 无论是采用哪种方式引入外部资源——即通过Maven仓库获取或是从本地路径加载预先下载下来的压缩包形式分发的二进制文件——都需要确保所选版本与目标集群上的Hadoop部署相匹配。如果决定走非Maven路线,则需特别注意正确处理可能存在的冲突以及缺失的依赖问题[^3]。 #### 设置环境变量 (仅限于本地运行时) 当打算让程序访问实际的数据节点而非仅仅模拟执行流程的时候,就需要适当调整系统的`PATH`和其他相关环境变量以便使Java应用能找到命令行工具和服务接口的位置。此步骤通常涉及编辑`.bashrc`或相应的shell初始化脚本以永久生效。 #### 编写测试代码验证配置有效性 最后一步是在IDE内部编写简单的MapReduce作业比如WordCount实例来检验整个集成过程是否成功。记得把源码放置于`src/main/java/...`这样的标准结构之下,因为只有在这个特定位置才允许新建类定义[^4]。 ```java import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Job; import org.apache.hadoop.mapreduce.Mapper; import org.apache.hadoop.mapreduce.Reducer; import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; public class WordCount { public static void main(String[] args) throws Exception { Configuration conf = new Configuration(); Job job = Job.getInstance(conf, "word count"); job.setJarByClass(WordCount.class); job.setMapperClass(TokenizingMapper.class); job.setCombinerClass(IntSumReducer.class); job.setReducerClass(IntSumReducer.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(IntWritable.class); FileInputFormat.addInputPath(job, new Path(args[0])); FileOutputFormat.setOutputPath(job, new Path(args[1])); System.exit(job.waitForCompletion(true) ? 0 : 1); } public static class TokenizingMapper extends Mapper<Object, Text, Text, IntWritable> {...} public static class IntSumReducer extends Reducer<Text,IntWritable,Text,IntWritable> {...} } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值