部署目标
- 安装JDK8
- 安装 flink 集群
环境描述
软件列表
序号 | 软件名称 | 版本 | 安装包名称 | Sha512 | 备注 |
---|---|---|---|---|---|
1 | JDK | jdk-8u281-linux-x64 | jdk-8u281-linux-x64.tar.gz | JAVA运行环境 | |
2 | flink | 1.13.0 | flink-1.13.0-bin-scala_2.12.tgz | 3c58033dc6e4f8e5f93df6e441e1b033a3eb9347eef276c4f9d71c640a1ba87d68f673f250ab588238adb2a339397adeba5933908a08f95c781c771423d33672 | Flink组件 |
硬件列表
生产环境中ZK和CK应该分开。
IP | hostname | 操作系统版本 | 备注 |
---|---|---|---|
192.168.107.121 | linux121 | CentOS 7.6.1810 | JDK /flink(角色:JobManager ) |
192.168.107.122 | linux122 | CentOS 7.6.1810 | JDK /flink(角色:TaskManager ) |
192.168.107.123 | Linux123 | CentOS 7.6.1810 | JDK /flink(角色:TaskManager ) |
假设所有机器的数据盘都挂在
data01
目录下。
安装步骤
均使用root账号操作。
准备工作
所有主机均执行
shell
# 修改系统nofile和nproc限制
echo "修改系统nofile和nproc限制开始"
cp /etc/security/limits.conf /etc/security/limits.conf.bak
echo '* soft nofile 165535' >> /etc/security/limits.conf
echo '* hard nofile 165535' >> /etc/security/limits.conf
echo '* soft nproc 65535' >> /etc/security/limits.conf
echo '* hard nproc 65535' >> /etc/security/limits.conf
echo '* soft memlock unlimited' >> /etc/security/limits.conf
echo '* hard memlock unlimited' >> /etc/security/limits.conf
echo "修改系统nofile和nproc限制结束"
# 查看是否生效,默认为1024,看是否修改成了添加的内容的数字(如果没有生效,需要重启机器,可以延迟到 `准备工作` 全部结束再重启主机)
ulimit -n
# 修改vm
echo "修改vm开始"
sysctl -w vm.max_map_count=262144
echo "vm.max_map_count=262144" > /etc/sysctl.conf
echo "vm.swappiness=1" >> /etc/sysctl.conf
sysctl -p
echo "修改vm结束"
# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
# 设置selinux
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
# 禁用透明大页
echo 'never' | sudo tee /sys/kernel/mm/transparent_hugepage/enabled
安装JDK
linux121/linux122/linux123
3台机器均执行
shell
SOFTWARE_INSTALL_PATH=/opt/software/jdk8
mkdir -p ${SOFTWARE_INSTALL_PATH}
tar zxvf jdk-8u371-linux-x64.tar.gz -C ${SOFTWARE_INSTALL_PATH}
echo '' >> /etc/profile
echo '# JDK环境' >> /etc/profile
echo "export JAVA_HOME=${SOFTWARE_INSTALL_PATH}/jdk1.8.0_371" >> /etc/profile
echo 'export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar' >> /etc/profile
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> /etc/profile
# 验证
source /etc/profile
java -version
安装Flink
linux121/linux122/linux123
3台机器均执行
配置主机别名
shell
echo '192.168.107.121 linux121' >> /etc/hosts
echo '192.168.107.122 linux122' >> /etc/hosts
echo '192.168.107.123 linux123' >> /etc/hosts
# 验证
tail /etc/hosts
ping -c 2 linux121
ping -c 2 linux122
ping -c 2 linux123
执行安装
shell
tar zxvf flink-1.13.0-bin-scala_2.12.tgz
cd flink-1.13.0/conf/
vim flink-conf.yaml
# 修改30行如下
# jobmanager.rpc.address: linux121
cat << 'EOF' > workers
linux122
linux123
EOF
cat workers
其他配置(本次没有配置)
另外,在flink-conf.yaml文件中还可以对集群中的JobManager和TaskManager组件进行优化配置,主要配置项如下:
jobmanager.memory.process.size
:对JobManager进程可使用到的全部内存进行配置,包括JVM元空间和其他开销,默认为1600M,可以根据集群规模进行适当调整。taskmanager.memory.process.size
:对TaskManager进程可使用到的全部内存进行配置,包括JVM元空间和其他开销,默认为1600M,可以根据集群规模进行适当调整。taskmanager.numberOfTaskSlots
:对每个TaskManager能够分配的Slot数量进行配置,默认为1,可根据TaskManager所在的机器能够提供给Flink的CPU数量决定。所谓Slot就是TaskManager中具体运行一个任务所分配的计算资源。parallelism.default
:Flink任务执行的默认并行度,优先级低于代码中进行的并行度配置和任务提交时使用参数指定的并行度数量。
如果上述配置修改是在第一台主机上进行的,则需要分发到另外的两个节点服务器。
启动
在
linux121
主机上进行。
shell
cd /opt/apps/flink-1.13.0
bin/start-cluster.sh
查看状态
linux121
上查看如下:shell[root@linux121 flink-1.13.0]# jps 7914 StandaloneSessionClusterEntrypoint 7978 Jps
linux122
上查看如下:shell[root@linux122 conf]# jps 7920 Jps 7869 TaskManagerRunner
linux123
上查看如下:shell[root@linux123 conf]# jps 7831 TaskManagerRunner 7882 Jps
访问Web UI
通过监控页面可以看到:
- 当前集群的TaskManager 数量为2
- 由于默认每个TaskManager的Slot数量为1,所以总Slot书和可用Slot数都为2