Docker 部署分布式 Hadoop(超详细实战版)

Docker 部署分布式 Hadoop(超详细实战版)

Docker 部署分布式 Hadoop(超详细实战版)

适合人群:大数据初学者、运维工程师、想在本地快速搭建 Hadoop 集群的同学技术环境:CentOS 7 + Docker + Hadoop 2.7.2架构模式:1 Master + 2 Slave 分布式集群

一:背景

在传统方式下部署 Hadoop:

  • 需要准备多台虚拟机
  • 手动配置网络、主机名、SSH 免密
  • 重复安装 JDK、Hadoop
  • 环境不可复用

而使用 Docker 的优势:

✅ 环境隔离
✅ 一台机器模拟多节点
✅ 可快速销毁重建
✅ 镜像可复用
✅ 非常适合学习与实验

在真实生产中,例如在基于 Apache Hadoop 的数据平台环境中,也常结合容器化与编排技术使用。


二:部署

1)创建基础镜像

退出容器并提交为新的镜像

[root@hadoop ~]# exit[root@hadoop108 ~]# docker commit 容器ID centos:hadoop[root@hadoop108 ~]# docker images

创建软件目录

[root@hadoop ~]# mkdir -p /opt/module /opt/software

配置 SSH 服务并启动

[root@hadoop ~]# vim /etc/ssh/sshd_config Port 22 PermitRootLogin yes
[root@hadoop ~]# systemctl start sshd.service[root@hadoop ~]# systemctl enable sshd.service[root@hadoop ~]# systemctl status sshd.service

在容器内安装必要工具

[root@hadoop ~]# yum install -y vim net-tools openssh-server openssh-clients rsync

进入容器

[root@hadoop108 ~]# docker exec -it centos7 /bin/bash

查看运行中的容器

[root@hadoop108 ~]# docker ps

运行 CentOS 容器(带特权模式,用于启动 systemd 服务)

[root@hadoop108 ~]# docker run --privileged=true --name centos7 -h hadoop -itd centos:7 /usr/sbin/init

查看镜像列表

[root@hadoop108 ~]# docker images

搜索并拉取 CentOS 镜像

[root@hadoop108 ~]# docker search centos[root@hadoop108 ~]# docker pull centos:7

配置 Docker 镜像加速器

[root@hadoop108 ~]# vim /etc/docker/daemon.json
{ "registry-mirrors": ["https://3iy7bctt.mirror.aliyuncs.com"] } 
[root@hadoop108 ~]# systemctl daemon-reload[root@hadoop108 ~]# systemctl restart docker[root@hadoop108 ~]# docker info

查看 Docker 状态

[root@hadoop108 ~]# systemctl status docker

设置 Docker 开机自启

[root@hadoop108 ~]# systemctl enable docker

启动 Docker

[root@hadoop108 ~]# systemctl start docker

安装 Docker

[root@hadoop108 ~]# yum install -y docker

查看系统版本

[root@hadoop108 ~]# uname -r3.10.0-862.el7.x86_64 

2)创建 Hadoop

在 slave 节点配置环境变量(在 slave01 和 slave02 中执行)

[root@slave01 ~]# vim /etc/profile# JAVA_HOMEexportJAVA_HOME=/opt/module/jdk1.8.0_144 exportCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar exportPATH=$PATH:$JAVA_HOME/bin # HADOOP_HOMEexportHADOOP_HOME=/opt/module/hadoop-2.7.2 exportPATH=$PATH:$HADOOP_HOME/bin exportPATH=$PATH:$HADOOP_HOME/sbin 
[root@slave01 ~]# source /etc/profile

分发配置文件到 slave 节点

[root@master ~]# scp -r /opt/module/jdk1.8.0_144/ root@slave01:/opt/module/[root@master ~]# scp -r /opt/module/jdk1.8.0_144/ root@slave02:/opt/module/[root@master ~]# scp -r /opt/module/hadoop-2.7.2/ root@slave01:/opt/module/[root@master ~]# scp -r /opt/module/hadoop-2.7.2/ root@slave02:/opt/modusle/

配置 mapred-env.sh

export JAVA_HOME=/opt/module/jdk1.8.0_144 

配置 mapred-site.xml

[root@master hadoop]# mv mapred-site.xml.template mapred-site.xml
<property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> 

配置 yarn-site.xml

<property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.resourcemanager.hostname</name> <value>slave01</value> </property> 

配置 yarn-env.sh

export JAVA_HOME=/opt/module/jdk1.8.0_144 

配置 slaves 文件

master slave01 slave02 

配置 hdfs-site.xml

<property> <name>dfs.replication</name> <value>3</value> </property> <property> <name>dfs.namenode.secondary.http-address</name> <value>slave02:50090</value> </property> <property> <name>dfs.permissions.enabled</name> <value>false</value> </property> 

配置 hadoop-env.sh

export JAVA_HOME=/opt/module/jdk1.8.0_144 

配置 core-site.xml

<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://master:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/opt/module/hadoop-2.7.2/data/tmp</value> </property> </configuration> 

配置 Hadoop 配置文件

[root@master ~]# cd /opt/module/hadoop-2.7.2/etc/hadoop

安装 Hadoop

[root@master ~]# tar -xzvf /opt/software/hadoop-2.7.2.tar.gz -C /opt/module/
[root@master ~]# vim /etc/profile# HADOOP_HOMEexportHADOOP_HOME=/opt/module/hadoop-2.7.2 exportPATH=$PATH:$HADOOP_HOME/bin exportPATH=$PATH:$HADOOP_HOME/sbin 
[root@master ~]# source /etc/profile[root@master ~]# hadoop version

安装 JDK

[root@master ~]# tar -xzvf /opt/software/jdk-8u144-linux-x64.tar.gz -C /opt/module/
[root@master ~]# vim /etc/profile# JAVA_HOMEexportJAVA_HOME=/opt/module/jdk1.8.0_144 exportCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar exportPATH=$PATH:$JAVA_HOME/bin 
[root@master ~]# source /etc/profile[root@master ~]# java -version

从宿主机拷贝 Hadoop 和 JDK 安装包到容器

[root@hadoop108 ~]# docker cp jdk-8u144-linux-x64.tar.gz master:/opt/software[root@hadoop108 ~]# docker cp hadoop-2.7.2.tar.gz master:/opt/software

配置 SSH 免密登录

[root@master ~]# ssh-keygen -t rsa[root@master ~]# ssh-copy-id master[root@master ~]# ssh-copy-id slave01[root@master ~]# ssh-copy-id slavse02

设置 root 密码

[root@master ~]# passwd root[root@slave01 ~]# passwd root[root@slave02 ~]# passwd root

进入容器配置 hosts 文件(在每个容器中执行)

[root@master ~]# vim /etc/hosts172.17.0.3 master 172.17.0.4 slave01 172.17.0.5 slave02 

基于新镜像启动 Master 和 Slave 容器

[root@hadoop108 ~]# docker run --privileged=true --name master -h master -p 50070:50070 -itd centos:hadoop /usr/sbin/init[root@hadoop108 ~]# docker run --privileged=true --name slave01 -h slave01 -p 8088:8088 -itd centos:hadoop /usr/sbin/init[root@hadoop108 ~]# docker run --privileged=true --name slave02 -h slave02 -itd centos:hadoop /usr/sbin/init

3)启动 Hadoop

  1. 格式化 HDFS 并启动 Hadoop
  2. 浏览器访问
    • HDFS:http://宿主机IP:50070
    • YARN:http://宿主机IP:8088

在 slave01 节点执行:

[root@slave01 ~]# start-yarn.sh

在 master 节点执行:

[root@master ~]# hdfs namenode -format[root@master ~]# start-dfs.sh

4)保存镜像

将容器提交为镜像

[root@hadoop108 ~]# docker commit master centos:master[root@hadoop108 ~]# docker commit slave01 centos:slave01[root@hadoop108 ~]# docker commit slave02 centos:slave02

停止 Hadoop 集群

[root@slave01 ~]# stop-yarn.sh[root@master ~]# stop-dfs.sh

总结

本文完整演示了:

  • 制作 Hadoop 基础镜像
  • 构建三节点集群
  • 配置 SSH 免密
  • 配置 HDFS + YARN
  • 启动并验证 Web UI
  • 保存为可复用镜像

核心思想:

用 Docker 模拟分布式环境
用容器复刻真实大数据架构

对于正在做大数据方向学习或毕业设计的同学,这种方式可以极大降低实验成本。

Read more

OpenClaw 配置本地 Ollama 模型完整指南:零成本打造全离线个人 AI 助理

OpenClaw 配置本地 Ollama 模型完整指南:零成本打造全离线个人 AI 助理

OpenClaw 配置本地 Ollama 模型完整指南:零成本打造全离线个人 AI 助理(2026 最新版·含 Auth 配置) 大家好,我是你的 AI 技术博主。今天我们来聊一个 2026 年最火的本地 AI 助理项目——OpenClaw。它能帮你清理收件箱、发邮件、管理日历、处理文件、集成 Telegram/WhatsApp,甚至执行复杂任务,而且完全跑在你自己的电脑上。 配合 Ollama 运行本地模型(如 Qwen3、Qwen2.5、GLM-4.7、Llama3.3 等),你就可以实现真正零费用、零网络依赖、全隐私保护的智能体体验。官方从 Ollama 0.17

By Ne0inhk
人工智能:预训练语言模型与BERT实战应用

人工智能:预训练语言模型与BERT实战应用

人工智能:预训练语言模型与BERT实战应用 1.1 本章学习目标与重点 💡 学习目标:掌握预训练语言模型的核心思想、BERT模型的架构原理,以及基于BERT的文本分类任务实战流程。 💡 学习重点:理解BERT的双向注意力机制与掩码语言模型预训练任务,学会使用Hugging Face Transformers库调用BERT模型并完成微调。 1.2 预训练语言模型的发展历程与核心思想 1.2.1 为什么需要预训练语言模型 💡 传统的自然语言处理模型(如LSTM+词嵌入)存在两个核心痛点:一是需要大量标注数据才能训练出高性能模型,二是模型对语言上下文的理解能力有限。 预训练语言模型的出现解决了这些问题。它的核心思路是先在大规模无标注文本语料上进行预训练,学习通用的语言知识和语义表示,再针对特定任务进行微调。这种“预训练+微调”的范式,极大降低了对标注数据的依赖,同时显著提升了模型在各类NLP任务上的性能。 预训练语言模型的发展可以分为三个阶段: 1. 单向语言模型阶段:以ELMo为代表,通过双向LSTM分别学习正向和反向的语言表示,再拼接得到词向量。但ELMo本质还

By Ne0inhk
《发现了一种本地AI服务远程管理难题与一种加密隧道解决方案!》

《发现了一种本地AI服务远程管理难题与一种加密隧道解决方案!》

现在用着开源大语言模型、Stable Diffusion这类AI工具的人越来越多了,不少开发者都选在自己家或者公司的本地硬件上搭AI服务,比如带显卡的台式机、Linux服务器,还有NAS设备都行。这么弄确实能完全自己掌控隐私,数据也全在自己手里,但麻烦事儿也来了:怎么才能安全又方便地从外面的网络远程访问、管理这些本地的AI服务呢? 以前常用的端口映射办法吧,不安全;要搭VPN的话,步骤又太复杂,一般人搞不定。今天咱们就聊聊用P2P虚拟组网技术做的那种简单好用的解决办法。 本地部署AI后,常见的远程访问需求包括: 1. 状态监控:在外查看服务的CPU/GPU占用、日志和运行状态。 2. 交互操作:远程使用WebUI(如ChatGPT-Next-Web、Stable Diffusion WebUI)进行推理或生图。 3. 文件管理:安全地传输生成的文件或更新模型。 直接通过公网IP+端口暴露服务,相当于将内网服务置于公网扫描之下,极易成为攻击目标。而商用远程桌面软件通常延迟较高,且不适合长期后台服务管理。 一种思路:如果构建加密的虚拟局域网呢? 理想的方案是,让远程设

By Ne0inhk
2026 Python+AI入门|0基础速通,吃透热门轻量化玩法

2026 Python+AI入门|0基础速通,吃透热门轻量化玩法

🎁个人主页:User_芊芊君子 🎉欢迎大家点赞👍评论📝收藏⭐文章 🔍系列专栏:AI 文章目录: * 一、2026 Python+AI入门,必抓3个热门新趋势 * 二、入门前提:不用啃硬骨头,掌握这2点就够了 * 环境搭建(10分钟搞定,Windows/Mac通用) * 三、3个实战案例 * 案例1:30行代码开发AI文本总结工具(轻量化工具,最易上手) * 案例2:大模型微调入门(Llama 3微调,2026热门) * 案例3:AI自动数据标注(图像标注,企业刚需) * 四、Python+AI入门学习流程图(2026最新,不绕路) * 五、2026新手避坑指南 * 六、总结 【前言】 大家好,我是一名深耕AI入门教学的开发者,

By Ne0inhk