请阐述 Apache Hadoop YARN 中容器(Container)实现资源隔离的机制,并列举其支持的不同隔离级别。
考察说明
考察对 YARN 容器资源隔离底层机制及不同隔离级别特点的理解。
回答思路
- 【回答框架 1】YARN 容器默认采用操作系统进程级别的隔离,通过 Linux Cgroups 限制 CPU、内存等资源使用,使用命名空间实现文件系统、网络等视图隔离。
- 【回答框架 2】主要隔离级别包括:Cgroups 隔离,用于限制 CPU、内存等资源;命名空间隔离,提供文件系统、网络等隔离;以及通过 Linux 容器(LXC)或 Docker 容器提供的更完整的隔离环境。
- 【回答框架 3】传统上,YARN 容器通过环境变量和启动脚本向进程传递资源限制,由 NodeManager 启动容器进程并应用 Cgroups 限制。
- 【回答框架 4】相比 Docker 等完全隔离,YARN 默认的进程级隔离隔离性较弱,但启动开销小;使用 Docker 可实现更彻底的资源隔离和更安全的环境。
- 【关键点 1】YARN 容器默认通过 Cgroups 进行 CPU 和内存资源隔离。
- 【关键点 2】命名空间提供了进程、文件系统、网络等资源的视图隔离。
- 【关键点 3】采用 Docker 或 LXC 可使容器获得更完整的隔离性。
- 【易错点 1】混淆资源隔离与资源调度:隔离是运行时限制,调度是资源分配决策。
- 【易错点 2】误以为 YARN 默认容器与 Docker 相同,实际上默认是进程级隔离。
- 【易错点 3】忽略 Cgroups 子系统的限制对象,如 CPU 限制可能只针对 CPU 时间片段。