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

ubuntu上安装OpenClaw并接入飞书机器人

ubuntu上安装OpenClaw并接入飞书机器人

大家好,我是一根甜苦瓜。今天来分享如何在本地安装openclaw并接入飞书,实现让AI给我打工。 最近AI圈更新太快了,从github copilot到cursor 到claud code ,再到codex,然后是最近火爆了的小龙虾(OpenClaw),可谓是百花齐放,应接不暇。本人也是github copilot+codex的深度用户,确实不错,所以最近打算折腾一下小龙虾,顺带教大家如何把智谱GLM 接入OpenClaw。 1. 前言 1.1 什么是openclaw 2026 年开年,AI 圈突然冒出一匹“野生黑马”——OpenClaw。这个开源个人 AI 助手项目在 GitHub 上只用了 两周时间就狂揽 15 万 Star,速度堪比开挂。 简单说,它就像给你配了一个 24 小时不下班的数字打工人: 把它部署在自己的电脑或服务器上,它就能接入 WhatsApp、Telegram、

By Ne0inhk

从零开始:OpenClaw安装+飞书机器人全流程配置指南(附踩坑实录)

从零开始:OpenClaw 安装 + 飞书机器人全流程配置指南(附踩坑实录) 本文面向完全零基础的小白,手把手带你从一台干净的 Linux 机器开始,安装 OpenClaw、配置 AI 模型、对接飞书机器人,最终实现在飞书里和 AI 直接对话。全程附带我自己踩过的坑和解决方案。 目录 * 一、OpenClaw 是什么? * 二、环境准备 * 三、安装 OpenClaw * 四、初始配置(onboard 向导) * 五、飞书机器人配置全流程 * 六、踩坑实录 & 避坑指南 * 七、验证一切正常 * 八、进阶:常用命令速查 一、OpenClaw 是什么? OpenClaw 是一个开源的 AI Agent

By Ne0inhk
【选型】地瓜机器人RDK系列选型指南:X3 vs X5 vs S100 vs S100P(含资源对比图)

【选型】地瓜机器人RDK系列选型指南:X3 vs X5 vs S100 vs S100P(含资源对比图)

在机器人开发领域,地瓜机器人(D-Robotics)凭借其“RDK(Robot Developer Kit)”系列开发套件,已成为众多开发者和创业团队的首选平台。从轻量级边缘计算到高性能具身智能,地瓜机器人已构建了覆盖多场景的完整产品线,致力于为开发者提供高性价比、高集成度、高扩展性的解决方案。其核心芯片“旭日®”系列持续迭代,推动AI与机器人深度融合,助力实现从感知到控制的全链路自主化。 本文将深入对比当前主流的四款RDK开发套件:RDK X3、RDK X5、RDK S100、RDK S100P,并提供详细的资源对比图与应用场景分析,帮助你快速完成技术选型,降低开发门槛,提升项目落地效率。 一、产品定位概览 在深入参数前,先明确每款产品的核心定位,以便根据项目阶段、预算和性能需求做出合理选择。 ● RDK X3:轻量级边缘AI计算模组,适合入门级机器人、智能摄像头、无人机等低功耗、小体积场景。是初学者和教育项目的理想起点,具备基础AI推理能力,可快速搭建视觉识别系统。 ● RDK

By Ne0inhk
【机器人数值优化】数值优化基础(一)从理论到实战全方位指南 | 解锁机器人技术的核心技能

【机器人数值优化】数值优化基础(一)从理论到实战全方位指南 | 解锁机器人技术的核心技能

💯 欢迎光临清流君的博客小天地,这里是我分享技术与心得的温馨角落 💯 🔥 个人主页:【清流君】🔥📚 系列专栏: 运动控制 | 决策规划 | 机器人数值优化 📚🌟始终保持好奇心,探索未知可能性🌟 文章目录 * 引言 * 一、参考书籍推荐 * 二、数值优化的定义与组成 * 2.1 数值优化组成部分 * (1) 优化变量 * (2) 目标函数 * (3) 不等式约束 * (4) 等式约束 * 2.2 数值优化前提假设 * 三、数值优化在机器人中的应用 * 3.1 平滑与映射:非线性最小二乘法 * 3.2 轨迹规划: 非线性问题 * 3.3 点云配置:半定规划 * 3.4 时间最优路径参数化:二阶锥规划 * 四、数值优化基础

By Ne0inhk