编辑
2025-12-20
大数据
00

目录

一、Hadoop介绍
Hadoop 的核心组成
HDFS(Hadoop Distributed File System)—— 分布式文件系统
MapReduce —— 分布式计算模型
YARN(Yet Another Resource Negotiator)—— 资源调度与管理框架
Hadoop 的核心优势
二、下载安装Hadoop

一、Hadoop介绍

Hadoop 是一个开源的分布式存储与分布式计算框架,由 Apache 基金会维护,核心目标是高效、可靠地处理海量结构化、半结构化和非结构化数据。它的设计初衷是解决传统单机无法承载的大数据存储和计算问题,具备高容错、高扩展、低成本的特点。

Hadoop 的核心组成

HDFS(Hadoop Distributed File System)—— 分布式文件系统

js
作用:负责海量数据的分布式存储,是 Hadoop 的 “数据仓库”。 核心特点: 分块存储:将大文件切分成固定大小的数据块(默认 128MB),分散存储在集群的不同节点上。 副本机制:每个数据块会生成多个副本(默认 3 个),存放在不同节点,保证数据容错性(某节点故障不会丢失数据)。 主从架构:由 NameNode(管理元数据,记录文件与数据块的映射关系)和 DataNode(存储实际数据块)组成。 局限性:适合一次写入、多次读取的场景,不适合小文件存储和频繁修改的操作。

MapReduce —— 分布式计算模型

js
作用:负责海量数据的离线批处理计算,是 Hadoop 的 “计算引擎”。 核心流程: Map 阶段:将任务拆分,多个节点并行处理局部数据,生成中间结果。 Reduce 阶段:汇总所有节点的中间结果,计算出最终输出。 局限性:处理延迟较高,不适合实时计算;只支持批处理,灵活性不足。

YARN(Yet Another Resource Negotiator)—— 资源调度与管理框架

js
作用:负责集群资源(CPU、内存)的统一调度和任务管理,相当于 Hadoop 集群的 “操作系统”。 核心特点: 解耦了 “资源管理” 和 “任务运行”,支持多种计算框架(除了 MapReduce,还能支持 SparkFlink 等)。 主从架构:由 ResourceManager(全局资源调度)和 NodeManager(单个节点的资源管理)组成。

Hadoop 的核心优势

js
高容错性:依赖 HDFS 的副本机制和任务重试机制,节点故障不影响整体任务。 高扩展性:集群可以通过添加普通服务器节点,线性提升存储和计算能力。 高吞吐量:专为批处理设计,能高效处理 TBPB 级别的海量数据。 低成本:可以运行在普通 x86 服务器集群上,无需昂贵的专用硬件。

image.png

二、下载安装Hadoop

先安装javaJDK8配置环境变量

js
# 1. 找到你的OpenJDK 8安装路径(rpm安装的OpenJDK通常在以下路径) find /usr/lib/jvm -name "java-1.8.0-openjdk*" # 输出示例:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-1.el7.x86_64 # 2. 配置JAVA_HOME(永久生效,所有用户可用) vim /etc/profile # 在文件末尾添加(替换为你查到的实际路径): export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-1.el7.x86_64 export PATH=$PATH:$JAVA_HOME/bin # 3. 生效并验证 source /etc/profile echo $JAVA_HOME # 输出上述路径则正确 # 4.绑定本地主机 echo "127.0.0.1 k8s-master01" >> /etc/hosts # 绑定本机hosts

上传解压hadoop包

js
rz hadoop-3.3.6.tar.gz tar -zxvf hadoop-3.3.6.tar.gz

继续配置环境变量

js
# 直接编辑全局配置文件,Root 用户生效 vim /etc/profile
js
# Hadoop 环境变量(Root 用户,路径:/opt/hadoop/hadoop-3.3.6export HADOOP_HOME=/opt/hadoop/hadoop-3.3.6 export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop export HADOOP_COMMON_HOME=$HADOOP_HOME export HADOOP_HDFS_HOME=$HADOOP_HOME export HADOOP_YARN_HOME=$HADOOP_HOME export HADOOP_MAPRED_HOME=$HADOOP_HOME export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-1.el7.x86_64 export JRE_HOME=$JAVA_HOME/jre export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
js
# 立即生效配置 source /etc/profile # 验证 HADOOP_HOME 路径(必须和解压路径一致) echo $HADOOP_HOME # 正确输出:/opt/hadoop/hadoop-3.3.6 # 验证 Java 环境(确保 JAVA_HOME 正确) echo $JAVA_HOME java -version # 验证 Hadoop 命令(无 "command not found" 则成功) hadoop version

注意

因为我是rpm包安装的javajdk导致自动安装的目录不同所以要建一个软链接,

js
# 先确认JAVA_HOME目录结构 ls -ld /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-1.el7.x86_64/bin # 输出 "No such file or directory",所以先创建bin目录 mkdir -p /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-1.el7.x86_64/bin # 核心操作:将实际的java可执行文件链接到Hadoop期望的路径 ln -s /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-1.el7.x86_64/jre/bin/java /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-1.el7.x86_64/bin/java # 验证软链接是否创建成功 ls -l /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-1.el7.x86_64/bin/java # 正常输出(指向jre下的java): # lrwxrwxrwx 1 root root 76 月 日 时:分 /usr/lib/jvm/.../bin/java -> /usr/lib/jvm/.../jre/bin/java chmod +x /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-1.el7.x86_64/bin/java # 验证链接后的java是否可执行 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-1.el7.x86_64/bin/java -version # 输出OpenJDK 1.8.0_262版本则正确 # 重新生效环境变量(确保配置无缓存) source /etc/profile # 执行hadoop version hadoop version # 正常输出示例(无报错则成功): # Hadoop 3.3.6 # Source code repository https://github.com/apache/hadoop.git -r 94261f61f91e2585fa572332d065983b1d113959 # Compiled by ubuntu on 2024-01-08T12:40Z # Compiled with protoc 3.7.1 # From source with checksum 2e364f1415f31111a65788c9c93a0700 # This command was run using /opt/hadoop/hadoop-3.3.6/share/hadoop/common/hadoop-common-3.3.6.jar

本文作者:松轩(^U^)

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

Document