Hadoop源码分析之NodeManager初始化、启动、注册

目录

 

Overview

Initiate

NodeHealthCheckerService init and Startup

LocalDirsHandlerService init and startup

NodeHealthScriptRunner init and startup

NodeStatusUpdater Init and startup

ContainerManager Init and startup

ResourceLocalizationService init and startup

ContainersLauncher Init and Startup

AuxServices Init and Startup

ContainersMonitor Init and Startup

LogHandler Init and Startup


Overview

NodeManager 是hadoop cluster的server中,负责管理,执行任务相关的资源,主要通过ResouceManager和ApplicationsManager通信,通过ContainerManager与ApplicationMasterService 通信,

Initiate

Services
DeletionService
NodeHealthCheckerService
NodeResouceMonitor
ContainerManager
WebServer
Dispatcher
NodeStatusUpdate
Event Handler
ContainerManagerEventType ContainerManagerImpl
NodeManagerEventType NodeManager

NodeHealthCheckerService init and Startup

LocalDirsHandlerService init and startup

LocalDirsHandlerService 主要用来定时检查本地工作目录及日志目录的状态,并向请求的service报告状态信息,初始化时会读取下列信息:

  • yarn.nodemanager.disk-health-checker.interval-ms,  Default is: 120000 定义了,检查目录的时间间隔;
  • yarn.nodemanager.disk-health-checker.enable,  Default is: true 定义了是否启用health checker;
  • yarn.nodemanager.disk-health-checker.min-healthy-disks: Default is 0.25, 定义了启动一个containe所需用的最少空间百分比;
  • yarn.nodemanager.local-dirs:定义了存放localize 文件的本地目录;
  • yarn.nodemanager.log-dirs: 定义了log文件的本地目录;

NodeHealthScriptRunner init and startup

通过这个服务 ,我们可以提供一个脚本来定期检查Node的状态,启动时会从下列配置中读取脚本信息:

  • yarn.nodemanager.health-checker.script.path: 定义了 执行检查的脚本的绝对路径;
  • yarn.nodemanager.health-checker.interval-ms: Default is: 600000ms, 定义了检查的时间间隔;
  • yarn.nodemanager.health-checker.script.timeout-ms: Default is: 1200000ms, 定义超时时间间隔;
  • yarn.nodemanager.health-checker.script.opts: 定义了,检查脚 本的执行选项。

NodeStatusUpdater Init and startup

NodeStatusUpdater主要用来和Resource mamanger通信,并更当前node的状态信息,启动时要从配置文件中读取下列信息:

  • yarn.resourcemanager.resource-tracker.address: Default is 0.0.0.0:8031, 定义了ResourceManager的监听地址;
  • yarn.nodemanager.resource.memory-mb: Default is: 8192 MB, 定义了,node manager 运行时分配的物理内存;
  • yarn.nodemanager.vmem-pmem-ratio: Default is 2.1, 定义了虚拟内存与物理央存的比例,用来计算应该分配多少虚拟内存;
  • yarn.nodemanager.resource.cpu-cores: Default is 8, 定义了物理机器CPU核心数量;
  • yarn.nodemanager.vcores-pcores-ratio: Default is 2.0 定义了虚拟CPU(线程)与物理核心的比例,用来计算可以同时运行多少个虚拟CPU(线程);
  • yarn.nodemanager.webapp.address: Default is:0.0.0.0:8042,定义了 node manager的Web监听地址。

ContainerManager Init and startup

ContainerManager 主要是用来和ApplicationMaster通信,管理,分配、启动、停止containers

Event Handler
ContainerEventType ContainerEventDispatcher
ApplicationEventType ApplicationEventDispatcher
LocalizationEventType ResourceLocalizationService
AuxServicesEventType AuxServices
ContainersMonitorEventType ContainersMonitorImpl
ContainersLauncherEventType ContainersLauncher
LogHandlerEventType LogAggregationService/NonAggregatingLogHandler


当ContainerManager 启动时,需从配置方件读取下列信息:

  • yarn.nodemanager.address :Default is:0.0.0.0:0 用来接收从ApplicationMaster过来的请求。

ResourceLocalizationService init and startup

ResourceLocalizationService 主要用来管理用户相关及Application相关的localization 信息,这些信息都是存储在本地文件系统中的,Service启动之前会读取以 下配置信息:

  • yarn.nodemanager.local-cache.max-files-per-directory: Default is: 8192 如果配置的文件个数少于37, 则系统会报错,启动失败;
  • yarn.nodemanager.localizer.cache.target-size-mb: Default is 10240MB定义了,cache 目录的最大容量;
  • yarn.nodemanager.localizer.cache.cleanup.interval-ms: 600000 ms 定义了,cache 目录清除的时间间隔;
  • yarn.nodemanager.localizer.address: Default is: 0.0.0.0.0:8040 定义了ResourceLocalizer 监听地址;

ContainersLauncher Init and Startup

AuxServices Init and Startup

ContainersMonitor Init and Startup

ContainersMonitor 主要是用来监视当前node中的所有Containers 对系统资源的使用情况,目前只监视内存及虚拟内存的使用情况, 当Monitor启动时需从配置文件中读取下列信息:

  • yarn.nodemanager.container-monitor.interval-ms: Default is: 3000 ms 定义了监视间隔时间;
  • yarn.nodemanager.container-monitor.resource-calculator.class: 定义了计算系统资源的对像类型;
  • yarn.nodemanager.container-monitor.process-tree.class:定义了计算系统进程信息的对 像类型;
  • yarn.nodemanager.resource.memory-mb: Default is: 8192MB (8G) 定义了当前系统可用的总的物理内存数;
  • yarn.nodemanager.vmem-pmem-ratio: Default is 2.1 定义了当前系统中总的虚拟内存与物理内存的比例, 用来计算系统中总的可用的虚拟内存数,该值必须大于或等于1.0;
  • yarn.nodemanager.pmem-check-enabled: Default true. 定义是否检查物理内存限制;
  • yarn.nodemanager.vmem-check-enabled: Default true, 定义是否检查虚拟面存限制。

LogHandler Init and Startup

Log container start, finish, and Application start, finish;

原文:

https://blog.csdn.net/woelegant/article/details/8870399

猜你喜欢

转载自blog.csdn.net/JacksonKing/article/details/89874337