大数据&&AI应用工程&&基础设施工程的结合(一)
在 Mac 上搭建这套庞大的系统,最核心的原则是:放弃在 Mac 宿主机上直接安装任何大数据组件(如 Hadoop, Spark, Flink),全面拥抱容器化。 你的 Mac 只需要安装 Docker Desktop 和 k3d,剩下的所有繁重工作全部交给 K8s 集群去处理。
阶段一:Mac 宿主机基础环境准备
这一步是为了打牢地基,确保你的 Mac 具备运行 K8s 的能力。
-
安装 Homebrew(Mac 必备包管理器,如果已安装可跳过):
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
-
安装 Docker Desktop:
- 前往 Docker 官网下载 Mac 版(支持 Apple Silicon 芯片)。
- 安装并启动,确保状态栏出现小鲸鱼图标且显示 "Engine running"。
- 资源分配建议:打开 Docker Desktop -> Settings -> Resources,建议分配至少 6核 CPU、16GB 内存、50GB 磁盘。
-
安装 K8s 管理工具 (k3d 与 kubectl):
k3d用于在 Docker 中极速创建 K8s 集群。kubectl是 K8s 的命令行控制工具。
HOMEBREW_NO_AUTO_UPDATE=1 brew install k3d kubectl
阶段二:基础架构端 - 拉起本地 K8s 集群
我们将使用 k3d 创建一个轻量级但功能完整的 K8s 集群。
-
创建 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
-
如果看到 3 个节点(1 server + 2 agents)状态均为
Ready,说明你的 K8s 港口已经建好。 -
安装 Helm(K8s 的包管理器,后续一键部署大数据组件全靠它):
brew install helm
阶段三:数据端 - 部署大数据 AI 平台
在 K8s 上,我们不再手动配置 XML,而是使用 Helm Chart 和 Operator。
-
部署对象存储 (替代传统 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
-
此时,你可以通过
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)
-
部署 Spark 环境:
Spark 原生支持 K8s。你可以直接使用官方镜像在 K8s 中提交 Spark 任务,无需常驻部署 Spark 集群。
阶段四:应用端 - 部署中间件与业务服务
应用端的组件(MySQL, Redis, Kafka)同样推荐使用 Helm 部署到 K8s 中,以便与大数据平台处于同一个内网,通信更高效。
-
一键部署 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
-
开发并部署 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。
- 在本地 IDEA 中开发 SpringBoot 应用,连接上述中间件(在 K8s 内部可通过 Service 名称访问,如
-
开发并部署 Node.js 前端:
- 同样打包成 Docker 镜像并导入 k3d。
- 部署到 K8s,并配置 Ingress 或 NodePort,将对话框页面的端口映射到 Mac 的
localhost,方便你在浏览器中访问。
浙公网安备 33010602011771号