我在Mesos上运行Docker容器的经验翻译版

上传人:宝路 文档编号:22210378 上传时间:2017-11-26 格式:DOCX 页数:6 大小:335.32KB
返回 下载 相关 举报
我在Mesos上运行Docker容器的经验翻译版_第1页
第1页 / 共6页
我在Mesos上运行Docker容器的经验翻译版_第2页
第2页 / 共6页
我在Mesos上运行Docker容器的经验翻译版_第3页
第3页 / 共6页
我在Mesos上运行Docker容器的经验翻译版_第4页
第4页 / 共6页
我在Mesos上运行Docker容器的经验翻译版_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《我在Mesos上运行Docker容器的经验翻译版》由会员分享,可在线阅读,更多相关《我在Mesos上运行Docker容器的经验翻译版(6页珍藏版)》请在金锄头文库上搜索。

1、我在 Mesos 上运行 Docker 容器的经验【编者的话】下面的这篇博客出自 John Omernik 之手,他是 Big Data Analytics 的Data Enthusiast 和 VP,还是 Zions Bank 的 Fraud Center of Excellence 的经理,Zions Bank 是家顶级的金融服务公司。在这篇博客中,作者分享了他是怎么利用新技术如Mesos 和 Docker 来使用 MapR 文件系统的,并编写了一个可以简化流程的脚本。我的技术栈正如在此博客中我所写到的,我想和你分享我如何在一个单集群中使用 Docker 容器来运行分析作业。我们在 Zio

2、ns 研究这个技术(当然,我也会在家运行它) ,该技术是在MapR 平台和 MapR-FS 之上运行的 Apache Mesos。我的目标是尝试构建一个无处不在的计算平台。为了分析,我运行了 Spark 和 Myriad(运行 MapR 和该领域的其他技术的话会产生较大的开发工作量)。我用 Myriad 来运行 MapReduce 作业。我将 Kafka 和Storm 同时运行于 Mesos,与 MapR 文件系统一起使用,或跟当前环境协同使用。当在 Mesos 上运行 Docker 容器时,MapR 会提供了极大的帮助。有一个例子是我在Docker 内部运行的服务,这个服务是 Hive me

3、tastore 服务。因为 Hive metastore 需要一个关系型数据库来持久化表的元数据,其需要我同时部署一个 MySQL 服务实例。我在一个基于 Mesos 的 Docker 内通过 Marathon 来发布该实例,而不是在集群之外的独立服务器上部署 MySQL。由于 MySQL 存储的数据非常重要,我想确认如果容器崩溃或其宿主机死掉,Marathon 是否可以创建新的容器并接管其离线的所有完好的数据。MapR-FS 的 NFS 功能可以很容易实现这点,因为它有随机读写的能力并且能为一个数据库维持负载的高性能。利用 MapR 文件系统一个需要我解决的问题是当一个 MySQL 数据库被

4、启用,需要对数据库文件进行独占访问。我想要预防另一个 Docker 容器的意外启动,而产生对数据库文件的访问,这是因为如果你想要你的数据库文件保持完整性,那么有两个 MySQL 实例访问相同的文件将不是一个好事。所以我对这个问题进行了深入研究,并同 Ted Dunning 和 Keys Botzum 在 MapR上开始了研究,我请教他们, “我如何使用一个锁?” 尽管从传统的 Unix 角度看,MapR NFS 不支持锁定,但 MapR 却支持启用锁定的文件系统标准,这种锁定是通过创建目录和新建文件来启用。听取了他们的建议,我写了一个脚本,实现了锁定模式,这种模式允许可靠的持久性数据存储。这就

5、意味着别人也可以从中获得好处,所以我将该脚本分享于此。这里分为两部分,第一部分是, “我想 lock 文件并且让其成为独占式的” 。这里并不支持,但另一方面,MapR 却支持 semantics,它能够创建一个目录并且是唯一一个能够创建该目录的,这也是我在该脚本中所使用的。我想能够创建一些东西,这样我的 Docker 容器可以检测到并且说, “有其他人正在使用这个数据,我需要关闭。 ”我的脚本可以阻止拥有两个不同的 MySQL 实例或 Hive Metastore 在我的集群之上运行,但我仍然有能力在我的集群的任意节点运行 MySQL。这里对其运行在哪没有任何限制。 Mesos 社区尝试去解决

6、该问题,其中一种方式是将数据持久化到不同的框架上 所以你可以使用该数据块 并且包含在未来的版本中。但 MapR 拥有高性能的文件系统,而且在我的所有节点上都可用,因此我想更好的利用它。为 Docker 容器处理文件系统锁而写的代码基本上讲,这段代码就像一个垫片,我调用该代码而不是启用我期望在 Mesos 中直接启用的任何进程,该代码会检测每个我设定的特定目录。例如,如果是 MySQL 或Minecraft Docker 容器,它会针对每个容器检测一个单独的地址。我的 Minecraft 服务器在 MapR-FS 中有一个地址;这正是其检测并决定是否它可以在该目录上拥用一个独占锁并运行。如果它不

7、能够这样做 它发现有些进程也对该目录上锁,它会知晓它不能够运行并关掉该容器。这就保证了我不会有多于一个的 相同类型的 Docker 容器。我不想两个 Minecraft 服务器运行,因为他们将工作在相同的数据之上,因而导致文件损坏。这里是我为 Docker 容器处理文件系统锁而写的代码:在 MapR 上运行开源软件:支持的非常好有些人可能会因为使用一个“混合体”如 MapR 而担忧。我的意思是你想要运行的大部分工具都将成为开源软件,当然文件系统不会。这正是对开源社区一些人的挑战,因为有些人会想, “我想运行 Spark;我想运行如 Mesos 这样的程序,如果我同时想运行其他的程序如 MapR

8、,谁会给我提供支持?谁会帮助我让它运行起来?如果我在标准的 Apache HDFS 上运行, 从社区的角度上来讲,很多人将会获得帮助。 ”这正是人们的恐惧之一(当开源与闭源捆绑使用) 。但我所发现的例子是,MapR 可通过资源如 ,也可以通过直接交互与社区很好地融合,如果这里有些事情我不能解决是因为我所需要的代码不存在,MapR 总是乐于和我一起工作并帮助我了解将会发生什么。给那些想在 MapR 之上运行 Mesos 和 Docker 的人们一些建议最开始确定给予 MapR 大量的资源,然后把剩下的资源给 Mesos。当前, 我倾向于“一半一半” ,因为我没有官方安装包,我仅仅是安装了 Map

9、R 和 Mesos,然后讲, “不错,一起运行的很好。 ”事情已经运作良好,但是我可以直观看到冲突,这取决于我如何调用资源。MapR 正在解决某些问题,在不久的将来他们尝试动态的在 MapR 和 Mesos 之间合理利用资源。其他在 MapR 上使用 Mesos 的有趣项目我可以在这里很容易的讲出针对一些科目的议题!我目前所做的与其相关的一些东西非常有趣 在集群上从运行 MySQL 数据库到运行我孩子的 Minecraft 服务器,我可以做任何事情。我发现了一件非常神奇的事情 它真的可以做任何事情。我的孩子们非常喜欢它。在 VM 中运行 Minecraft 服务器和在集群中的 Docker 里

10、运行之间没有任何问题。所有的 Minecarft 世界的数据是通过 NFS 服务保存于 MapR-FS。对于我来说,其真正解决了一个问题,因为 MapR 能够做到其他技术做不到的一些事情。我不知道 HDFS 上的文件如何做的随机读写;我并不知道如何在 HDFS 中运行 Minecraft但我能够用 MapR-FS 来实现。正如我所提到的,我正在通过 Mesos,使我个人的家庭网络运行于 MapR 上,因为这里有很多有趣的方式来使用它。当然,很少有人会做该层面的集成。我这样做了,是因为这可以让我了解 MapR 和 Mesos 是如何一起工作的。同时,我使用一个开源的基于 linux的 DVR,叫

11、做 MythTV,它可以让你能够录 TV。 我现在将它运行在一个 VM 里,并且我的目标是尝试将它运行于我的集群中的 Docker 里,仅仅是尝试看我是否能够实现。我非常享受使用技术比如基于 MapR 的 Mesos 和 Docker,并且我期望你会发现我为持久化 Docker 存储而写的这段代码非常有用。原文:My Experience with Running Docker Containers on Mesos=译者介绍张明锋,数人科技资深 DevOps,infrastructure 工程师。专注于分布式系统和 IDC(系统,网络,存储等)架构。对系统、数据库、网络、存储有深刻了解。日常开发使用Golang、C、C+、Python、Shell。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号