IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> JobTracker内部实现——JobTracker启动过程 -> 正文阅读

[大数据]JobTracker内部实现——JobTracker启动过程

概述

JobTrakcer包含一个main函数,main函数中有两行启动JobTracker的核心代码:

JobTracker tracker = startTracker(new JobConf());//创建JobTracker对象
tracker.offerService(); //启动各个服务

重要对象初始化

跟踪startTracker()函数内部,它最终创建了一个JobTracker对象,该对象对一些重要对象进行了初始化。

ACLsManager类:

权限管理类,提供了checkAccess方法以对用户的各种操作进行权限检查。两种权限:队列权限和作业权限,分别由QueueManager和JobACLsManager类管理。
队列权限:作业提交权限(哪些用户可向队列提交作业)和作业管理权限(哪些用户可以管理该队列中的作业)
作业权限:作业查看权限和作业修改权限

HttpServer类:

Hadoop对外提供Web服务的HTTP服务器,封装了轻量级的web服务器。

DNSToSwitchMapper接口

定义了将DNS名称或者节点IP地址转换成网络位置的规则,Hadoop以层次树的方式定义节点的网络位置,并依据该位置存取数据或者调度任务。

各种线程功能

几个重要的后台服务线程

expireTrackersThread线程:

该线程用于发现和清理死掉的TaskTracker,每个TaskTracker会周期性地通过心跳向JobTracker汇报信息,JobTracker会记录每个TaskTracker最新的心跳汇报时间。如果某个TaskTracker超过10分钟没有汇报心跳,JobTracker认为它死去,清除它的相关信息,同时将正在运行的任务状态标注为killed_unclean

retireJobsThread线程:

该线程主要用于清理长时间驻留在内存中的已经运行完成的作业信息。满足下面条件时,就会被转移到过期队列中:

  1. 作业已经运行完成,即运行状态为SUCCEEDED、FAILED、KILLED
  2. 作业完成时间距现在已经超过24小时
  3. 作业拥有者已经完成作业总数超过100个

过期作业放到过期队列中,过期作业超过1000个,会从内存中彻底删除

expireLaunchingTaskThread线程

用于发现已经被分配给某个TaskTracker但一直没有汇报信息的任务,10分钟没汇报就认为是分配失败,并标注状态为FAILED.

compeletedJobsStoreThread线程

将已经运行完成的作业运行信息保存到HDFS上,提供了一套存取这些信息的API。
该线程解决两个问题:

  1. 用户无法获得很久之前的作业运行信息:因为会定期清除内存中的完成作业。
  2. JobTracker重启后作业运行信息丢失

该线程通过保存作业运行日志的方式,使得用户可以查询到任意时间提交的作业和还原作业的运行信息

作业恢复

JobTracker存在单点故障问题,所以Hadoop设计了作业恢复机制。
过程:

作业从提交到运行结束的整个过程中,JobTracker会为一些关键事件记录日志,对于作业而言,关键事件包括作业提交、作业创建、作业运行开始、结束、作业运行失败、作业被杀死等等;对于任务而言,关键事件包括任务创建、任务开始、结束、任务运行失败、任务被杀死等等。
作业恢复主要就是通过日志恢复,并重新调度未运行完成的任务。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-12-01 17:46:35  更:2021-12-01 17:49:03 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 9:15:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码