当前位置: 首页 > news >正文

第三课 Hadoop 三大核心组件笔记

1️⃣ HDFS(Hadoop Distributed File System)分布式文件系统 架构

  1. NameNode:存储文件的元数据,包括文件名、目录结构、文件属性(生成时间、副本数、权限),以及每个文件的块列表和块所在的 DataNode。不存储实际数据,只管理文件系统的命名空间。
  2. DataNode:在本地文件系统存储文件块数据,以及块数据的校验和。负责处理客户端的读写请求,并定期向 NameNode 汇报块信息。
  3. Secondary NameNode:定期对 NameNode 的元数据进行备份,合并编辑日志(Edits)和镜像文件(FsImage),以辅助 NameNode 恢复。注意:它并非 NameNode 的热备节点,而是一个检查点服务。

2️⃣ MapReduce 分布式计算框架
核心思想是 将大规模数据处理任务拆分为两个阶段:

  • - Map 阶段:对输入数据进行分片处理,每个分片由一个 Map 任务并行处理,生成中间键值对 (key, value)。
  • - Shuffle 阶段:将 Map 输出的中间结果按照 key 进行分区、排序、合并,分发到对应的 Reduce 节点。
  • - Reduce 阶段:对map结果进行汇总。对相同 key 的中间值进行聚合计算,生成最终结果并输出。


3️⃣ YARN(Yet Another Resource Negotiator)资源调度与管理系统 架构概述

  1. ResourceManager(RM):全局资源管理器,整个集群资源(内存、cpu等)的老大。处理客户端请求,启动和监控 ApplicationMaster。
  2. NodeManager(NM):单个节点服务器资源老大。每个节点上的代理,负责管理该节点上的资源和容器(Container)。定期向 RM 汇报节点健康状况和资源使用情况。
  3. ApplicationMaster:单个任务运行的老大。(1)负责数据的切分;(2)为程序应用申请资源并分配内部任务;(3)任务监控与容错。
  4. Container.容器,相当于一台独立的服务器,里面封装了任务运行所需要的资源,如内存、cpu、磁盘、网络等。

说明:客户端可以有多个;集群上可以运行多个ApplicationMaster;每个NodeManager上可以有多个Container。

核心作用:解耦了资源管理和任务调度,使得 Hadoop 可以运行多种计算框架(MapReduce、Spark、Flink 等),而不仅仅是 MapReduce。

Hadoop安装环境

一、启动Docker容器

1.加载镜像

实验使用的Docker镜像保存在/cg/images/hadoop_node.tar.gz文件中,执行如下命令加载该镜像:

docker load < /cg/images/hadoop_node.tar.gz

用来将一个docker镜像从/cg/images/hadoop_node.tar.gz压缩包加载到本地docker环境中。

启动实验容器

打开终端通过实验环境的用户查看docker网卡的IP地址,如果获取到的IP是172.18.0.1/16的IP地址,可以执行以下命令创建容器,如果获取到的是172.17.0.1/16,就需要把下列命令当中的172.18的地方修改为172.17,否则后续hosts文件会错乱。

以下 4 条 Docker 命令用于创建并启动 1 个主节点(master)+3 个从节点(slave1/slave2/slave3)的 Hadoop 集群容器,每条命令为节点配置固定 IP、主机名映射、系统权限、目录挂载,并自动执行服务启动脚本,最终形成可直接使用的 Hadoop 分布式环境。

docker run --name master --privileged --ulimit nofile=65535:65535 --hostname master --ip 172.18.0.2 --add-host=slave1:172.18.0.3 --add-host=slave2:172.18.0.4 --add-host=slave3:172.18.0.5 -itd -v /cgsrc:/cgsrc:ro -v /headless/course/:/course hadoop_node /service_start.sh docker run --name slave1 --privileged --ulimit nofile=65535:65535 --hostname slave1 --ip 172.18.0.3 --add-host=master:172.18.0.2 --add-host=slave2:172.18.0.4 --add-host=slave3:172.18.0.5 -itd -v /cgsrc:/cgsrc:ro hadoop_node /service_start.sh docker run --name slave2 --privileged --ulimit nofile=65535:65535 --hostname slave2 --ip 172.18.0.4 --add-host=master:172.18.0.2 --add-host=slave1:172.18.0.3 --add-host=slave3:172.18.0.5 -itd -v /cgsrc:/cgsrc:ro hadoop_node /service_start.sh docker run --name slave3 --privileged --ulimit nofile=65535:65535 --hostname slave3 --ip 172.18.0.5 --add-host=master:172.18.0.2 --add-host=slave1:172.18.0.3 --add-host=slave2:172.18.0.4 -itd -v /cgsrc:/cgsrc:ro hadoop_node /service_start.sh

docker run 是 Docker 的核心指令,用于创建并启动新容器。--name 用于为容器设置自定义名称,方便后续管理与操作。--privileged 用于赋予容器最高系统权限,解决 Hadoop 运行时的资源访问限制。--ulimit nofile=65535:65535 用于提升容器最大文件打开数量,避免 Hadoop 因文件句柄不足导致服务异常。--hostname 用于设置容器内部主机名,是 Hadoop 集群识别节点的关键配置。--ip 用于为容器分配固定 IP 地址,保障集群节点间网络通信稳定可靠。--add-host 用于手动配置容器的 hosts 文件,实现主机名与 IP 地址的直接映射,无需依赖外部 DNS 服务。-itd 是三个参数的组合,i 表示保持标准输入打开,t 表示分配伪终端方便操作,d 表示容器后台运行不占用当前终端。-v 用于实现宿主机与容器之间的目录挂载,末尾的 ro 表示挂载目录为只读权限,保障宿主机数据安全。hadoop_node 是本次集群使用的 Docker 镜像名称,需要提前加载到本地环境。/service_start.sh 是容器启动后自动执行的脚本,用于一键启动 Hadoop 相关服务。

2.查看启动的docker

docker ps

docker ps -a查看所有

3.启动docker start master

docker start slave1

docker start slave2

docker start slave3

4.进入容器

docker exec -it --privileged $NAME /bin/bash

将命令中的$NAME替换为对应的容器名称即可,比如进入master容器可以使用命令:

docker exec -it --privileged master /bin/bash

二、配置Hadoop环境

1.配置JAVA环境

Hadoop是基于Java语言开发的,因此需要安装Java环境。在这里仅介绍master的配置方法,slave1、slave2和slave3都需要按照下面的步骤配置Java环境!

先用docker exec -it --privileged master /bin/bash进入master;在容器master(root@mster /)中使用如下命令从资源文件夹/cgsrc中将JDK安装包复制到/usr/local/java目录下:

mkdir /usr/local/java cp /cgsrc/jdk-8u171-linux-x64.tar.gz /usr/local/java/

我们接下来切换到/usr/local/java目录下,将安装包解压,并删除用过的tar文件。

cd /usr/local/java/ tar -zxvf jdk-8u171-linux-x64.tar.gz rm -f jdk-8u171-linux-x64.tar.gz

此时/usr/local/java目录下仅有一个jdk1.8.0_171目录(ls查看),这就是Java主目录。

接下来需要配置JAVA_HOME环境变量,为了方便起见,这里直接在~/.bachrc这个文件中进行设置,采用这种配置方式时,只对当前登录的单个用户生效,当该用户登录以及每次打开新的Shell时,它的环境变量文件.bashrc会被读取。输入下面命令打开当前登录用户的环境变量配置文件.bashrc:(/中输入命令)

vim ~/.bashrc

在文件最后面添加如下3行(o/i插入模式),然后Esc :wq保存退出vim:

export JAVA_HOME=/usr/local/java/jdk1.8.0_171 export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar export PATH=$PATH:${JAVA_HOME}/bin

接下来让环境变量生效,执行如下代码:

source ~/.bashrc

执行上述命令后,可以检验一下是否设置正确:

echo $JAVA_HOME #检验变量值 java -version #查看java版本

输出如下即表明配置Java环境成功:

java version "1.8.0_171" Java(TM) SE Runtime Environment (build 1.8.0_171-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)
http://www.jsqmd.com/news/457967/

相关文章:

  • OpenClaw + Docker + MiniMax 本地养“龙虾”方案
  • 2026最新双组份中空玻璃胶厂家top5权威推荐!国内优质双组份中空玻璃胶权威厂商榜单发布 - 十大品牌榜
  • 用股票免费API快速搭建量化策略
  • 具身智能成两会热词,全球最小电缸量产,EAI提速,VLA融资破纪录
  • 真空电炉小型企业分离装置费用多少,值得合作的品牌有啥 - myqiye
  • 2026年值得推荐的粮库门窗生产商,个性化定制服务靠谱吗 - 工业推荐榜
  • TI C2000内部控制算法,包含零极点控制,PID,锁相环,MPPT最大功率点跟踪等
  • 三防布定做厂家
  • PID学习笔记(江协科技同款)
  • 计算机A类国际会议有哪些?
  • SSH暴力破解与弱口令攻击分析:一次由弱口令引发的测试服沦陷
  • 基于Docker和Gitea自建Git仓库镜像服务实践
  • 湖南本地GEO推广服务多少钱,湖南讯灵智能科技值得推荐吗 - mypinpai
  • AI智能名片系统有哪些功能?全面使用介绍
  • 【现代机器人学】一、位形空间(Configuration Space)
  • 短剧系统平台开发:前端后端技术选型与部署
  • 打破芯片壁垒:基于Docker与K8s的GB28181/RTSP异构AI视频平台架构实战
  • 关于 提取git所有提交日志导出到txt文本的 解决方法
  • 地球系统模式(CESM)应用
  • 光伏充电系统建模手记:当PO法遇上三阶段充电
  • DO-254通读--前言执行摘要目录
  • IACheck AI报告文档审核:驱动高端制造合规管理报告审核升级的新引擎
  • npm安装OpenClaw中Git报错解决方法
  • 深入理解 Java 反射:原理、使用场景与性能优化(超详细)
  • 别再瞎找了!AI论文平台,千笔·专业学术智能体 VS 万方智搜AI,继续教育写作首选!
  • 企微私域自动回复机器人:构建 7×24 小时智能响应系统
  • Java 高效实现 Excel 转 HTML:完整指南与代码示例
  • SpringBoot+vue汽车零件商城系统(java+springboot+elementui+vue+mysql)
  • 【Vue.js前端开发实战】第一章
  • 《AI+医疗:专知智库白皮书打通临床验证与市场准入》