Hadoop伪分布式模式搭建全攻略:从环境配置到实战测试

引言

作为大数据生态的基石,Hadoop凭借其高可靠性、扩展性成为分布式计算的首选框架。本文将手把手带你完成Hadoop伪分布式模式部署,通过单节点模拟集群环境,为后续学习MapReduce、YARN等核心组件打下基础

目录

引言

[Hadoop 发展历史](#Hadoop 发展历史)

[1.1 起源(2002--2005)](#1.1 起源(2002–2005))

[1.1 安装JDK 1.8](#1.1 安装JDK 1.8)

[3.3 伪分布式模式](#3.3 伪分布式模式)

[3.3.1 环境准备](#3.3.1 环境准备)

[3.3.2 配置 SSH 免密登录](#3.3.2 配置 SSH 免密登录)

[3.3.3 修改 Hadoop 配置文件](#3.3.3 修改 Hadoop 配置文件)

[3.3.4 格式化 HDFS](#3.3.4 格式化 HDFS)


Hadoop 发展历史

1.1 起源(2002--2005)

Google 的三大论文:Hadoop 的核心思想来源于 Google 的分布式技术论文:

2003年:Google 发表《The Google File System》(GFS),提出分布式文件系统。

2004年:Google 发表《MapReduce: Simplified Data Processing on Large Clusters》,提出分布式计算模型。

2006年:Google 发表《Bigtable: A Distributed Storage System for Structured Data》,启发后续 NoSQL 数据库发展。

Doug Cutting 的贡献 :受 Google 论文启发,Doug Cutting 和 Mike Cafarella 在 2002年 开始开发开源搜索引擎 Nutch,并在 2006年 将其分布式计算模块独立为 Hadoop(名称来源于 Doug Cutting 儿子的玩具大象)。

成为 Apache 项目(2006--2008)

2006年:Hadoop 正式成为 Apache 开源项目。

2008年:Hadoop 成为 Apache 顶级项目,同年 Yahoo! 成功用 Hadoop 集群处理 1TB 数据排序任务(仅需 209秒),验证其大规模数据处理能力。

Hadoop 1.0 时代(2009--2012)

2009年 :Hadoop 1.0 发布,核心模块包括 HDFS(分布式文件系统)MapReduce(分布式计算框架)

生态初现:Apache Hive(数据仓库)、Apache Pig(脚本化数据处理)等项目加入生态。

Hadoop 2.0 与 YARN(2012--2015)

2012年 :Hadoop 2.0 发布,引入 YARN(Yet Another Resource Negotiator),将资源管理与计算框架解耦,支持多种计算模型(如 Spark、Tez)。

商业化兴起:Cloudera、Hortonworks、MapR 等公司推出企业级 Hadoop 发行版。

生态爆发与挑战(2015--2020)

计算引擎多样化:Spark(内存计算)、Flink(流处理)等框架崛起,部分替代 MapReduce。

云原生趋势:AWS、Azure 等云厂商推出托管 Hadoop 服务(如 EMR),但 Hadoop 本地部署市场份额受云存储(如 S3)冲击。

当前阶段(2020至今)

Hadoop 3.x:支持 Erasure Coding(节省存储)、GPU 加速、容器化部署(Kubernetes 集成)。

生态融合:Hadoop 与云原生技术(如 Kubernetes)、实时计算(Flink)结合,适应现代数据湖架构。


1.1 安装JDK 1.8

# 查询已安装的 JDK 包

rpm -qa | grep 'java\|jdk\|gcj\|jre'

# 卸载指定包(替换为实际查询结果)

yum -y remove java*

安装jdk

百度云盘

通过网盘分享的文件:张家界学院

链接: https://pan.baidu.com/s/1IQgOZFa29gceR-eyUdZj2Q?pwd=w3rd 提取码: w3rd

jdk-8u181-linux-x64.tar.gz

解压到opt

tar -zxvf jdk-8u181-linux-x64.tar.gz -C /opt/

ln -s /opt/jdk1.8.0_181 /opt/jdk1.8 # 创建软链接便于维护

配置环境变量

sudo vi /etc/profile

echo 'export JAVA_HOME=/opt/jdk1.8

export PATH=JAVA_HOME/bin:PATH' >> /etc/profile

source /etc/profile

或者手动加入

export JAVA_HOME=/opt/jdk1.8 #填写自己的jdk路径

export PATH=JAVA_HOME/bin:PATH

环境生效

source /etc/profile

Hadoop 版本:选择稳定版本(如 Hadoop 3.3.6)

从 Apache 官网下载二进制包(以 Hadoop 3.3.6 为例):

wget https://mirrors.aliyun.com/apache/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz

安装

解压到指定目录(例如 /opt/hadoop)

tar -zxvf hadoop-3.3.6.tar.gz -C /opt/

mv /opt/hadoop-3.3.6 /opt/hadoop

配置环境变量(编辑 ~/.bashrc 或 ~/.zshrc)

bash 复制代码
export HADOOP_HOME=/opt/hadoop

export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

使配置生效

source ~/.bashrc

查看

hadoop version

测试

准备输入文件

创建输入目录

mkdir -p ~/hadoop-input

写入测试文本

echo "Hello World Hello Hadoop" > ~/hadoop-input/test.txt

hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar \

wordcount ~/hadoop-input ~/hadoop-output

查看结果

cat ~/hadoop-output/part-r-00000

3.3 伪分布式模式

以下是 Hadoop **伪分布式模式(Pseudo-Distributed Mode)**的环境搭建步骤。伪分布式模式下,Hadoop 的各个组件(如 HDFS、YARN、MapReduce)以独立进程运行,但所有服务均部署在单台机器上,模拟多节点集群的行为。这是学习和开发中最常用的模式。

3.3.1 环境准备

操作系统:Linux(如 Ubuntu/CentOS)或 macOS(Windows 需通过 WSL 或虚拟机)。

前置条件

完成 Hadoop 单机模式 的安装(JDK 和 Hadoop 解压配置)。

配置 SSH 免密登录(用于启动 Hadoop 服务)。

3.3.2 配置 SSH 免密登录

Hadoop 需要通过 SSH 启动本地进程

生成 SSH 密钥(如果已有密钥可跳过)

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

将公钥添加到授权列表

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

测试免密登录本机

ssh localhost

输入 exit 退出

3.3.3 修改 Hadoop 配置文件

cd /opt/hadoop/etc/hadoop

编辑 core-site.xml

bash 复制代码
<configuration>
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://localhost:9000</value>
  </property>
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/tmp/hadoop-tmp</value>
  </property>
</configuration>

编辑 hdfs-site.xml

配置 HDFS 副本数(伪分布式设为 1):

bash 复制代码
<configuration>
  <property>
    <name>dfs.replication</name>
    <value>1</value>
  </property>
  <!-- 启用 Web 访问接口 -->
  <property>
    <name>dfs.namenode.http-address</name>
    <value>localhost:9870</value>
  </property>
</configuration>

编辑 mapred-site.xml

指定 MapReduce 使用 YARN 框架

bash 复制代码
<configuration>
  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>
</configuration>

编辑 yarn-site.xml

配置 YARN 资源管理:

bash 复制代码
<configuration>
  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>
  <property>
    <name>yarn.resourcemanager.hostname</name>
    <value>localhost</value>
  </property>
</configuration>

3.3.4 格式化 HDFS

首次启动前需格式化 NameNode:

hdfs namenode -format

编辑 Hadoop 环境配置文件

bash 复制代码
vim $HADOOP_HOME/etc/hadoop/hadoop-env.sh
export HDFS_NAMENODE_USER="root"
export HDFS_DATANODE_USER="root"
export HDFS_SECONDARYNAMENODE_USER="root"
export YARN_RESOURCEMANAGER_USER="root"
export YARN_NODEMANAGER_USER="root"
export JAVA_HOME=/opt/jdk1.8  # 替换为你的实际路径

启动服务

$HADOOP_HOME/sbin/stop-all.sh

$HADOOP_HOME/sbin/start-dfs.sh

$HADOOP_HOME/sbin/start-yarn.sh

查看

输入jps

分布式安装已经完成

停止服务

停止 YARN

$HADOOP_HOME/sbin/stop-yarn.sh

停止 HDFS

$HADOOP_HOME/sbin/stop-dfs.sh

验证进程是否终止

jps

应仅剩余 Jps 进程(或无 Hadoop 相关进程)

通过本文的步骤,你已完成:

  1. 单节点模拟集群环境搭建
  2. HDFS + YARN + MapReduce核心组件配置
  3. 经典WordCount任务验证
  4. 常见问题排查方法

此环境可作为学习:

  • HDFS文件操作(hdfs dfs -put/get/ls
  • YARN资源调度
  • Spark on Hadoop集成
  • Hive数据仓库搭建

的基础平台。建议后续通过修改workers文件并配置多节点SSH免密登录,逐步扩展为完全分布式集群。

相关推荐
lekami_兰14 分钟前
MySQL 长事务:藏在业务里的性能 “隐形杀手”
数据库·mysql·go·长事务
Dxy123931021636 分钟前
别再让 ES 把你拖垮!5 个实战技巧让搜索性能提升 10 倍
大数据·elasticsearch·搜索引擎
2501_943695331 小时前
大专市场调查与统计分析专业,怎么辨别企业招聘的“画饼”岗位?
大数据
七夜zippoe1 小时前
CANN Runtime跨进程通信 共享设备上下文的IPC实现
大数据·cann
威胁猎人1 小时前
【黑产大数据】2025年全球电商业务欺诈风险研究报告
大数据
十月南城2 小时前
Hadoop基础认知——HDFS、YARN、MapReduce在现代体系中的位置与价值
hadoop·hdfs·mapreduce
L543414462 小时前
告别代码堆砌匠厂架构让你的系统吞吐量翻倍提升
大数据·人工智能·架构·自动化·rpa
证榜样呀2 小时前
2026 大专计算机专业必考证书推荐什么
大数据·前端
LLWZAI2 小时前
让朱雀AI检测无法判断的AI公众号文章,当创作者开始与算法「躲猫猫」
大数据·人工智能·深度学习
難釋懷2 小时前
分布式锁的原子性问题
分布式