在Hadoop上运行Docker容器的六大陷阱

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 据悉Hadoop3.0将很可能在年底发布,其主要功能Hbase擦除编码将得到改进,并将为用户提供1.5倍的存储空间。这意味着可以节省用户一半的硬盘成本,并对YARN和MapReduce的用户产生巨大的影响。

关于译者Ghostcloud
Ghostcloud(中文名:精灵云)是成都精灵云科技有限公司旗下的基于Docker的PaaS/CaaS平台品牌。公司成立于2015年,核心团队由来自EMC、Veritas、华为、IBM、Microsoft的核心技术主管和架构师组成。精灵云作为国内首批从事容器虚拟化研发的企业,为企业级行业客户提供针对互联网化、私有云管理平台、大数据业务基础架构的平台服务,在国内Docker社区贡献排名前三。主创团队曾参与Beego开源项目研发,并主导发布《Docker容器实战:原理、架构与应用》一书。Ghostcloud因容器技术而生,致力于为多个领域的“互联网+”转型企业提供服务,是一流的企业级容器云服务专家。

尽管在Hadoop上集成了容器负载的潜在价值,目前任职于Cloudera的Daniel Templeton仍然建议在部署Docker容器之前,等待Hadoop 3.0版本引入安全问题和其他问题的注意事项。在上周于迈阿密召开的北美Apache大会上,Daniel在演讲中表示:“它的潜在价值确实很大,但Hadoop3.0发布前,它仍然解决不了你的问题。容器很酷,但你确实还无法使用它。”

作为Cloudera 的YARN项目中的一名软件工程师,Templeton曾深入了解过由Hadoop Linux Container Executor提供的Docker支持(下载),也曾经探讨过何时会出现更好的选择。他曾在探讨中坚持地认为是Docker应用在Hadoop之上,而不是Hadoop应用在Docker上。

“如果你也有一个Hadoop集群,你会和我一样,想在Docker容器里执行工作负载的。”

虽然Hadoop的YARN调度引擎目前支持Docker作为已提交应用的执行引擎,但当你在现有版本的Hadoop中执行它的时候,还是需要提前了解那些“坑”。

陷阱一:Docker容器中必须开放应用权限
目前,当你在运行Docker容器时,需要指定一个用户运行它。如果你指定的是用户ID而不是用户名,假如这个用户ID不存在,它也会自动为你创建用户。这种重新映射在遇到大量image的时候是无法正常工作的,也就意味着用户必须事先指定,如若不然,你将无法访问任何内容,也不能启动脚本和记录日志,将完全处于宕掉的状态。

这个问题目前还没有一个很好的解决办法,如果你有好的想法,欢迎到YARN-4266上参与讨论(https://issues.apache.org/jira/browse/YARN-4266)。

陷阱二:Docker容器和运行环境之间不独立
可移植性是Docker容器最主要的特性之一,但运行于Hadoop的时候Docker的可移植性却不怎么好。当你想访问HDFS或者当你需要反译令牌,又或者当你需要像MapReduce这样的框架,亦或你想做Spark的时候,你必须得拥有image中的代码文件才可以实现。因此Hadoop的版本必须升级。

升级Hadoop版本的补丁程序可以在YARN-5534上下载(下载地址:https://issues.apache.org/jira/browse/YARN-5534)。

该补丁程序允许安装被列为白名单的存储卷,且开放管理员权限。当你拥有管理员权限,不仅这些目录可以被允许安装到Docker容器中,而且可以指定要挂载的目录。但需要注意的是,千万不要挂载任何可能会搞砸的东西。

陷阱三:image太大就会报错
当执行程序的时候,docker_run将隐含地从repo中拉出图像,虽然Spark和MapReduce都有10分钟的超时时间,但如果图像太大,网络下载时间超过了10分钟,程序就会报错。假如持续地重新提交程序,导致的最终结果将会是程序处在某个已经尝试过的节点上并运行。目前针对这种图像报错,YARN上对图像缓存暂无有效的解决方法。

陷阱四:不支持安全回收
Docker会将访问了client_config中安全备份的.docker / config.json文件进行存储备份,这个应该众所周知。这意味着当你访问安全备份时,无论从哪个节点管理器登录,你都会受到用户主目录中.docker / config.json文件的约束。恐怕这种限制没人能接受。

陷阱五:网络只有最基本的支持
众所周知,当应用Kubernetes、Mesos这类容器管理工具的时候,网络很容易就得到实现,CNS也能得到处理。但YARN却提供不了这样的网络管理服务。YARN没有内置的端口映射的概念,网络也没有真正的自动化管理。相反,如果你想请求访问网络,你只能通过所有节点管理器上的Docker来显式创建网络。

陷阱六:具备较大的安全隐患
Docker在Hadoop上运行是有安全隐患的。为什么这么说?Docker中的一个特权容器可以窥探底层操作系统,访问斜线进程和设备。假如是以root权限运行在容器当中,那么在底层操作系统中很有机会执行非常可怕的操作。当这种情况发生的时候,YARN目前是无法指定到用户的。虽然可以通过将其关闭或限制到某一特定用户组的做法来控制它,但这个安全隐患的问题必须得到重视。

Hadoop 3.0
虽然Hadoop2.8中存在Docker的修复程序,但仍然不够用。在本次更新版本中,Hadoop3.0新增功能点:
•支持本地化的文件目录作为卷进行安装;
•支持cgroups;
•支持不同的网络选项;
•支持文档;

据悉Hadoop3.0将很可能在年底发布,其主要功能Hbase擦除编码将得到改进,并将为用户提供1.5倍的存储空间。这意味着可以节省用户一半的硬盘成本,并对YARN和MapReduce的用户产生巨大的影响。

目前Hadoop3.0的项目一直与雅虎,Twitter和微软等主要用户合作,确保与现有系统的兼容性,并且不会出现任何痛苦的滚动升级。

原文:https://thenewstack.io/docker-hadoop-theres-good-bad-ugly/

目录
打赏
0
0
0
0
105
分享
相关文章
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
针对本地存储和 PVC 这两种容器存储使用方式,我们对 ACK 的容器存储监控功能进行了全新升级。此次更新完善了对集群中不同存储类型的监控能力,不仅对之前已有的监控大盘进行了优化,还针对不同的云存储类型,上线了全新的监控大盘,确保用户能够更好地理解和管理容器业务应用的存储资源。
361 183
课时5:阿里云容器服务:最原生的集成Docker和云服务
阿里云容器服务以服务化形式构建容器基础设施,大幅提升开发效率,简化应用部署流程。通过Docker容器和DevOps工具(如Jenkins),实现自动化部署与迭代,优化企业内部复杂部署问题。该服务支持GPU调度、混合云架构无缝迁移,并与阿里云产品体系无缝集成,提供安全防护、网络负载均衡等多重功能支持。凭借微服务架构,帮助企业突破业务瓶颈,提高资源利用率,轻松应对海量流量。
课时5:阿里云容器服务:最原生的集成Docker和云服务
Docker+consul容器服务的更新与发现
通过本文的介绍,我们详细探讨了如何结合Docker和Consul来实现容器服务的更新与发现。通过Consul的服务注册和发现功能,可以高效地管理和监控容器化服务,确保系统的高可用性和可扩展性。希望本文能帮助您在实际项目中更好地应用Docker和Consul,提高系统的可靠性和管理效率。
62 23
容器化AI模型的监控与治理:确保模型持续稳定运行
在前几篇文章中,我们探讨了AI模型的容器化部署及构建容器化机器学习流水线。然而,将模型部署到生产环境只是第一步,更重要的是确保其持续稳定运行并保持性能。为此,必须关注容器化AI模型的监控与治理。 监控和治理至关重要,因为AI模型在生产环境中面临数据漂移、概念漂移、模型退化和安全风险等挑战。全面的监控涵盖模型性能、数据质量、解释性、安全性和版本管理等方面。使用Prometheus和Grafana可有效监控性能指标,而遵循模型治理最佳实践(如建立治理框架、定期评估、持续改进和加强安全)则能进一步提升模型的可信度和可靠性。总之,容器化AI模型的监控与治理是确保其长期稳定运行的关键。
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
ubuntu22 编译安装docker,和docker容器方式安装 deepseek
本脚本适用于Ubuntu 22.04,主要功能包括编译安装Docker和安装DeepSeek模型。首先通过Apt源配置安装Docker,确保网络稳定(建议使用VPN)。接着下载并配置Docker二进制文件,创建Docker用户组并设置守护进程。随后拉取Debian 12镜像,安装系统必备工具,配置Ollama模型管理器,并最终部署和运行DeepSeek模型,提供API接口进行交互测试。
310 15
如何在宿主主机运行容器中的php守护进程
在Docker容器中同时运行多个程序(如Nginx+PHP+Ftp)时,需用`docker exec`命令启动额外服务。首先通过`php -v`查看PHP版本,再用`which php-fpm7.4`确认PHP安装路径,通常返回`/usr/sbin/php-fpm7.4`。最后直接运行该路径启动PHP-FPM服务,确保其正常工作。
47 14
docker安装nginx,前端项目运行
通过上述步骤,你可以轻松地在Docker中部署Nginx并运行前端项目。这种方法不仅简化了部署流程,还确保了环境的一致性,提高了开发和运维的效率。确保按步骤操作,并根据项目的具体需求进行相应的配置调整。
170 25
ACK容器监控存储全面更新:让您的应用运行更稳定、更透明
介绍升级之后的ACK容器监控体系,包括各大盘界面展示和概要介绍。
70 21

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等