我正在尝试学习“如何在 Hadoop 中实现 Kerberos?” 我浏览了这个文档 https://issues.apache.org/jira/browse/HADOOP-4487 我也浏览了基本的 Kerberos 东西(https://www.youtube.com/watch?v=KD2Q-2ToloE)
从这些资源中学习后,我得出了一个我通过图表表示的结论。场景: - 用户登录到他的计算机通过 Kerberos 身份验证并提交地图缩减作业(请阅读图表的描述,它几乎不需要 5 分钟的时间)我想解释图表并提出与少数相关的问题步骤(粗体) 黄色背景的数字代表整个流程(数字 1 到 19) DT(红色背景)代表委托令牌 BAT(绿色背景)代表块访问令牌 JT(棕色背景)代表作业令牌
步骤 1、2、3 和 4 表示:- 请求 TGT(授予票证)请求名称节点的服务票证。 Question1) KDC应该在哪里?它可以在我的名称节点或作业跟踪器所在的机器上吗?
步骤 5、6、7、8 和 9 代表:- 向名称节点显示服务票证,获得确认。名称节点将发出委托令牌(红色)用户将告知令牌更新者(在这种情况下是 Job Tracker)
问题 2) 用户将此委托令牌连同作业一起提交给 Job Tracker。委托令牌会与任务跟踪器共享吗?
步骤 10、11、12、13 和 14 代表:- 请求 Job tracker 的服务票证,从 KDC 获取服务票证 将此票证显示给 Job Tracker 并从 JobTracker 获得 ACK 提交 Job + Delegation Token 到 JobTracker。
步骤 15,16 和 17 表示:- 生成块访问令牌并传播到所有数据节点。将 blockID 和 Block Access Token 发送到 Job Tracker,Job Tracker 会将其传递给 TaskTracker
问题 3) 谁会向 Name Node 索要 BlockAccessToken 和 Block ID?JobTracker 或 TaskTracker
抱歉,我不小心错过了 18 号。Step19 表示:- Job Tracker 生成 Job Token(棕色)并将其传递给 TaskTrackers。
问题 4)我是否可以得出结论,每个用户将有一个委托令牌,它将分布在整个集群中,并且每个作业将有一个作业令牌?所以一个用户将只有一个Delegation Token和许多Job Tokens(等于他提交的作业数量)。
请告诉我我是否遗漏了什么,或者我在解释中的某个地方有错误。