【菜鸟不菜系列】Linux 基础教程:第十八章:Linux 在大数据与 AI 中的应用

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:数据处理引擎,负责“把任务分发-执行-收集结果”。

:backhand_index_pointing_right: 举个栗子:你要统计 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 更友好
适合场景 批量处理大数据 实时/交互式处理

:pushpin: 总结一句话:Hadoop 稳重可靠,Spark 迅猛高效,现代大数据平台通常是 Spark 更受欢迎,但 Hadoop 仍在背后做数据存储。

18.2.1 什么是“大数据集群”?

简单点说,“集群”就是一群电脑一起干活。这群电脑可以是虚拟机、实体服务器,甚至是你在自己笔记本里跑几个虚拟机也算“集群”(别笑,很多学习者都是这么练手的)。

在大数据平台中,常见的集群架构大概是这样:

  • 一台主节点(Master):主要负责“指挥调度”。
  • 多台从节点(Slave):负责“干活执行任务”。

就像一个建筑工地,一个包工头 + 一群工人,包工头负责说“这边给我挖 3 米”,工人们就开始动手了。


18.2.2 准备工作

:white_check_mark: 系统环境建议:

  • Linux:建议使用 Ubuntu 或 CentOS(更推荐 CentOS,因为很多大数据项目文档是基于它写的)
  • 至少两台机器(主 + 从)
  • 配置互信(SSH 免密码登录)

:rocket: 安装 OpenJDK(因为 Hadoop 是 Java 写的)

sudo apt update
sudo apt install openjdk-11-jdk -y

检查 Java 是否安装成功:

java -version

:white_check_mark: 输出示例:

openjdk version "11.0.20" 2023-07-18

:warning: 提示: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>

:pushpin: 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

:white_check_mark: 验证是否启动成功:

jps

应该能看到类似下面的内容:

1234 NameNode
2345 DataNode
3456 ResourceManager
4567 NodeManager

:tada: 到这里,一个最基础的 Hadoop 单机环境就搭好了!

:pushpin: 你可以访问 Web 管理界面:

18.3 深度学习与 AI 框架(如 TensorFlow、PyTorch)的安装与配置

随着 AI 大模型爆火,越来越多的人开始接触深度学习了。而 Linux,恰好就是搞 AI 最好用的系统之一。无论是部署 TensorFlow 还是 PyTorch,都是在 Linux 上跑得最稳。

:pushpin: 注意:如果你没显卡(比如笔记本没独显),不要强行折腾 GPU 版本,乖乖装 CPU 版本就行,学习也够了。


18.3.1 安装 Python 和 pip(如果你还没有)

绝大多数深度学习框架基于 Python 开发,Python 环境必须先准备好。

sudo apt update
sudo apt install python3 python3-pip -y

检查版本:

python3 --version
pip3 --version

:white_check_mark: 正确回显示例:

Python 3.10.12
pip 22.0.2 from ...

18.3.2 安装 TensorFlow(CPU 版)

在小白环境下,不推荐一开始就折腾 CUDA 和 GPU 驱动。用 CPU 版本先跑通流程是王道。

pip3 install tensorflow

:white_check_mark: 安装完成后,验证一下:

python3
>>> import tensorflow as tf
>>> tf.__version__
'2.14.0'

看到版本号就说明装好了!


:pushpin: 小知识补充:

如果你非得用 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

:white_check_mark: 如果 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)

:pushpin: 解读:

  • Sequential 是一层接一层的模型
  • Dense(64) 是一个全连接层,有 64 个神经元
  • activation='relu' 表示激活函数使用 ReLU
  • input_shape=(10,) 表示输入有 10 个特征
  • epochs=5 表示训练 5 轮

即使你没学过机器学习也不用怕,看着跑一遍就知道流程是啥了!


18.3.5 AI 框架推荐补充

框架 适合人群 特点说明
TensorFlow 初学者 / 企业 文档多、部署稳定、但 API 偏繁琐
PyTorch 初学者 / 研究 易用、调试方便、逐步执行更接近 Python 思维
ONNX 迁移部署者 统一格式、可在 TensorFlow 和 PyTorch 之间转
JAX 高级研究者 适合搞数学、搞加速计算,入门略陡