Apache在其Hadoop wiki上整理了Docker中运行Hadoop的优势,以及要完全在Docker中运行Hadoop所需要完成的工作。在Docker,或者说其它容器中运行Hadoop YARN有很多优势,具体如下: 软件依赖和配置的隔离:在Docker中运行的应用,其软件依赖和配置是与宿主机完全没有关系的,跟其其它行在Docker中的应用也没有关系; 安全性:运行在Docker中的应用,在没有主动配置的情况下,基本没有办法访问(即便是Docker镜像中的root权限)宿主文件系统的内容,这可以很好的保护宿主文件系统、设备等等; 性能隔离:Docker可以对应用所需要的资源,如CPU计算资源、内存资源、存储资源、带宽等进行调控; 一致性:只要是源自同一个Docker镜像,所有的任务就具有完全一致的软件环境,跟宿主环境无关。比如一个Ubuntu镜像可以像使用真正Ubuntu系统一样利用其特性,哪怕宿主机器是RHEL; 快速部署:Docker有着强大的镜像存储和分发能力,开发者可以很方便的从镜像中心获取Hadoop YARN应用的镜像; 可编程:通过Dockerfile,开发者可以非常方便地对YARN应用的文件系统、环境配置和运行的脚本进行设置; 虽然容器的优势是明显的,但是目前Docker和YARN的情况却无法支撑完全在Docker中运行Hadoop YARN任务,Apache提出需要对Docker和YARN进行修改的想法,并给出了一些目前计划的工作: YARN的Docker执行器; Docker需要支持user namespaces,以便可以将Docker镜像中的root用户映射到宿主机的普通用户,来控制用户对宿主文件系统的访问; 容器的网络配置:这项工作主要为了让YARN的主节点同其他节点通信,Docker现有的NAT IP地址不允许运行在某个镜像中的任务访问另外一台物理宿主上运行的其他任务; 动态配置资源限制:目前Docker不支持动态对镜像资源进行配置; (责任编辑:IT) |