Ubuntu 22.04 中的大数据 ------ 知识点详解
1. 大数据概述
1.1 大数据定义
大数据(Big Data)指无法用传统数据库工具在合理时间内捕获、存储、管理和分析的数据集合,具有 5V 特征:
- Volume(体量大):TB/PB 级别
- Velocity(速度快):实时/流式处理
- Variety(类型多):结构化、半结构化、非结构化
- Veracity(真实性):数据质量
- Value(价值密度低):需挖掘才有价值
1.2 大数据核心技术
| 技术 | 功能 |
|---|---|
| HDFS | 分布式文件系统,高容错、高吞吐 |
| MapReduce | 分布式计算模型,分"Map"和"Reduce"阶段 |
| YARN | 资源调度框架(本章以基础 Hadoop 为主) |
本章重点:在 Ubuntu 22.04 上部署 Apache Hadoop 3.3.6(最新稳定版之一)
2. 大数据基础环境准备
2.1 更新系统软件包
bash
sudo apt update && sudo apt upgrade -y
2.2 安装并配置 Java 环境(Hadoop 依赖 Java 8 或 11)
Ubuntu 22.04 默认不包含 Oracle JDK,推荐使用 OpenJDK 11:
bash
sudo apt install openjdk-11-jdk -y
验证安装:
bash
java -version
javac -version
预期输出:
openjdk version "11.0.23" 2024-04-16
OpenJDK Runtime Environment (build 11.0.23+9-Ubuntu-122.04)
2.3 配置 JAVA_HOME 环境变量
bash
# 查找 Java 安装路径
readlink -f $(which java) | sed "s:bin/java::"
# 输出示例:/usr/lib/jvm/java-11-openjdk-amd64/
# 编辑 ~/.bashrc
vim ~/.bashrc
在文件末尾添加:
bash
# Java 环境变量
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export PATH=$PATH:$JAVA_HOME/bin
生效配置:
bash
source ~/.bashrc
echo $JAVA_HOME # 应输出路径
3. 安装并配置 SSH(用于 Hadoop 节点通信)
即使单机模式,Hadoop 也通过 SSH 本地通信。
3.1 安装 SSH 服务
bash
sudo apt install openssh-server -y
3.2 配置免密登录(localhost)
bash
# 生成 RSA 密钥对(一路回车使用默认)
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
# 将公钥加入授权列表
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
# 设置权限(重要!)
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh
测试免密登录:
bash
ssh localhost
# 应无需密码直接登录,输入 exit 退出
4. 安装 Hadoop 开发平台
4.1 下载 Hadoop 安装包
bash
cd /tmp
wget https://dlcdn.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz
✅ 建议从 Apache 官网 获取最新稳定版链接。
4.2 解压并移动到系统目录
bash
sudo tar -xzf hadoop-3.3.6.tar.gz -C /opt/
sudo mv /opt/hadoop-3.3.6 /opt/hadoop
sudo chown -R $USER:$USER /opt/hadoop
4.3 配置 Hadoop 环境变量
编辑 ~/.bashrc:
bash
nano ~/.bashrc
追加以下内容:
bash
# Hadoop 环境变量
export HADOOP_HOME=/opt/hadoop
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"
生效:
bash
source ~/.bashrc
hadoop version # 验证是否成功
5. Hadoop 的运行模式
| 模式 | 说明 | 适用场景 |
|---|---|---|
| 单机模式(Standalone) | 默认模式,无守护进程,使用本地文件系统 | 快速测试 MapReduce 程序 |
| 伪分布式(Pseudo-Distributed) | 所有守护进程运行在同一台机器,模拟集群 | 开发、学习 |
| 完全分布式 | 多节点集群 | 生产环境 |
6. 单机模式下的大数据项目实例
6.1 新建工程目录
bash
mkdir -p ~/hadoop-demo/standalone
cd ~/hadoop-demo/standalone
6.2 准备输入数据文件
bash
# 创建输入目录
mkdir input
# 写入示例文本
echo "Hello Hadoop" > input/file1.txt
echo "Hello Big Data" > input/file2.txt
echo "Hadoop is powerful" >> input/file2.txt
6.3 运行 Hadoop 自带的 WordCount 示例
bash
# 运行 MapReduce 任务(单机模式)
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar \
wordcount input output
⏱️ 首次运行会编译 Job,稍慢。
6.4 查看测试效果
bash
# 查看输出结果
cat output/part-r-00000
预期输出:
Big 1
Data 1
Hadoop 2
Hello 2
is 1
powerful 1
✅ 单机模式无需任何配置,直接使用本地文件系统。
7. 伪分布式模式下的大数据项目实例
7.1 创建 Hadoop 数据目录
bash
mkdir -p ~/hadoop-data/namenode
mkdir -p ~/hadoop-data/datanode
7.2 修改 core-site.xml
xml
<!-- 文件路径: $HADOOP_HOME/etc/hadoop/core-site.xml -->
<configuration>
<!-- 指定 HDFS 的 NameNode 地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
<!-- 临时目录(用于存储 Hadoop 运行时临时文件) -->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/$(USER)/hadoop-data/tmp</value> <!-- 替换 $(USER) 为实际用户名 -->
</property>
</configuration>
💡 实际使用时将
$(USER)替换为你的用户名,例如/home/ubuntu/hadoop-data/tmp
7.3 修改 hdfs-site.xml
xml
<!-- 文件路径: $HADOOP_HOME/etc/hadoop/hdfs-site.xml -->
<configuration>
<!-- NameNode 元数据存储路径 -->
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/ubuntu/hadoop-data/namenode</value>
</property>
<!-- DataNode 数据块存储路径 -->
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/ubuntu/hadoop-data/datanode</value>
</property>
<!-- 副本数(单机设为 1) -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
7.4 (可选)修改 mapred-site.xml
bash
cp $HADOOP_HOME/etc/hadoop/mapred-site.xml.template \
$HADOOP_HOME/etc/hadoop/mapred-site.xml
编辑:
xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
7.5 (可选)修改 yarn-site.xml
xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
📌 本章聚焦 HDFS + MapReduce,YARN 可简化配置。
7.6 初始化 NameNode
bash
# 格式化 NameNode(首次启动必须执行)
hdfs namenode -format
成功标志:出现 Storage directory ... has been successfully formatted.
7.7 启动 Hadoop 伪分布式集群
bash
# 启动 HDFS
start-dfs.sh
# 启动 YARN(可选,用于 MapReduce on YARN)
start-yarn.sh
7.8 查看启动的 Hadoop 进程
bash
jps
预期输出(可能略有不同):
12345 NameNode
12456 DataNode
12567 SecondaryNameNode
12678 ResourceManager
12789 NodeManager
✅ 若缺少某些进程,检查日志:
$HADOOP_HOME/logs/
7.9 在 HDFS 上准备数据
bash
# 创建 HDFS 目录
hdfs dfs -mkdir /user
hdfs dfs -mkdir /user/ubuntu # 替换为你的用户名
# 上传本地 input 目录到 HDFS
hdfs dfs -put ~/hadoop-demo/standalone/input /user/ubuntu/
验证上传:
bash
hdfs dfs -ls /user/ubuntu/input
7.10 运行伪分布式 WordCount
bash
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar \
wordcount /user/ubuntu/input /user/ubuntu/output
查看结果:
bash
hdfs dfs -cat /user/ubuntu/output/part-r-00000
7.11 关闭 Hadoop
bash
stop-yarn.sh
stop-dfs.sh
7.12 再次启动 Hadoop
bash
start-dfs.sh
start-yarn.sh
jps # 验证进程
⚠️ 注意:不要重复格式化 NameNode,否则会丢失元数据!
8. 本章小结
本章完整演示了在 Ubuntu 22.04 上部署 Hadoop 单机模式与伪分布式模式 的全过程,包括:
- Java 11 环境配置
- SSH 免密登录设置
- Hadoop 3.3.6 安装与环境变量配置
- 单机模式快速运行 WordCount
- 伪分布式模式配置核心 XML 文件(core-site.xml, hdfs-site.xml)
- NameNode 初始化、HDFS 数据上传、MapReduce 任务提交
- 进程管理与日志查看
所有配置文件均提供可直接使用的模板,命令附带详细注释,适用于大数据初学者、开发者及教学实验环境搭建。
📌 最佳实践建议:
- 开发阶段使用伪分布式;
- 生产环境采用完全分布式集群 + ZooKeeper + HA 配置;
- 使用
hdfs dfsadmin -report查看 DataNode 状态;- Web UI 访问:NameNode http://localhost:9870,ResourceManager http://localhost:8088。
通过本章实践,读者已具备在 Ubuntu 上构建 Hadoop 开发环境的核心能力,为后续学习 Hive、Spark、HBase 等大数据生态组件奠定坚实基础。