【深入浅出 Yarn 架构与实现】1-2 搭建 Hadoop 源码阅读环境
2023-03-20 15:32:58 时间
本文将介绍如何使用 idea 搭建 Hadoop 源码阅读环境。(默认已安装好 Java、Maven 环境)
一、搭建源码阅读环境
一)idea 导入 hadoop 工程
从 github 上拉取代码。
https://github.com/apache/hadoop
可以选择对应的分支
# 如拉取 2.8.5 分支
git clone -b branch-2.8.5 git@github.com:apache/hadoop.git
在 idea 中点击 File - Open
选择对应的文件夹目录,进行导入。之后会进入漫长的程序加载过程(看机器配置和网速,可能几十分钟到几小时不等)。
二)配置注释环境
为了更方便的在阅读源码过程中记笔记,可在源码基础上创建新的分支用于记录。
1、创建新分支
# 如在 branch-2.8.5 基础上创建
git checkout -b branch-2.8.5-comment
2、在 github 上创建个新的项目
3、将本地分支 branch-2.8.5-comment
推送到远端。之后可以在自己 github 上看到这个项目分支了。
# 删除原来的远端项目
git remote remove origin
# 添加新的项目地址
git remote add origin <你的项目地址>
# 推送新的分支
git push -u origin branch-2.8.5-comment
二、源码组织架构
一)根目录结构
导入工程后,可以看到如下图的目录结构。其中,比较重要的目录有:hadoop-common-project
、hadoop-mapreduce- project
、hadoop-hdfs-project
和 hadoop-yarn-project
等。
- hadoop-common-project:Hadoop 基础库所在目录,该目录中包含了其他所有模块可能会用到的基础库,包括 RPC、Metrics、Counter 等;
- hadoop-mapreduce-project:MapReduce 框架的实现;
- hadoop-hdfs-project:Hadoop 分布式文件系统实现;
- hadoop-yarn-project:Hadoop 资源管理系统 YARN 实现,是我们需要重点关注的部分。
![image.png](https://img2022.cnblogs.com/blog/1324217/202211/1324217-20221108113427708-706962425.png)
二)yarn 目录结构
Hadoop YARN 主要关注五个部分:API、Common、Applications、Client 和 Server。
- YARN API:给出了 YARN 内部涉及 RPC 协议的 Java 声明和 Protocol Buffers 定义;
- YARN Common:包含了 YARN 底层库实现, 包括事件库、服务库、状态机库、Web 界面库等;
- YARN Applications:包含了两个 Application 编程实例,分别是 distributedshell 和 Unmanaged AM;
- YARN Client:该部分封装了几个与 YARN RPC 协议交互相关的库,方便用户开发应用程序;
- YARN Server:该部分给出了 YARN 的核心实现,包括 ResourceManager、NodeManager、资源管理器等核心组件的实现。
![image.png](https://img2022.cnblogs.com/blog/1324217/202211/1324217-20221108113427139-1041122192.png)
三、远程调试
配置与远程部署的 hadoop 服务连接。
1、idea 中选择 Run -> Edit Configurations
# 在 yarn-env.sh 中添加
export YARN_NODEMANAGER_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5006"
export YARN_RESOURCEMANAGER_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005"
# 如果想要启动时先连接 debug,则设置 suspend=y
4、可以用 idea 进行远程连接调试了
相关文章
- 宝刀不老,谷歌 Chrome 浏览器对 Windows 7 的支持将延长到 2023 年
- 什么是 SRE?与 DevOps 相比,到底谁才是真正的王者!
- RabbitMQ的 AMQP协议都是些什么内容呢
- 开发人员面临的主要跨浏览器兼容性问题
- 与Intel部分音频驱动不兼容 Windows 11系统又蓝屏了
- 无论如何,在Windows 11中是可以自定义开始菜单的,技巧要掌握
- 线上系统查询一次要10s,我一怒优化了几百行的SQL
- 什么是Dll文件?Dll文件怎么打开编辑?Windows 7打开Dll文件操作方法
- ARM Windows 10运行64位程序被砍:微软今后只支持Windows 11
- 大数据与物联网如何帮助企业
- 打造一款定制化鸿蒙发行版
- 连接池居然这么简单?
- 七个好玩的 Linux 命令
- 入门:如何更改Ubuntu的终端字体和大小
- Linux基础教程:如何轻松快速地安装 GNOME Shell 扩展
- Windows 10 2021年11月更新正式发布 现已可供下载
- 四款超强大易用的管理工具,助你轻松玩转 Kubernetes
- Windows 11 第三方 Files v2 标签式文件管理器已支持原生 ARM64
- 谷歌 Chrome 96 浏览器引入全新实验性选项:可启用 Windows 11 风格右键菜单
- 教你成功在Windows 10系统中运行Docker