- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[我在Mesos上运行Docker容器的经验翻译版
我在Mesos上运行Docker容器的经验【编者的话】下面的这篇博客出自John Omernik之手,他是Big Data Analytics的Data Enthusiast和VP,还是Zions Bank的Fraud Center of Excellence的经理,Zions Bank是家顶级的金融服务公司。在这篇博客中,作者分享了他是怎么利用新技术如Mesos和Docker来使用MapR文件系统的,并编写了一个可以简化流程的脚本。我的技术栈正如在此博客中我所写到的,我想和你分享我如何在一个单集群中使用Docker容器来运行分析作业。我们在Zions研究这个技术(当然,我也会在家运行它),该技术是在MapR平台和MapR-FS之上运行的Apache Mesos。我的目标是尝试构建一个无处不在的计算平台。为了分析,我运行了Spark和Myriad(运行MapR和该领域的其他技术的话会产生较大的开发工作量)。我用Myriad来运行MapReduce作业。我将Kafka和Storm同时运行于Mesos,与MapR文件系统一起使用,或跟当前环境协同使用。当在Mesos上运行Docker容器时,MapR会提供了极大的帮助。有一个例子是我在Docker内部运行的服务,这个服务是Hive metastore服务。因为Hive metastore需要一个关系型数据库来持久化表的元数据,其需要我同时部署一个MySQL服务实例。我在一个基于Mesos的Docker内通过Marathon来发布该实例,而不是在集群之外的独立服务器上部署MySQL。由于MySQL存储的数据非常重要,我想确认如果容器崩溃或其宿主机死掉,Marathon是否可以创建新的容器并接管其离线的所有完好的数据。MapR-FS的NFS功能可以很容易实现这点,因为它有随机读写的能力并且能为一个数据库维持负载的高性能。利用MapR文件系统一个需要我解决的问题是当一个MySQL数据库被启用,需要对数据库文件进行独占访问。我想要预防另一个Docker容器的意外启动,而产生对数据库文件的访问,这是因为如果你想要你的数据库文件保持完整性,那么有两个MySQL实例访问相同的文件将不是一个好事。所以我对这个问题进行了深入研究,并同Ted Dunning和Keys Botzum在MapR上开始了研究,我请教他们,“我如何使用一个锁?” 尽管从传统的Unix角度看,MapR NFS不支持锁定,但MapR却支持启用锁定的文件系统标准,这种锁定是通过创建目录和新建文件来启用。听取了他们的建议,我写了一个脚本,实现了锁定模式,这种模式允许可靠的持久性数据存储。这就意味着别人也可以从中获得好处,所以我将该脚本分享于此。这里分为两部分,第一部分是,“我想lock文件并且让其成为独占式的”。这里并不支持,但另一方面,MapR却支持 semantics,它能够创建一个目录并且是唯一一个能够创建该目录的,这也是我在该脚本中所使用的。我想能够创建一些东西,这样我的Docker容器可以检测到并且说,“有其他人正在使用这个数据,我需要关闭。”我的脚本可以阻止拥有两个不同的MySQL实例或Hive Metastore在我的集群之上运行,但我仍然有能力在我的集群的任意节点运行MySQL。这里对其运行在哪没有任何限制。 Mesos社区尝试去解决该问题,其中一种方式是将数据持久化到不同的框架上——所以你可以使用该数据块——并且包含在未来的版本中。但MapR拥有高性能的文件系统,而且在我的所有节点上都可用,因此我想更好的利用它。为Docker容器处理文件系统锁而写的代码基本上讲,这段代码就像一个垫片,我调用该代码而不是启用我期望在Mesos中直接启用的任何进程,该代码会检测每个我设定的特定目录。例如,如果是MySQL或Minecraft Docker容器,它会针对每个容器检测一个单独的地址。我的Minecraft服务器在MapR-FS中有一个地址;这正是其检测并决定是否它可以在该目录上拥用一个独占锁并运行。如果它不能够这样做——它发现有些进程也对该目录上锁,它会知晓它不能够运行并关掉该容器。这就保证了我不会有多于一个的 相同类型的Docker容器。我不想两个Minecraft服务器运行,因为他们将工作在相同的数据之上,因而导致文件损坏。这里是我为Docker容器处理文件系统锁而写的代码:在MapR上运行开源软件:支持的非常好有些人可能会因为使用一个“混合体”如MapR而担忧。我的意思是你想要运行的大部分工具都将成为开源软件,当然文件系统不会。这正是对开源社区一些人的挑战,因为有些人会想,“我想运行Spark;我想运行如Mesos这样的程序,如果我同时想运行其他的程序如MapR,谁会给我提供支持?谁会帮助我让它运行起来?如果我在标准
文档评论(0)