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


    本文将介绍如何使用 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 选择对应的文件夹目录,进行导入。之后会进入漫长的程序加载过程(看机器配置和网速,可能几十分钟到几小时不等)。
    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 进行远程连接调试了

  • 相关阅读:
    Flink窗口
    8月28日计算机视觉理论学习笔记——图像生成
    Hadoop学习总结(使用Java API操作HDFS)
    SSM+智慧养老服务平台 毕业设计-附源码211709
    CKA、CKAD、CKS、KCNA、CFCD考试
    悬浮波导SiO2薄膜的应力和折射率控制
    手写一个博客平台 ~ 第七天
    chatgpt赋能python:Python请求头——让你的网络请求更有效率
    vue 中 keep-alive 组件的作用
    萨特——治愈了迷茫的你吗
  • 原文地址:https://www.cnblogs.com/shuofxz/p/16869138.html