大数据&&AI应用工程&&基础设施工程的结合(一)

在 Mac 上搭建这套庞大的系统,最核心的原则是:放弃在 Mac 宿主机上直接安装任何大数据组件(如 Hadoop, Spark, Flink),全面拥抱容器化。 你的 Mac 只需要安装 Docker Desktop 和 k3d,剩下的所有繁重工作全部交给 K8s 集群去处理。

阶段一:Mac 宿主机基础环境准备

这一步是为了打牢地基,确保你的 Mac 具备运行 K8s 的能力。
  1. 安装 Homebrew(Mac 必备包管理器,如果已安装可跳过):
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  1. 安装 Docker Desktop
    • 前往 Docker 官网下载 Mac 版(支持 Apple Silicon 芯片)。
    • 安装并启动,确保状态栏出现小鲸鱼图标且显示 "Engine running"。
    • 资源分配建议:打开 Docker Desktop -> Settings -> Resources,建议分配至少 6核 CPU、16GB 内存、50GB 磁盘
  2. 安装 K8s 管理工具 (k3d 与 kubectl)
    • k3d 用于在 Docker 中极速创建 K8s 集群。
    • kubectl 是 K8s 的命令行控制工具。
HOMEBREW_NO_AUTO_UPDATE=1 brew install k3d kubectl

 

阶段二:基础架构端 - 拉起本地 K8s 集群

我们将使用 k3d 创建一个轻量级但功能完整的 K8s 集群。
    1. 创建 K8s 集群
      执行以下命令,创建一个包含 1 个 Server 节点和 2 个 Agent 节点的集群(模拟真实的分布式环境),并映射常用端口到 Mac 宿主机:
k3d cluster create ai-bigdata-cluster \
  --servers 1 \
  --agents 2 \
  -p "8080-8090:8080-8090@loadbalancer" \
  -p "30000-30100:30000-30100@loadbalancer"
验证集群状态
 
kubectl get nodes -o wide
  1. 如果看到 3 个节点(1 server + 2 agents)状态均为 Ready,说明你的 K8s 港口已经建好。
  2. 安装 Helm(K8s 的包管理器,后续一键部署大数据组件全靠它):
brew install helm

阶段三:数据端 - 部署大数据 AI 平台

在 K8s 上,我们不再手动配置 XML,而是使用 Helm Chart 和 Operator。
    1. 部署对象存储 (替代传统 HDFS)
      在云原生架构下,强烈建议使用 S3 兼容的对象存储(如 MinIO)作为 Spark 和 Flink 的底层数据湖存储。
helm repo add minio https://charts.min.io/
helm install minio minio/minio --set mode=standalone,rootUser=admin,rootPassword=admin123
  1. 此时,你可以通过 kubectl port-forward svc/minio 9001:9001 

部署 Flink 集群
使用 Apache 官方的 Flink Kubernetes Operator。

# 添加 Flink Operator 仓库并安装
helm repo add flink-operator https://downloads.apache.org/flink/flink-kubernetes-operator/
helm install flink-operator flink-operator/flink-kubernetes-operator

(注:部署完成后,你可以通过提交 FlinkDeployment 的 YAML 文件来拉起 Flink 的 JobManager 和 TaskManager)

    1. 部署 Spark 环境
      Spark 原生支持 K8s。你可以直接使用官方镜像在 K8s 中提交 Spark 任务,无需常驻部署 Spark 集群。

阶段四:应用端 - 部署中间件与业务服务

应用端的组件(MySQL, Redis, Kafka)同样推荐使用 Helm 部署到 K8s 中,以便与大数据平台处于同一个内网,通信更高效。
    1. 一键部署 MySQL, Redis, Kafka
      你可以分别使用 Bitnami 提供的优质 Helm Charts:
 
 
# 部署 MySQL
helm repo add bitnami https://charts.bitnami.com/bitnami
helm install mysql bitnami/mysql --set auth.rootPassword=root123

# 部署 Redis
helm install redis bitnami/redis --set auth.password=redis123

# 部署 Kafka (使用 KRaft 模式,无需 Zookeeper)
helm install kafka bitnami/kafka
  1. 开发并部署 SpringBoot AI 应用
    • 在本地 IDEA 中开发 SpringBoot 应用,连接上述中间件(在 K8s 内部可通过 Service 名称访问,如 mysql:3306)。
    • 编写 Dockerfile,将 SpringBoot 打包成镜像:docker build -t my-ai-app:latest .
    • 导入镜像到 k3d 集群:k3d image import my-ai-app:latest -c ai-bigdata-cluster
    • 编写 Deployment 和 Service YAML,使用 kubectl apply -f springboot-deploy.yaml 部署到 K8s。
  2. 开发并部署 Node.js 前端
    • 同样打包成 Docker 镜像并导入 k3d。
    • 部署到 K8s,并配置 Ingress 或 NodePort,将对话框页面的端口映射到 Mac 的 localhost,方便你在浏览器中访问。
posted on 2026-07-28 15:30  溯衍  阅读(20)  评论(0)    收藏  举报