为什么我们选择Docker来构建Crayon的数据处理平台

简介: 本文讲的是为什么我们选择Docker来构建Crayon的数据处理平台,【编者的话】随着Hadoop成为大数据的事实标准,Hadoop的生态也在不断完善,环境搭建的复杂性,给开发和测试带来了不便。如何用Docker来降低Hadoop开发中的复杂性,本文中Crayon带来了他们的方案。
本文讲的是为什么我们选择Docker来构建Crayon的数据处理平台 【编者的话】随着Hadoop成为大数据的事实标准,Hadoop的生态也在不断完善,环境搭建的复杂性,给开发和测试带来了不便。如何用Docker来降低Hadoop开发中的复杂性,本文中Crayon带来了他们的方案。

之前,企业软件厂商都会尽可能多的控制客户的基础安装环境,因为如果安装环境出错,就可能引起很多不必要的麻烦,甚至大灾难。

最初,公司提供一个包含定制的 操作系统镜像 的应用,操作系统镜像作为软件安装的其中一份子,它给予了厂商从硬件到操作系统的对环境的完全的控制力。但即便是这样也很难解决问题。企业软件供应商不得不与其它公司形成合作关系,并且依赖这些公司,来为他们分发硬件平台。他们必须寻找多个合作伙伴关系,以避免被锁定在一个合作伙伴。

服务器虚拟化

服务器虚拟化用来解决多供应商的硬件平台和环境问题。它帮助企业软件供应商有效的发布他们的软件,通过在部分 虚拟机管理程序 之上进行测试和认证。它提供了一个良好的顶层抽象,企业软件应用能够在其中部署和测试。在我早先工作的组织中,我们使用生成的 ova 镜像,用来在虚拟机管理程序上创建 虚拟机 实例,对于一个完全封闭的应用,这有助于创建相同结果,更便于管理。
image1.png

这个模式有几个问题无法解决。首先,构建ova镜像,你需要有大量的系统级的技能。其次是管理分布式环境。当一个软件要求分布式的安装在多节点上,仍然有大量的手工操作包括启动这些虚拟机。随着企业开始使用云作为他们的基础设施,不考虑应用的种类(即使当应用运行在一个节点中),管理一个分布式环境变得更重要。

Docker

Docker  的问世正好解决了这两个问题。Docker允许任何人很简单的快速创建、执行和测试Docker容器。有大量的框架,用于分布式Docker的管理,比如Google 的 Kubernetes CoreOS Docker编排三剑客 等等,这些都很容易和Docker结合。

除了这些,相比于虚拟机,Docker是非常轻量级的。如下图所示,它避免了虚拟机管理程序的附加层,运行一个轻量级的 Docker引擎 。它支持Windows 和 Boot2Docker

虚拟机和Docker的区别

image2.png

我们如何选择我们的数据处理堆栈

虽然Docker试图解决很多问题,但是我们选择了“构建一致的环境便于去复制”这一方面。

最初在Crayon,在我们的开发周期中,为了测试很少的代码,我们不得不改变我们的 MapReduce 程序。我们需要将我们的程序放到 AWS  环境中的生产集群中,这主要是为了解决配置本地用于测试的 Hadoop  环境的时间和精力。当一个 POC  仅需要Hadoop生态系统中的一些组件来完成工作时,反复的配置系统是没有效率的,尤其当 Hadoop生态系统 的组件一直在增加时。

我们使用 SequenceIQ 提供的工具来开始我们的自动化Hadoop集群之旅,几分钟之内我们就能够启动一个多节点的Hadoop集群。有趣的是,他们采用blueprints 的格式来抽象化集群的配置,通过Docker的帮助来自动化集群的配置和启动。 Hortonworks收购SequenceIQ  表明了SequenceIQ所做的自动化Hadoop集群开发这类工作的重要性。

SequenceIQ启发了我们采用Docker。我们通过定制和调整SequenceIQ的Docker镜像取得了一些进展。我们为数据处理构建了一个完全的Docker化平台。

对于我们所有使用Hadoop组件的poc,我们创建了一致的,易于复制的Docker实例,取代了之前人们试着去在本地安装Hadoop生态系统的每个组件,对于开发和测试环境的需要,我们只需要创建一次,便能在任何时间和地点使用它。

这就是我们达到一致的开发,测试,集成和部署的方式之旅,是无缝的。 我们期待让Docker成为我们默认的神器,直到部署阶段。 虽然在企业环境中可能存在一些挑战,我们希望会有一个行业广泛采用Docker。 请继续翻看我们关于我们目前所作的尝试和成就的详细内容。

原文链接:Why we chose Docker to build Crayon’s data processing platform(翻译:覃璐)

原文发布时间为: 2016-01-31
本文作者:qinlu1988
本文来自云栖社区合作伙伴DockerOne,了解相关信息可以关注DockerOne。
原文标题:为什么我们选择Docker来构建Crayon的数据处理平台
目录
相关文章
|
28天前
|
存储 运维 安全
构建高效自动化运维体系:Ansible与Docker的完美结合
【2月更文挑战第31天】 随着云计算和微服务架构的兴起,自动化运维成为保障系统稳定性和提升部署效率的关键手段。本文将详细探讨如何通过Ansible和Docker的结合来构建一个高效、可靠且易于管理的自动化运维体系。首先,介绍自动化运维的必要性及其在现代IT基础设施中的作用;然后,分别阐述Ansible和Docker的技术特点及优势;最后,提供一个基于Ansible和Docker结合使用的实践案例,以及实施过程中遇到的挑战和解决方案。
|
29天前
|
运维 Kubernetes 监控
构建高效自动化运维体系:基于Docker和Kubernetes的实践指南
【2月更文挑战第30天】 在当今快速发展的云计算时代,传统的IT运维模式已难以满足业务的敏捷性和稳定性需求。本文深入探讨了如何通过Docker容器化技术和Kubernetes集群管理工具构建一个高效、可靠的自动化运维体系。文章首先概述了容器化技术和微服务架构的基本概念,随后详细阐述了基于Docker的应用打包、部署流程,以及Kubernetes在自动化部署、扩展和管理容器化应用中的关键作用。最后,文中通过案例分析,展示了如何在实际场景中利用这些技术优化运维流程,提高系统的整体效率和可靠性。
|
29天前
|
运维 安全 网络安全
构建高效自动化运维体系:Ansible与Docker的完美融合
【2月更文挑战第30天】在当今快速迭代和持续部署的软件发展环境中,自动化运维成为确保效率和稳定性的关键。本文将探讨如何通过结合Ansible和Docker技术,构建一个高效的自动化运维体系。我们将分析Ansible的配置管理功能和Docker容器化的优势,并展示它们如何协同工作以简化部署流程,增强应用的可移植性,并提供一致性的系统环境。此外,文章还将介绍一些最佳实践,帮助读者在真实环境中实现这一整合方案。
|
1月前
|
搜索推荐 测试技术 数据安全/隐私保护
【Docker项目实战】Docker环境下部署NeonLink书签平台
【2月更文挑战第17天】Docker环境下部署NeonLink书签平台
83 0
|
1天前
|
存储 运维 监控
构建高效稳定的Docker容器监控体系
【4月更文挑战第18天】 在现代微服务架构中,Docker容器已成为部署和运行应用的标准环境。随之而来的挑战是如何有效监控这些容器的性能与健康状况,确保系统的稳定性和可靠性。本文将探讨构建一个高效稳定的Docker容器监控体系的关键技术和方法,包括日志管理、性能指标收集以及异常检测机制,旨在为运维人员提供实用的指导和建议。
6 0
|
2天前
|
测试技术 Linux 网络安全
【好玩的开源项目】使用Docker部署SyncTV视频同步和共享平台
【4月更文挑战第16天】使用Docker部署SyncTV视频同步和共享平台
37 1
|
10天前
|
Linux Shell 虚拟化
linux 部署docker容器虚拟化平台(二)--------docker 镜像制作方法
linux 部署docker容器虚拟化平台(二)--------docker 镜像制作方法
14 0
|
13天前
|
测试技术 Linux 数据安全/隐私保护
【Docker项目实战】使用Docker部署PicoShare共享文件平台
【4月更文挑战第5天】使用Docker部署PicoShare共享文件平台
46 4
|
20天前
|
运维 Kubernetes 持续交付
构建高效自动化运维体系:基于Docker和Kubernetes的最佳实践
在现代云计算环境中,自动化运维成为保障系统稳定性与提升效率的关键。本文深入探讨了如何利用Docker容器化技术和Kubernetes容器编排工具构建一个高效、可靠的自动化运维体系。文中不仅介绍了相关的技术原理,还结合具体案例分析了实施过程中的常见问题及解决方案,为读者提供了一套行之有效的最佳实践指南。
|
22天前
|
运维 监控 云计算
构建高效稳定的Docker容器监控体系
随着微服务架构的普及,Docker容器作为其核心承载单元,在系统运维中扮演着日益重要的角色。本文旨在探讨如何构建一个高效且稳定的Docker容器监控体系,以确保容器运行的可靠性和系统的高可用性。文章首先分析了容器监控的必要性,接着详细介绍了监控体系的设计理念和组件选择,最后提供了实施过程中的关键步骤与最佳实践。通过本文,读者将掌握构建和维护Docker容器监控体系的有效方法。