Container solution — Meiosys 2004 First research paper on Linux Containers — OSDI’02 IBM acquires Meiosys — Focus shifted to AIX First container-based distributed checkpointing — HP Labs First implementation of containers based on syscall interposition — Columbia Most core kernel changes finally made into Linux mainline
configuration! • Resource consumption (CPU, RAM, disk, network)! • Information integrity and confidentiality (aka, security)! ❏ Why containers as process abstractions of DC-OS? • Provide mechanism for software isolation (via file system namespace)! • Provide defense-in-depth for security! • Better suited for distributed apps! • Containers contain (possibly multiple) restartable processes! • Support for checkpoint/restore, live migration, live OS upgrades, record/replay
(Context Switch) Guest Driver Guest File System Host Application Why not Virtual Machines? Layers of Intermediate Software VMs Containers Application High IO overhead due to many intermediate layers
Guest OS licensing and maintenance burden Poor scalability High resource consumption due to duplication Obfuscated network / storage / compute topologies Application semantic information is lost
1 Container Containers on YARN Node Manager Spawned Tasks as Containers Container Virtualization Tasks representing the same job share the same container Job A Task 2 Job C Task 1
coscheduling IO and CPU tasks Consistent cluster environment Isolation of software dependencies / configuration Reproducible way to define app environment Rapid provisioning
0 Regular user UID 100 UID Virtualization U Host root UID 0 • UID namespaces are a recent addition to Kernel (DATE) • UIDs in containers can be mapped to different UIDs in host! • Tricky, because you need to translate UIDs of files and other resources! • Provides privilege isolation • Map superuser in container to regular user in host! • Great for YARN, and Docker in general! • Docker predates UID namespaces • Docker support for UID is forthcoming
Docker ❏ https://www.altiscale.com/making-docker-work-yarn/ ❏ Apache wiki page tracking work status across Docker and YARN projects ❏ https://wiki.apache.org/hadoop/dineshs/IsolatingYarnAppsInDockerContainers ❏ JIRA tracking Docker integration into YARN ❏ https://issues.apache.org/jira/browse/YARN-1964 ❏ Related Docker tickets ❏ Several tickets linked from: https://github.com/dotcloud/docker/pull/4572 [email protected] Thank You
0 Container Clusters to Drive Utilization Each customer gets a container image ❖ Encapsulates customer specific software and configuration ❖ Host platform remains lean and simple Densely pack containers together
❖ Add more storage to Customer 1 cluster from a storage rich node ➢ While a compute intensive job from Customer 2 utilizes the available compute capacity on the same node Independently scale compute and storage