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

尽管在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)。
图片描述
图自Daniel Templeton的演讲内容

陷阱二: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/

推荐阅读:

【译闻】容器的管理,也是一门艺术
IT专家们谈OpenStack和K8s的未来
Docker容器云在金融行业的应用
自研容器调度引擎Newben会成为“中国的K8s”?

[零基础]用docker搭建Hadoop集群 [零基础]用docker搭建Hadoop集群,每一步都有详细的解释! 阅读详情

相关推荐

Docker生态会重蹈Hadoop的覆辙吗?

目录  一、Docker的兴起和hadoop何其相似  二、大数据从狂热走向了理性  三、Hadoop生态圈的演进  四、Docker的生态圈  五、Docker公司的战略野心受生态圈狙击  六、Docker生态圈的演进  七、开源技术也需要商业的成功  八、Docker生态圈的推论  九、给准备Docker尝鲜的客户的建议  一、Docker的兴起和Hadoop何其相似  2015年说是Dock

霍力强的专栏 6073

hadoop集群&docker 的一些坑

即使每次 stop-dfs.sh 也会出现 tmp 目录文件被删除的情况 tmp 目录不安全,Linux 每次重启,文件可能被删除 hregionserver 有时启动很慢,jps 多次后才看到进程 报错: regionserver.HRegionServer: reportForDuty to master=localhost,16000,1442913779830

yuzx2008的博客 2754

【信息科学与工程学】【数据科学】数据科学领域-第十一篇 数据集成算法01

​​降低维护成本​​:通过抽象通用流程(如),当需要修改故障注入逻辑(如更换混沌工具)时,只需修改一处代码,无需修改所有测试用例;​​提升扩展性​​:通过参数化故障场景(如),可快速生成新的故障用例(如针对新服务的延迟故障),适应系统迭代需求;​​增强场景真实性​​:通过组合混沌操作(如),模拟真实生产环境中的复杂故障链(如“网络延迟+服务宕机”),更准确地验证系统韧性;​​提高分析效率​​:通过自动化结果分析(如),快速获取MTTR、错误率等关键指标,减少人工分析时间。

weixin_49199313的博客 957

基于Docker部署分布式Hadoop

基于Docker部署分布式Hadoop

qq_48959845的博客 363

docker搭建hadoop集群(为分布式、完全分布式)

第1章 写在前面必读 1.1 Hadoop生态简单说明 说明:hadoop只是一个存储数据的平台,mapreduce是一个计算框架,需要编程人员去编写处理数据的程序。然后hadoop是一个生态,就是说在其上还运行着hbase数据库,sqoop,shark等等工具,这样才能将hadoop存储的数据加以利用。Hbase是一种时序数据库,可用来往hadoop写数据,并通过hadoop读取数据,搭建这些的时候还要用到zookeeper软件去管理消息。总之hadoop生态涉及的东西太多,学习起来复杂,但是并不难,就是

weixin_40548182的博客 1万+

Huber损失函数中的阈值δ是如何确定的?

Huber损失函数通过阈值δ将误差划分为两部分:当误差小于等于δ时,采用平方损失(MSE),以保持对小误差的敏感性;当误差大于δ时,采用线性损失(MAE),以降低异常值对模型的影响。

百态·数智思维 | 聚焦大数据、量化与未来AI 1931

大数据云计算——Docker环境下部署Hadoop集群及运行集群案列

本文着重介绍了在Docker环境下部署Hadoop集群以及实际案例中的集群运行。首先,文章详细解释了Hadoop的基本概念和其在大数据处理中的重要性,以及为何选择在Docker环境下部署Hadoop集群。接着,阐述了在Docker中配置和启动Hadoop集群所需的步骤和技术要点。通过本文,读者可以深入了解如何利用Docker环境快速搭建Hadoop集群,并通过案例展示集群的运行过程,为大数据云计算中的Hadoop应用提供了实用的指导和参考。

专注 AI、大数据、Python、爬虫、数据分析可视化、机器学习、推荐算法、知识图谱、大模型应用与全栈系统开发,长期沉淀真实项目案例、源码解析、系统设计、部署经验与工程化实践,分享可运行、可复用、可落地的技术方案。 2714

Codesys—Modbus RTU称重变送器通讯案例

Codesys控制器使用标准的Modbus库,与支持ModbusRTU的称重变送器进行通讯的案例

原来你也__的博客 2741

基于 Docker 搭建 Hadoop 分布式及 Docker 基本操作使用

Docker的基础操作

weixin_62819687的博客 3389

FPGA新手必看:XC7Z020最小系统搭建全攻略(附原理图解析)

本文为FPGA新手提供了XC7Z020最小系统搭建的完整实战指南。文章详细解析了电源架构、时钟复位、配置调试等关键硬件电路设计,并重点剖析了外围电路与端口引脚的连接要点及常见陷阱,帮助读者从零开始构建稳定可靠的开发平台。

weixin_29189377的博客 360

手把手教你为智能手表DIY一个离线导航:LVGL + SD卡地图实战

本文详细介绍了如何为智能手表DIY一个离线导航系统,结合LVGL图形库和SD卡地图数据。从硬件选型、地图数据处理到LVGL地图引擎实现,提供了完整的实战指南,特别适合户外运动爱好者和嵌入式开发者。文章还分享了功耗优化、性能提升等实用技巧,帮助读者打造高效的离线导航解决方案。

weixin_42570484的博客 206

为什么微软应该通过收购Docker来与Kubernetes竞争

前言 Docker自今年4月Dockercon以来,都在对外宣称一件事:Docker已正式布局企业级服务,要利用已有的资源实现自身盈利需求。虽然Docker自有其扩展的优势,但从市场的另一端来看,Google在这方面则表现更强势。Kubernetes有Google的强大靠山,而Docker也不会孤军奋战,目前看来,Docker和微软的结合有可能给容器市场...

weixin_34001430的博客 186

NVIDIA Video Codec SDK-解码接口cuvid简介

特性已废弃的 NVCUVID现代的 NVDECODE (底层 API)现代的 NVDECODE (高层 API - NvDecoder)状态已废弃 (Deprecated)官方推荐 (底层控制)官方推荐 (易用性首选)编程模型C 函数C 函数C++ 类复杂度高,需要管理大量细节中高,仍需管理解码会话低,开箱即用灵活性高高中(满足绝大多数场景)推荐对象遗留项目维护需要极致控制的高级用户所有新项目、大多数开发者。

fudexiang的博客 1180

【译闻】Docker用以提高Linux内核安全性的三大热点技术

前言 LinuxKit项目目前正在孵化几种用以提高Linux安全性的技术,包括Wireguard VPN和Landlock。今年4月18日,Docker正式对外发布一款开源工具包LinuxKit,用以构建容器优化的Linux发行版。目前,Docker想通过在其LinuxKit社区中孵出几个新生的Linux安全项目来提高Linux内核安全性。 对Docker公司来说,Docker的安全性至关...

xinxinyunli的博客 607

流体仿真软件:COMSOL Multiphysics二次开发_(3).流体仿真基础理论

流体仿真基础理论包括流体的基本性质、流体运动方程、边界条件、初始条件、湍流模型和网格生成等。在使用COMSOL Multiphysics进行流体仿真时,正确设置这些参数和条件是获得准确仿真结果的关键。通过实际应用案例,可以更好地理解如何在COMSOL中进行流体仿真,并提取和分析仿真结果。希望本文对流体仿真初学者和从业人员有所帮助。

kkchenjj的博客 1343

C#与倍福TwinCAT3通信实战:ADS协议封装与设备变量读写完整源码

倍福(Beckhoff)TwinCAT3 作为工业自动化领域主流的软PLC系统,其内置的ADS(Automation Device Specification)协议是实现上位机与TwinCAT3通信的核心标准。传统ADS通信开发存在门槛高(协议细节复杂)、稳定性差(缺乏统一异常处理)、复用性低(重复编码)等问题。本文基于 C# 技术栈,聚焦“协议封装标准化、变量读写易用化、通信稳定工业化”核心需求,提供一套完整的 ADS 协议封装方案与设备变量读写源码。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1987

数据科学新手避坑地图:6小时构建AI就绪工作流

数据科学不是工具堆砌,而是以问题为起点、数据为基石、可交付为终点的系统性实践。其核心原理在于建立‘机器替代重复判断’的AI思维惯性——从Excel识别缺失与异常,到SQL精准取数,再到Python自动化清洗与scikit-learn标准化建模,最终通过Tableau实现业务可理解的表达。这一路径强调最小可行闭环、环境稳定性(如Anaconda版本锁)与跨工具协作刚性(如SQL为取数强制入口、Jupyter承载可复现逻辑)。它直击转行者与业务岗最痛难点:环境报错、编码混乱、结果不可解释、交付难落地。本文即围绕

aiman5818的博客 446

SFT看这一篇就够了!万字长文:监督微调(Supervised Fine-Tuning, SFT)技术全解析【从理论到实战】

大家好,我是大 F,深耕AI算法十余年,互联网大厂技术岗。分享AI算法干货、技术心得。欢迎关注,一起探索技术的无限可能!

大F子的智能小课 713

开发者为什么必须建技术博客:职业基建与知识资产化

技术博客不是可选的个人品牌装饰,而是现代开发者必备的职业基础设施。它本质是将碎片化经验转化为结构化知识的过程,依托静态站点生成器(如Hugo)实现内容沉淀、SEO友好与长期可信度积累。在AI工具泛滥的当下,能清晰解释‘为什么某个LLM提示词本地失效而云端有效’的深度复盘能力,远比调用API更稀缺。博客作为自有流量资产,支撑从问题诊断、技术决策树构建到职业机会转化的全链路——它既是认知校准器,也是工程师对抗遗忘、建立专业信用的核心杠杆。

dengwan3818的博客 396

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Docker环境部署Hadoop并使用docker构建spark运行案列(全网最详细教程)

本文主要是Docker部署hadoop 和使用docker构建spark运行环境,里面有详细的安装配置教程和操作说明,环境没问题的话,按照操作基本都能部署完成和运行,后面也有一些案列可以帮助更好的操作和理解hadoop和spark运行原理。

专注 AI、大数据、Python、爬虫、数据分析可视化、机器学习、推荐算法、知识图谱、大模型应用与全栈系统开发,长期沉淀真实项目案例、源码解析、系统设计、部署经验与工程化实践,分享可运行、可复用、可落地的技术方案。 9915

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

docker安装hadoop集群遇到的一些问题

2./usr/local/hadoop/sbin目录调用start-all.sh,启动过程提示Slave1: nodemanager is running as process 226. Stop it first.1.连接不了hadoopMaster,这个在启动hadoop(haddop目录/sbin ./start-all.sh)就好了。这二步都做了,再调用start-all.sh启动就正常了。解决方案:在/etc/profile里加了一行。解决方案:在/etc/profile文件内。...

m0_67402096的博客 1015

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

超详细!关于在Docker里安装Hadoop的详细操作(部署单点集群)

同时,未定义 HDFS_NAMENODE_USER、HDFS_DATANODE_USER 和 HDFS_SECONDARYNAMENODE_USER 环境变量。这个问题的核心原因是 Hadoop 的分布式模式需要 SSH 无密码访问,而当前用户 hadoop 无法通过 SSH 无密码访问自身或 localhost。这一步很有可能会报错,报错:找不到你的JAVA_HOME,原因是你的JDK镜像容器文件的地址可能跟你配置的Dockerfile文件中的地址不同。这个时候你需要运行JDK8镜像容器,然后查找路径。

ffhhsxvhh的博客 3497

实战:使用Docker部署Hadoop集群

用docker方式部署hadoop集群较普通物理更为简单,且方便管理。本次实战过程用的bridge网络,如果需要远程访问hdfs则是需要用host网络构建容器。

勤于笔记,成于点滴。 1675

Docker-compose部署Hadoop

Docker部署Hadoop的优势Docker部署Hadoop的优势:简化部署流程:使用Docker可以快速部署Hadoop集群,无需手动安装和配置各个组件;提高可移植性:Docker容器可以在不同的环境中运行,保证了Hadoop集群的可移植性;方便管理和维护:Docker提供了一套完整的容器管理和维护工具,可以方便地管理和维护Hadoop集群;节省资源:使用Docker可以避免虚拟化技术带来的性能损失,同时也可以节省硬件资源。Hadoop在Docker中的限制。

Winter的博客 2027

使用docker进行部署hadoop

使用docker进行部署hadoop

junsuyiji的博客 2178
上一篇: 【好书推荐】适合开发者学习DevOps的5本好书
下一篇: 私有云真的比公有云便宜?
ghostcloud精灵云
博客等级 码龄11年 81粉丝 88原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值