
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
项目Git仓库地址:https://github.com/sfedyakov/hadoop-271-cluster
本项目是对https://github.com/lresende/docker-yarn-cluster%E7%9A%84%E5%85%8B%E9%9A%86%EF%BC%8C%E5%81%9A%E4%BA%86%E5%8F%AF%E7%94%A8%E6%80%A7%E5%A2%9E%E5%BC%BA%EF%BC%8C%E4%BD%BF%E5%85%B6%E8%83%BD%E5%9C%A8Docker Machine/Compose Swarm集群中工作(核心优化为跨节点同步/etc/hosts条目,解决Docker Compose的DNS和主机别名问题)。
基于Apache Hadoop 2.7.1和Yarn构建,用于快速部署Hadoop集群环境,支持多种部署方式,适用于大数据开发、测试及学习场景。
构建前需下载Oracle Java和Apache Hadoop安装包:
bashcurl -LO http://ftp.jaist.ac.jp/pub/apache/hadoop/core/hadoop-2.7.1/hadoop-2.7.1.tar.gz curl -LO 'http://download.oracle.com/otn-pub/java/jdk/8u73-b02/jdk-8u73-linux-x64.rpm' -H 'Cookie: oraclelicense=accept-securebackup-cookie'
构建镜像:
bashdocker build -t sfedyakov/hadoop-271-cluster .
1. 逐个启动节点
1.1 启动Namenode容器
bashsudo docker run -i -t --name namenode -h namenode sfedyakov/hadoop-271-cluster /etc/bootstrap.sh -bash -namenode
可通过http://<host>:8088/cluster访问Hadoop Admin UI(主机需关闭SELinux,boot2docker无需操作)。
1.2 启动Datanode容器
bashsudo docker run -i -t --link namenode:namenode --dns=namenode sfedyakov/hadoop-271-cluster /etc/bootstrap.sh -bash -datanode
可通过http://<host>:50070访问HDFS Admin UI。
2. 本地Docker Compose部署
准备类似docker-compose.yml_1machine的配置文件后,执行:
bashdocker-compose scale namenode=1 datanode=3
3. Docker Swarm分布式部署
3.a 准备Swarm集群机器
bashdocker-machine create -d virtualbox mh-keystore docker $(docker-machine config mh-keystore) run -d -p "8500:8500" -h "consul" progrium/consul -server -bootstrap docker-machine create -d virtualbox --swarm --swarm-master --swarm-discovery="consul://$(docker-machine ip mh-keystore):8500" --engine-opt="cluster-store=consul://$(docker-machine ip mh-keystore):8500" --engine-opt="cluster-advertise=eth1:2376" swarm-master docker-machine create -d virtualbox --swarm --swarm-discovery="consul://$(docker-machine ip mh-keystore):8500" --engine-opt="cluster-store=consul://$(docker-machine ip mh-keystore):8500" --engine-opt="cluster-advertise=eth1:2376" swarm-01 docker-machine create -d virtualbox --swarm --swarm-discovery="consul://$(docker-machine ip mh-keystore):8500" --engine-opt="cluster-store=consul://$(docker-machine ip mh-keystore):8500" --engine-opt="cluster-advertise=eth1:2376" swarm-02
3.b 创建Overlay网络
basheval $(docker-machine env --swarm swarm-master) docker network create --driver overlay --subnet=10.0.9.0/24 appnet
3.c 同步镜像到Swarm机器
导出镜像:
bashdocker save -o hdc271.tar sfedyakov/hadoop-271-cluster
移除旧镜像(若更新):
bashfor z in $(docker-machine ls --filter name=swarm* -q) ; do docker-machine ssh $z docker rmi sfedyakov/hadoop-271-cluster ; done
导入镜像到每个Swarm机器:
bashdocker-machine ssh swarm-01 docker load -i /<path_to_>/hdc271.tar && docker images && exit
3.d 启动集群
bashdocker-compose scale namenode=1 datanode=2
(注:支持Docker Machine兼容的基础设施如AWS、DO、OpenStack等)
修改副本因子
bashfor z in $(docker ps -q) ; do docker exec $z sed -i 's/<value>1/<value>2/' /usr/local/hadoop/etc/hadoop/hdfs-site.xml ; done
准备测试数据
bashdocker exec -it namenode /bin/bash --login hdfs dfs -mkdir -p /tmp/wnp/input/ curl -LO http://www.gutenberg.org/cache/epub/2600/pg2600.txt hdfs dfs -put pg2600.txt /tmp/wnp/input/ hdfs dfs -put pg2600.txt /tmp/wnp/input/wnp1.txt hdfs dfs -put pg2600.txt /tmp/wnp/input/wnp2.txt hdfs dfs -put pg2600.txt /tmp/wnp/input/wnp3.txt hdfs dfs -put pg2600.txt /tmp/wnp/input/wnp4.txt hdfs dfs -put pg2600.txt /tmp/wnp/input/wnp5.txt hdfs dfs -ls /tmp/wnp/input/ rm -f pg2600.txt exit
运行MapReduce任务
bashdocker exec namenode hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar wordcount /tmp/wnp/input/ /tmp/wnp/output/
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务