首页 > 编程语言 >【深入浅出 Yarn 架构与实现】1-2 搭建 Hadoop 源码阅读环境

【深入浅出 Yarn 架构与实现】1-2 搭建 Hadoop 源码阅读环境

时间:2022-11-08 11:47:17浏览次数:58  
标签:git hadoop Yarn Hadoop project 源码 YARN

本文将介绍如何使用 idea 搭建 Hadoop 源码阅读环境。(默认已安装好 Java、Maven 环境)

一、搭建源码阅读环境

一)idea 导入 hadoop 工程

从 github 上拉取代码。
https://github.com/apache/hadoop
可以选择对应的分支

# 如拉取 2.8.5 分支
git clone -b branch-2.8.5 [email protected]:apache/hadoop.git

在 idea 中点击 File - Open 选择对应的文件夹目录,进行导入。之后会进入漫长的程序加载过程(看机器配置和网速,可能几十分钟到几小时不等)。
image.png

二)配置注释环境

为了更方便的在阅读源码过程中记笔记,可在源码基础上创建新的分支用于记录。
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-projecthadoop-mapreduce- projecthadoop-hdfs-projecthadoop-yarn-project 等。

  • hadoop-common-project:Hadoop 基础库所在目录,该目录中包含了其他所有模块可能会用到的基础库,包括 RPC、Metrics、Counter 等;
  • hadoop-mapreduce-project:MapReduce 框架的实现;
  • hadoop-hdfs-project:Hadoop 分布式文件系统实现;
  • hadoop-yarn-project:Hadoop 资源管理系统 YARN 实现,是我们需要重点关注的部分。
image.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

三、远程调试

配置与远程部署的 hadoop 服务连接。
1、idea 中选择 Run -> Edit Configurations
image.png

# 在 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 进行远程连接调试了

标签:git,hadoop,Yarn,Hadoop,project,源码,YARN
From: https://www.cnblogs.com/shuofxz/p/16869138.html

相关文章

  • QT5-打开源码中的所有打印信息
    移植QT时,可能要查看QT的源码中的打印日志,以便确定问题。修改方法如下:/etc/profile文件exportQT_DEBUG_PLUGINS=1exportQT_LOGGING_RULES="*=false;*=true"规则如下:关闭所......
  • UE4源码编译,报错GenerateProjectFiles error的几个办法
    第一种  检查,红框内没勾的勾上第二种没勾的勾上其他的情况ue的AnswerHub有些别人提到的相关问题,连接如下https://answers.unrealengine.com/questions/724854/v......
  • threadlocal源码详解&内存泄漏分析
    juc基础之ThreadlocalThreadlocal底层原理get方法源码public T get() {    Thread t = Thread.currentThread();    ThreadLocalMap map = getMap......
  • 线程池原理&源码分析&手写实现
    juc基础之线程池实现原理线程池概念线程池和数据库连接池非常类似,可以统一管理和维护线程,减少没必要的开销为什么使用使用线程池?因为频繁的开启线程或者停止线程,线程需......
  • 对<源码级调试WDF框架>一文进行补充
    MS曾在他的Github站点上提出过​​《源码级调试WDF框架》​​的方法,文中提到通过.srcfix命令使windbg源码服务器路径指向MS的源码服务器。这样当调试到wdf框架代码时,windbg......
  • Hadoop总结——Hadoop基础
    一、Hadoop是什么Hadoop是一个由Apache基金会所开发的分布式系统基础架构主要解决,海量数据的存储和海量数据的分析计算问题广义上来说,Hadoop通常是指一个更广泛的概念——Ha......
  • 【一个让你停不下来的动效】——难道不来瞅瞅?(含源码+思路)
    文章目录​​一个停不下来的动效!!!​​​​前言:......
  • 源码级深度理解 Java SPI
    作者:vivo互联网服务器团队-ZhangPengSPI是一种用于动态加载服务的机制。它的核心思想就是解耦,属于典型的微内核架构模式。SPI在Java世界应用非常广泛,如:Dubbo、Sp......
  • Vue源码解读之InitState
    前面我们讲到了_init函数的执行流程,简单回顾下:初始化生命周期-initLifecycle初始化事件-initEvents初始化渲染函数-initRender调用钩子函数-beforeCreate初始化依赖......
  • Vue3源码解读之patch
    例子代码本篇将要讲解domdiff,那么咱们结合下面的例子来进行讲解,这个例子是在上一篇文章的基础上,加了一个数据变更,也就是list的值发生了改变。html中增加了一个按钮change......