4、环境搭建:JDK、Maven、Git等基础环境配置、Flink集群搭建(Standalone模式)、Redis与HBase的安装与配置

说实话,很多新手一上来就急着写代码,结果环境配了三天还没跑通第一个Demo。我见过太多这种案例了。环境搭建这事儿,看着琐碎,但它是整个实时风控引擎的根基。你想想看,地基没打好,后面Flink作业跑着跑着就OOM,或者HBase连不上,排查起来比重新搭一遍还痛苦。

这一章,我会带你一步步把基础环境搞定。咱们不搞虚的,全是实操。我会把我在项目中踩过的坑、养成的习惯,都揉碎了讲给你听。

核心要点: 环境搭建不是一次性的工作,而是需要形成标准化的SOP。我建议你把这章的内容整理成一份checklist,以后每换一台机器,照着跑一遍就行。

4.1 JDK、Maven、Git 基础环境配置

先说JDK。实时风控引擎对Java版本有要求,我个人习惯用JDK 8,稳定、生态好。Flink 1.13之后虽然支持JDK 11,但很多第三方依赖在JDK 8上验证得更充分。嗯,这里要注意:千万别用JDK 9、10这种过渡版本,坑多。

JDK安装步骤:

  1. 下载JDK 8(推荐jdk-8u202,这是最后一个免费商用版本)
  2. 解压到 /usr/local/java/ 目录
  3. 配置环境变量 JAVA_HOMEPATH
  4. 验证:java -version
# 解压
tar -zxvf jdk-8u202-linux-x64.tar.gz -C /usr/local/java/

# 配置环境变量(写入 /etc/profile 或 ~/.bashrc)
export JAVA_HOME=/usr/local/java/jdk1.8.0_202
export PATH=$JAVA_HOME/bin:$PATH

# 生效
source /etc/profile

# 验证
java -version
# 输出:java version "1.8.0_202"
我的小技巧: 我会在 /etc/profile.d/ 下创建一个 java.sh 文件,把环境变量写进去。这样系统启动时自动加载,而且方便管理。我曾经因为直接在 /etc/profile 里改,结果搞崩了系统环境变量,重装了系统……从那以后,我就用这个分离的方式了。

Maven配置:

Maven是Java项目的构建工具,说白了就是帮你管理jar包依赖的。实时风控项目依赖很多,比如Flink、HBase客户端、Redis客户端,全靠Maven来拉取。

# 下载Maven 3.6.3(推荐这个版本,兼容性好)
wget https://archive.apache.org/dist/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
tar -zxvf apache-maven-3.6.3-bin.tar.gz -C /usr/local/maven/

# 配置环境变量
export MAVEN_HOME=/usr/local/maven/apache-maven-3.6.3
export PATH=$MAVEN_HOME/bin:$PATH

# 验证
mvn -version

这里有个关键点:配置阿里云镜像。国内网络你懂的,直接连Maven中央仓库慢得让人抓狂。修改 ~/.m2/settings.xml,加入镜像配置:

<mirrors>
    <mirror>
        <id>aliyunmaven</id>
        <mirrorOf>central</mirrorOf>
        <name>阿里云公共仓库</name>
        <url>https://maven.aliyun.com/repository/public</url>
    </mirror>
</mirrors>
避坑指南: 我曾经遇到过Maven下载依赖时卡在 Downloading... 不动,排查了半天发现是公司网络限制了HTTPS。解决办法是把阿里云镜像的URL改成HTTP版本,或者配置公司内部的Nexus私服。

Git配置:

Git是版本控制工具,实时风控项目的代码管理全靠它。我建议你养成一个好习惯:每次提交代码前,先 git pull --rebase,避免产生多余的merge commit。

# 安装Git
yum install -y git

# 配置全局用户信息
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"

# 生成SSH密钥(用于连接GitLab/GitHub)
ssh-keygen -t rsa -b 4096 -C "your.email@example.com"
# 将公钥 ~/.ssh/id_rsa.pub 添加到GitLab/GitHub的SSH Keys中

4.2 Flink集群搭建(Standalone模式)

Flink是实时风控引擎的计算核心。Standalone模式适合开发和测试环境,生产环境一般用YARN或Kubernetes。但咱们从零搭建,先用Standalone模式跑通流程。

下载与解压:

wget https://archive.apache.org/dist/flink/flink-1.13.6/flink-1.13.6-bin-scala_2.12.tgz
tar -zxvf flink-1.13.6-bin-scala_2.12.tgz -C /usr/local/flink/

配置Flink集群:

修改 conf/flink-conf.yaml,这是Flink的核心配置文件。我列出几个关键参数:

参数 说明 推荐值
jobmanager.rpc.address JobManager的地址 你的主节点IP
taskmanager.numberOfTaskSlots 每个TaskManager的并行度 根据CPU核数设定,一般设为2-4
parallelism.default 默认并行度 2(开发环境够用)
state.backend 状态后端 filesystem(开发环境)
# conf/flink-conf.yaml 关键配置
jobmanager.rpc.address: 192.168.1.100
taskmanager.numberOfTaskSlots: 2
parallelism.default: 2
state.backend: filesystem
state.checkpoints.dir: file:///data/flink/checkpoints

配置workers节点:

编辑 conf/workers 文件,列出所有TaskManager节点的IP或主机名:

192.168.1.101
192.168.1.102

启动集群:

# 在JobManager节点上执行
bin/start-cluster.sh

# 验证
jps
# 应该看到:StandaloneSessionClusterEntrypoint(JobManager)
# 在TaskManager节点上应该看到:TaskManagerRunner
我的经验: 启动后一定要检查Web UI,默认端口是8081。访问 http://192.168.1.100:8081,如果能看到TaskManager列表,说明集群启动成功。我曾经遇到过TaskManager注册不上,排查了半天发现是防火墙没关。嗯,开发环境直接 systemctl stop firewalld 吧。

4.3 Redis与HBase的安装与配置

Redis和HBase是实时风控引擎的两大存储支柱。Redis负责高速缓存和计数器,HBase负责存储海量的规则和事件明细。

4.3.1 Redis安装与配置

Redis安装很简单,但配置有讲究。实时风控场景下,Redis的稳定性至关重要。

# 下载Redis 6.2.6(推荐这个版本,稳定且支持ACL)
wget https://download.redis.io/releases/redis-6.2.6.tar.gz
tar -zxvf redis-6.2.6.tar.gz
cd redis-6.2.6
make && make install

# 启动
redis-server /usr/local/redis/redis.conf

关键配置项:

配置项 说明 推荐值
requirepass 设置密码 强密码,不要用默认
maxmemory 最大内存限制 根据机器配置,比如4GB
maxmemory-policy 内存淘汰策略 allkeys-lru(常用)
save 持久化策略 开发环境可以关闭,生产环境建议开启RDB+AOF
避坑指南: 我曾经在生产环境中遇到过Redis OOM导致风控规则加载失败。原因是 maxmemory 设置得太小,而规则缓存占用了大量内存。后来我改用 allkeys-lru 策略,并定期清理过期规则。记住:Redis不是数据库,别把所有数据都往里塞。

4.3.2 HBase安装与配置

HBase是实时风控引擎的“冷存储”,用来存历史事件、规则版本、模型特征等。HBase依赖HDFS和ZooKeeper,所以需要先搭建Hadoop集群。

前置条件:

  • Hadoop 3.2.2(HDFS提供底层存储)
  • ZooKeeper 3.6.3(HBase的协调服务)

HBase安装步骤:

# 下载HBase 2.4.9
wget https://archive.apache.org/dist/hbase/2.4.9/hbase-2.4.9-bin.tar.gz
tar -zxvf hbase-2.4.9-bin.tar.gz -C /usr/local/hbase/

# 配置 hbase-site.xml
<configuration>
    <property>
        <name>hbase.rootdir</name>
        <value>hdfs://192.168.1.100:9000/hbase</value>
    </property>
    <property>
        <name>hbase.zookeeper.quorum</name>
        <value>192.168.1.101,192.168.1.102,192.168.1.103</value>
    </property>
    <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
    </property>
</configuration>

启动HBase:

# 启动HDFS(在Hadoop主节点上)
start-dfs.sh

# 启动ZooKeeper(在所有ZooKeeper节点上)
zkServer.sh start

# 启动HBase(在HBase主节点上)
bin/start-hbase.sh

# 验证
bin/hbase shell
# 输入 list 命令,如果能正常返回,说明HBase启动成功
我的习惯: 我会在HBase中预创建好风控相关的表,比如 risk_rule(规则表)、risk_event(事件表)。预创建分区可以避免数据写入时的热点问题。我曾经因为没预分区,导致某个RegionServer压力过大,整个集群响应变慢。
实时风控引擎环境架构图 计算层 Flink Standalone集群 JobManager + TaskManager 并行度:2-4 存储层 Redis(高速缓存) 计数器、规则缓存 HBase(冷存储) 事件明细、规则版本 HDFS + ZooKeeper 底层存储与协调 基础层 JDK 8 Maven 3.6.3 Git Linux

这张图展示了实时风控引擎的三层架构。底层是基础环境(JDK、Maven、Git),中间是存储层(Redis、HBase),顶层是计算层(Flink)。每一层都依赖下一层,缺一不可。

总结一下: 环境搭建的核心是“标准化”和“可复现”。我建议你把所有配置文件和安装脚本都放到Git仓库里管理。这样换一台机器,只需要 git clone 然后一键部署。嗯,这才是工程师该有的效率。

公众号:蓝海资料掘金营,微信deep3321