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
- 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;