
!hadoop logo
Dockerfile链接Apache™ Hadoop®项目开发用于可靠、可扩展、分布式计算的开源软件。
Apache Hadoop软件库是一个框架,允许使用简单的编程模型在计算机集群上分布式处理大型数据集。它设计为从单台服务器扩展到数千台机器,每台机器提供本地计算和存储。该库并非依赖硬件来提供高可用性,而是在应用层设计为检测和处理故障,从而在可能容易发生故障的计算机集群之上提供高可用服务。
[***]
Docker是一个开放平台,供开发人员和系统管理员构建、交付和运行分布式应用程序。它由Docker Engine(一个便携、轻量级的运行时和打包工具)和Docker Hub(一个用于共享应用程序和自动化工作流的云服务)组成,使应用程序能够快速从组件组装,并消除开发、QA和生产环境之间的摩擦。因此,IT可以更快地交付,并在笔记本电脑、数据中心VM和任何云上运行相同的应用程序(无需修改)。
[***]
Docker镜像是容器的基础。镜像是只读的,而容器是可写的。只有容器可以由操作系统执行。
[***]
此命令在后台启动HDFS NameNode容器,并开始跟踪其日志。
bashdocker run -d --name hdfs-namenode \ -h hdfs-namenode -p 50070:50070 \ gelog/hadoop hdfs namenode && \ docker logs -f hdfs-namenode
如果日志中一切正常(无错误),按CTRL + C将控制台与日志分离。
此命令在后台启动单独的HDFS DataNode容器,将其与NameNode容器链接,并开始跟踪其日志。
bashdocker run -d --name hdfs-datanode1 \ -h hdfs-datanode1 -p 50075:50075 \ --link=hdfs-namenode:hdfs-namenode \ gelog/hadoop hdfs datanode && \ docker logs -f hdfs-datanode1
如果日志中一切正常(无错误),按CTRL + C将控制台与日志分离。
此命令在后台启动单独的HDFS Secondary NameNode容器,将其与NameNode容器链接,并开始跟踪其日志。
bashdocker run -d --name hdfs-secondarynamenode \ -h hdfs-secondarynamenode -p 50090:50090 \ --link=hdfs-namenode:hdfs-namenode \ gelog/hadoop hdfs secondarynamenode && \ docker logs -f hdfs-secondarynamenode
如果日志中一切正常(无错误),按CTRL + C将控制台与日志分离。
此命令在后台启动YARN系统容器。它与NameNode、DataNode链接。start-yarn.sh脚本启动YARN Node Manager和YARN Resource Manager。
bashdocker run -d --name yarn \ -h yarn \ -p 8088:8088 \ -p 8042:8042 \ --link=hdfs-namenode:hdfs-namenode \ --link=hdfs-datanode1:hdfs-datanode1 \ -v $HOME/data/hadoop/hdfs:/data \ gelog/hadoop start-yarn.sh && \ docker logs -f yarn
在HDFS中放入一些数据
bashdocker run --rm \ --link=hdfs-namenode:hdfs-namenode \ --link=hdfs-datanode1:hdfs-datanode1 \ gelog/hadoop \ hadoop fs -put /usr/local/hadoop/README.txt /README.txt
启动WordCount示例
此命令运行WordCount示例。
bashdocker run --rm \ --link yarn:yarn \ --link=hdfs-namenode:hdfs-namenode \ gelog/hadoop \ hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar wordcount /README.txt /README.result
如果README.result已存在,需要在运行MapReduce作业前删除它。
bashdocker run --rm --link=hdfs-namenode:hdfs-namenode \ --link=hdfs-datanode1:hdfs-datanode1 \ gelog/hadoop \ hadoop fs -rm -R -f /README.result
查看结果
bashdocker run --rm --link=hdfs-namenode:hdfs-namenode \ --link=hdfs-datanode1:hdfs-datanode1 \ gelog/hadoop \ hadoop fs -cat /README.result/*
每个组件都提供自己的Web UI。在浏览器中打开以下URL之一,其中dockerhost是运行Docker守护进程的主机名/IP。如果使用Linux,这是Linux机器的IP。如果使用OSX或Windows(通过Boot2docker),可以通过输入boot2docker ip获取Docker主机。在我的机器上,NameNode UI可通过http://192.168.59.103:50070/访问。
| 组件 | 端口 |
|---|---|
| HDFS NameNode | [***] |
| HDFS DataNode | [***] |
| HDFS Secondary NameNode | [***] |
| YARN Resource Manager | [***] |
| YARN Node Manager | [***] |
注意:终端需要位于docker-compose.yml所在的文件夹中。
可以使用docker-compose启动此镜像。它将启动一个NameNode、一个Secondary NameNode和一个DataNode。可以扩展DataNode的数量。
bashdocker-compose up -d && \ docker-compose logs
如果日志中一切正常(无错误),按CTRL + C将控制台与日志分离。
如果要增加集群中DataNode的数量:
bashdocker-compose scale datanode=<实例数量>
为了允许DataNode扩展,需要让Docker决定主机上使用的端口。要查找端口:
bashdocker-compose port datanode 50075
使用此端口,可以访问DataNode的Web界面。
以下是 gelog/hadoop 相关的常用 Docker 镜像,适用于 不同场景 等不同场景:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。




探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务