环境准备:Linux基础操作回顾、Docker与Docker Compose安装、JDK8/11安装配置

说实话,很多同学学OLAP翻车,不是死在SQL上,而是死在环境上。我见过太多人花三天搭环境,最后发现是Docker版本不对、JDK路径写错、防火墙没关——这些坑,我早年全踩过。

这一章,咱们把地基打牢。你跟着我走一遍,后面30章基本不会因为环境问题卡壳。

2.1 Linux基础操作回顾

咱们的OLAP平台最终要跑在Linux上。你可以在本地用虚拟机,也可以用云服务器。我个人习惯用CentOS 7.9或Ubuntu 20.04,这两个发行版对Docker和JDK的支持最稳。

2.1.1 必备命令速查

你不需要成为Linux高手,但下面这些命令得闭着眼敲出来:

操作类别 命令示例 说明
文件操作 ls -la /opt 查看目录下所有文件(含隐藏文件)
权限管理 chmod +x script.sh 给脚本添加可执行权限
进程查看 ps -ef | grep java 过滤出Java相关进程
网络检查 netstat -tlnp 查看端口监听状态
包管理 yum install -y vim CentOS安装软件包
包管理 apt-get install -y vim Ubuntu安装软件包
小技巧: 我习惯在 /opt 下建一个 software 目录,所有安装包都放这里。这样卸载时直接删目录,不会污染系统。

2.1.2 防火墙与SELinux

这是个大坑。很多OLAP组件之间需要网络通信,防火墙没关或者SELinux开着,连半天连不上。

我曾经在一个客户现场排查了整整一下午,最后发现是SELinux把Docker的端口映射给拦截了。从那以后,我搭建实验环境的第一件事就是关掉它们:

# 关闭防火墙(CentOS 7)
systemctl stop firewalld
systemctl disable firewalld

# 关闭SELinux(临时+永久)
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
注意: 生产环境不建议直接关防火墙。但咱们是学习环境,先保证能跑起来再说。

2.2 Docker与Docker Compose安装

咱们的OLAP平台会用到ClickHouse、Kafka、ZooKeeper等多个组件。一个个手动装?太累了。Docker Compose一键搞定,这也是我为什么坚持用容器化的原因。

2.2.1 安装Docker

Docker的安装方式有很多,我推荐用官方脚本,干净利落:

# 卸载旧版本(如果有)
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine

# 安装依赖
yum install -y yum-utils device-mapper-persistent-data lvm2

# 添加Docker官方仓库
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

# 安装Docker引擎
yum install -y docker-ce docker-ce-cli containerd.io

# 启动并设置开机自启
systemctl start docker
systemctl enable docker

# 验证安装
docker --version

嗯,这里要注意:如果你在Ubuntu上装,命令会略有不同。但核心思路一样——先加仓库,再安装,最后启动。

2.2.2 配置Docker镜像加速

国内拉取Docker镜像经常超时。我建议你配一个镜像加速器,不然等得让人抓狂:

mkdir -p /etc/docker
cat <<EOF > /etc/docker/daemon.json
{
  "registry-mirrors": ["https://你的加速器地址.mirror.aliyuncs.com"]
}
EOF

systemctl daemon-reload
systemctl restart docker

避坑指南: 我曾经忘了重启Docker守护进程,配了加速器但没生效。拉镜像时还是慢,折腾了半小时才发现问题。记住:改完配置一定要 systemctl restart docker。

2.2.3 安装Docker Compose

Docker Compose是用来定义和运行多容器Docker应用的工具。咱们后面会用docker-compose.yml一键拉起整个OLAP集群:

# 下载最新稳定版
curl -L "https://github.com/docker/compose/releases/download/v2.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 添加执行权限
chmod +x /usr/local/bin/docker-compose

# 验证安装
docker-compose --version

为什么不用包管理器装?因为官方GitHub Release的版本更新更快,而且不会出现依赖冲突。我个人一直用这种方式,从来没出过问题。

2.3 JDK8/11安装配置

咱们的OLAP平台里,有些组件(比如Kafka、ZooKeeper)依赖Java。JDK8和JDK11是目前最主流的两个版本。我建议你两个都装,用的时候切换。

2.3.1 下载JDK

Oracle JDK现在要收费了,咱们用OpenJDK,完全免费,功能一样:

# 创建Java安装目录
mkdir -p /usr/local/java

# 下载JDK8(以8u202为例)
wget https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u202-b08/OpenJDK8U-jdk_x64_linux_hotspot_8u202b08.tar.gz

# 下载JDK11(以11.0.21为例)
wget https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.21%2B9/OpenJDK11U-jdk_x64_linux_hotspot_11.0.21_9.tar.gz

# 解压
tar -zxvf OpenJDK8U-jdk_x64_linux_hotspot_8u202b08.tar.gz -C /usr/local/java/
tar -zxvf OpenJDK11U-jdk_x64_linux_hotspot_11.0.21_9.tar.gz -C /usr/local/java/

2.3.2 配置环境变量

环境变量配置不好,Java命令就找不到。我习惯把配置写在 /etc/profile.d/java.sh 里,这样所有用户都能用:

cat <<EOF > /etc/profile.d/java.sh
# JDK8 配置
export JAVA_HOME_8=/usr/local/java/jdk8u202-b08
# JDK11 配置
export JAVA_HOME_11=/usr/local/java/jdk-11.0.21+9
# 默认使用JDK8
export JAVA_HOME=\$JAVA_HOME_8
export PATH=\$JAVA_HOME/bin:\$PATH
EOF

# 使配置生效
source /etc/profile.d/java.sh

# 验证
java -version
切换JDK版本: 当某个组件需要JDK11时,你只需要执行 export JAVA_HOME=$JAVA_HOME_11 再重新启动该组件即可。不用卸载重装,省心。

2.3.3 验证安装

装完一定要验证,别等到用的时候才发现没配好:

# 检查Java版本
java -version
# 输出示例:openjdk version "1.8.0_202"

# 检查Javac编译器
javac -version
# 输出示例:javac 1.8.0_202

# 检查环境变量
echo $JAVA_HOME
# 输出示例:/usr/local/java/jdk8u202-b08

如果 java -version 报错,别慌。99%的情况是 PATH 没配对,或者 source 没执行。检查一下 /etc/profile.d/java.sh 里的路径是否真实存在。

2.4 本章知识体系总览

下面这张图帮你理清本章的核心脉络。环境准备不是瞎装,每一步都有它的目的:

环境准备知识体系 从零搭建实时OLAP分析平台 Linux基础环境 Docker + Compose JDK8 / JDK11 基础命令速查 文件/权限/进程/网络 防火墙 & SELinux关闭 Docker安装配置 官方仓库安装 镜像加速器配置 JDK安装配置 OpenJDK下载解压 环境变量配置 验证:命令检查 + 版本确认 核心原则:先关防火墙 → 再装Docker → 最后配JDK,顺序不能乱

2.5 常见问题与避坑

环境准备这块,我踩过的坑比走过的路还多。挑几个典型的说说:

  • Docker拉镜像超时: 配了加速器还慢?检查一下 /etc/docker/daemon.json 的JSON格式对不对。我曾经少写了一个逗号,整个配置文件失效,Docker直接用了默认配置。
  • Java命令找不到: 配了 JAVA_HOME 但 java -version 还是报错?看看 PATH 里有没有把 $JAVA_HOME/bin 放在前面。如果系统自带的OpenJDK在 /usr/bin/java,它会优先被找到。
  • 端口被占用: 启动Docker容器时提示端口冲突。用 netstat -tlnp | grep 端口号 查一下是谁占的。我遇到过MySQL占了3306,跟后面要装的ClickHouse冲突。

我的建议: 环境准备别图快。每装完一个组件,都停下来验证一下。等后面集群搭起来再回头排查环境问题,那才叫痛苦。我早期带团队时,有个同事一口气装完了所有东西,结果启动时全报错,排查了两天——最后发现是Docker版本太旧,不支持docker-compose的某些语法。

好了,环境准备就到这里。你跟着操作一遍,应该不会出大问题。如果卡住了,回头看看上面的步骤,99%的坑我都帮你标出来了。