Linux 基础教程:从零到进阶,成为最强管理员
由 linux.mba「Most Badass Admin」最强管理员社区撰写
第五部分: 进阶专题与未来方向
第十八章:Linux 在大数据与 AI 中的应用
18.1 Hadoop 与 Spark 简介
18.1.1 什么是大数据?
我们先来通俗一点解释下“大数据”是个啥玩意儿——
假设你每天用微信发消息、刷朋友圈、点外卖、叫快车,还登录了支付宝查账单、打开京东剁手、在 B 站摸鱼……这些操作背后都会产生数据,量大得离谱。每天可能有上千亿条数据产生,你让一个 Excel 打开试试看?分分钟卡死你电脑。
于是,“大数据”就出现了,它是专门用来处理这种“量大、类型多、增长快”的数据的技术。
18.1.2 Hadoop 是什么?
Hadoop 是一个“分布式”的大数据处理平台。
啥叫“分布式”?打个比方:
你搬家,请了 100 个朋友来帮忙,每人负责搬一个房间,这样效率是不是高得多?Hadoop 就是这么干活的——它把任务分成小块,扔给一堆计算机去干活,大家各司其职,然后把结果再整合回来。
Hadoop 主要由两个核心组成:
- HDFS(Hadoop Distributed File System):分布式文件系统,负责把数据分片保存到多台服务器上。
- MapReduce:数据处理引擎,负责“把任务分发-执行-收集结果”。
举个栗子:你要统计 10 亿条网页中“Linux”这个词出现多少次,Hadoop 会把这些网页分成小块,丢给 100 台机器,每台机器统计自己的部分,然后统一汇总。
18.1.3 Spark 是什么?
Spark 是“下一代”大数据处理引擎,相当于 Hadoop 的“卷王”继任者。
它最大的特点就是“快”,因为它把数据存在内存里,不用像 Hadoop MapReduce 那样每次都往硬盘上读写数据。再举个栗子:
Hadoop:我拿个笔记本抄题,再上交;
Spark:我直接用脑子背答案,现场回答。
Spark 同样支持分布式运算,但还能支持机器学习(MLlib)、图计算(GraphX)、实时流处理(Spark Streaming)等一整套应用。
18.1.4 Hadoop 和 Spark 的对比(简单版)
特性 | Hadoop MapReduce | Spark |
---|---|---|
运行机制 | 硬盘为主 | 内存为主 |
处理速度 | 慢 | 快 |
实时处理 | 不支持 | 支持 |
易用性 | 写代码复杂 | API 更友好 |
适合场景 | 批量处理大数据 | 实时/交互式处理 |
总结一句话:Hadoop 稳重可靠,Spark 迅猛高效,现代大数据平台通常是 Spark 更受欢迎,但 Hadoop 仍在背后做数据存储。
18.2.1 什么是“大数据集群”?
简单点说,“集群”就是一群电脑一起干活。这群电脑可以是虚拟机、实体服务器,甚至是你在自己笔记本里跑几个虚拟机也算“集群”(别笑,很多学习者都是这么练手的)。
在大数据平台中,常见的集群架构大概是这样:
- 一台主节点(Master):主要负责“指挥调度”。
- 多台从节点(Slave):负责“干活执行任务”。
就像一个建筑工地,一个包工头 + 一群工人,包工头负责说“这边给我挖 3 米”,工人们就开始动手了。
18.2.2 准备工作
系统环境建议:
- Linux:建议使用 Ubuntu 或 CentOS(更推荐 CentOS,因为很多大数据项目文档是基于它写的)
- 至少两台机器(主 + 从)
- 配置互信(SSH 免密码登录)
安装 OpenJDK(因为 Hadoop 是 Java 写的)
sudo apt update
sudo apt install openjdk-11-jdk -y
检查 Java 是否安装成功:
java -version
输出示例:
openjdk version "11.0.20" 2023-07-18
提示:Hadoop 一定要有 Java 环境,不然连启动都起不来。
18.2.3 安装 Hadoop(单节点模式)
这里我们先搞个“单机模式”跑一套 Hadoop,当成学习环境使用。真正部署集群,可以用这个基础扩展出去。
第一步:下载 Hadoop
去官网 Apache Hadoop 下载 Hadoop 压缩包。你也可以用命令下载:
wget https://downloads.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz
解压:
tar -zxvf hadoop-3.3.6.tar.gz
sudo mv hadoop-3.3.6 /usr/local/hadoop
第二步:配置环境变量
编辑 ~/.bashrc
,加入以下内容:
# Hadoop
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
使配置生效:
source ~/.bashrc
第三步:配置 Hadoop
进入配置目录:
cd /usr/local/hadoop/etc/hadoop
编辑以下文件(解释都写在下面了):
core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
fs.defaultFS
:指定 Hadoop 的文件系统地址,这里我们用本地机器模拟。
hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value> <!-- 备份份数,学习环境设1即可 -->
</property>
</configuration>
mapred-site.xml
(这个文件默认是 mapred-site.xml.template
,先复制一份)
cp mapred-site.xml.template mapred-site.xml
然后编辑内容:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value> <!-- 使用 YARN 执行任务 -->
</property>
</configuration>
yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
18.2.4 启动 Hadoop
先格式化 HDFS 文件系统:
hdfs namenode -format
启动 HDFS:
start-dfs.sh
启动 YARN:
start-yarn.sh
验证是否启动成功:
jps
应该能看到类似下面的内容:
1234 NameNode
2345 DataNode
3456 ResourceManager
4567 NodeManager
到这里,一个最基础的 Hadoop 单机环境就搭好了!
你可以访问 Web 管理界面:
- HDFS 管理界面:http://localhost:9870
- YARN 管理界面:http://localhost:8088
18.3 深度学习与 AI 框架(如 TensorFlow、PyTorch)的安装与配置
随着 AI 大模型爆火,越来越多的人开始接触深度学习了。而 Linux,恰好就是搞 AI 最好用的系统之一。无论是部署 TensorFlow 还是 PyTorch,都是在 Linux 上跑得最稳。
注意:如果你没显卡(比如笔记本没独显),不要强行折腾 GPU 版本,乖乖装 CPU 版本就行,学习也够了。
18.3.1 安装 Python 和 pip(如果你还没有)
绝大多数深度学习框架基于 Python 开发,Python 环境必须先准备好。
sudo apt update
sudo apt install python3 python3-pip -y
检查版本:
python3 --version
pip3 --version
正确回显示例:
Python 3.10.12
pip 22.0.2 from ...
18.3.2 安装 TensorFlow(CPU 版)
在小白环境下,不推荐一开始就折腾 CUDA 和 GPU 驱动。用 CPU 版本先跑通流程是王道。
pip3 install tensorflow
安装完成后,验证一下:
python3
>>> import tensorflow as tf
>>> tf.__version__
'2.14.0'
看到版本号就说明装好了!
小知识补充:
如果你非得用 GPU 版,还需要装以下东西:
- NVIDIA 显卡驱动(比如 nvidia-driver-525)
- CUDA 工具包(比如 11.8)
- cuDNN(和 CUDA 版本要匹配)
装起来会绕疯,建议熟悉系统后再搞。
18.3.3 安装 PyTorch(推荐 CPU 版起步)
PyTorch 提供了更方便的安装方式,可以直接指定版本和平台。
运行以下命令安装 PyTorch + CPU 版:
pip3 install torch torchvision torchaudio
验证:
python3
>>> import torch
>>> torch.__version__
'2.1.0'
>>> torch.cuda.is_available()
False
如果
torch.cuda.is_available()
返回 False
,那是因为你用的是 CPU 版,正常。
18.3.4 用 Python 写个小模型玩一玩
这个示例会用 TensorFlow 写一个最简单的神经网络,让你亲手跑一遍:
import tensorflow as tf
from tensorflow.keras import layers
model = tf.keras.Sequential([
layers.Dense(64, activation='relu', input_shape=(10,)),
layers.Dense(1)
])
model.compile(optimizer='adam', loss='mse')
import numpy as np
# 随机生成10个特征的数据和标签
x = np.random.rand(100, 10)
y = np.random.rand(100, 1)
# 训练模型
model.fit(x, y, epochs=5)
解读:
Sequential
是一层接一层的模型Dense(64)
是一个全连接层,有 64 个神经元activation='relu'
表示激活函数使用 ReLUinput_shape=(10,)
表示输入有 10 个特征epochs=5
表示训练 5 轮
即使你没学过机器学习也不用怕,看着跑一遍就知道流程是啥了!
18.3.5 AI 框架推荐补充
框架 | 适合人群 | 特点说明 |
---|---|---|
TensorFlow | 初学者 / 企业 | 文档多、部署稳定、但 API 偏繁琐 |
PyTorch | 初学者 / 研究 | 易用、调试方便、逐步执行更接近 Python 思维 |
ONNX | 迁移部署者 | 统一格式、可在 TensorFlow 和 PyTorch 之间转 |
JAX | 高级研究者 | 适合搞数学、搞加速计算,入门略陡 |