flink
单JobManager节点
- 官网下载Flink安装包
不建议采用小版本号为0的安装包(如1.9.0),建议使用1.9.2版本 - 安装包上传到node01节点
- 解压、修改配置文件
解压:tar -zxf flink-1.9.2-bin-scala_2.11.tgz
a. 修改flink-conf.yaml配置文件
###规划
### JobManager taskmanager
### node01 *
### node02 *
### node03 *
### node04 *
###配置
#JobManager地址
jobmanager.rpc.address: node01
#JobManagerRPC通信端口
jobmanager.rpc.port: 6123
#JobManager所能使用的堆内存大小
jobmanager.heap.size: 1024m
#TaskManager所能使用的堆内存大小
taskmanager.heap.size: 1024m
#TaskManager管理的TaskSlot个数,依据当前物理机的 核心数来配置,一般预留出一部分核心(25%)给系统及其他进程使用
#一个slot对应一个core。如果 core支持超线程,那么slot个数*2
taskmanager.numberOfTaskSlots: 2
#指定WebUI的访问端口
rest.port: 8081
b. 可选修改项, flink安装目录下: conf/masters
#修改为node01:8081, 原为 localhost:8081
node01:8081
c. 修改 conf/slaves 配置文件
#新增
node02
node03
node04
- 同步安装包到其他的节点
#同步至 node02 node03 node04
scp -r flink-1.9.2 node02:`pwd`
scp -r flink-1.9.2 node03:`pwd`
scp -r flink-1.9.2 node04:`pwd`
- node01-node04配置环境变量
vim ~/.bashrc export FLINK_HOME=/opt/software/flink/flink-1.9.2 export PATH=$PATH:$FLINK_HOME/bin source ~/.bashrc
- 启动standalone集群
#启动集群
start-cluster.sh
#关闭集群
stop-cluster.sh
- 查看Flink Web UI页面
http://node01:8081/ - 提交job测试
#简单shell测试
#安装nc, 测试用
yum install nc -y && yum install nmap -y
#打开两个shell窗口,其中一个 nc -lk 8888 用于后续输入
nc -lk 8888
#另一个远程连接flink客户端: start-scala-shell.sh remote <hostname> <portnumber>
start-scala-shell.sh remote node01 8081
#选择计算模式运行: Batch - 'benv' and 'btenv'; Streaming - 'senv' and 'stenv';
#简单的word count: 按空格切割, 计数
senv.socketTextStream("node01",8888).flatMap(_.split(" ")).map((_,1)).keyBy(0).sum(1).print()
#执行任务
senv.execute("first flink shell job")
#在 8888 端口shell输入需要计算的数据
#在页面查看 http://node01:8081/#/job/running; 先在Running Jobs上找到 aggregation 对应的节点信息; 再到 http://node01:8081/#/task-manager ; TaskManagers中查看对应节点的 Stdout
基于hadoop集群yarn的HA
基于"单JobManager节点"进行改造
#注意: 先停了flink集群, flink安装的bin目录下
stop-cluster.sh
#1.修改hadoop安装目录下: etc/hadoop/yarn-site.xml
#新增如下配置
<property>
<name>yarn.resourcemanager.am.max-attempts</name>
<!-- 根据需要调整最大重试次数 -->
<value>10</value>
</property>
#同步配置至其他节点
scp yarn-site.xml node02:`pwd`
scp yarn-site.xml node03:`pwd`
scp yarn-site.xml node04:`pwd`
#重启hadoop yarn, 注意配置hadoop的bin目录环境变量
stop-all.sh
start-all.sh
yarn-daemon.sh stop resourcemanager
yarn-daemon.sh start resourcemanager
#2.修改flink安装目录下: conf/flink-conf.yaml
#打开注释,修改配置:
#是否ha,查看hadoop安装目录下: etc/hadoop/core-site.xml 中的 fs.defaultFS 配置项配置的是什么
#如果非ha的hdfs, 那么配置单节点的ip:port即可
#high-availability: zookeeper high-availability.storageDir: hdfs://node01:9000/flink/ha/
#如果是ha模式,配置集群的名称即可
high-availability.storageDir: hdfs://mycluster/flink/ha/
high-availability.zookeeper.quorum: node02:2181,node03:2181,node04:2181
#3.修改flink安装目录下: conf/masters
#修改为两个
node01:8081
node02:8081
#同步配置至其他节点
scp flink-conf.yaml masters node02:`pwd`
scp flink-conf.yaml masters node03:`pwd`
scp flink-conf.yaml masters node04:`pwd`
测试HA
#如未配置环境变量, 切换至flink的bin目录下
yarn-session.sh -n 3 -s 3 -nm flink-session -d
#是否启动成功可以查看yarn页面
#http://node03:8088/cluster
#或 查看日志目录: flink的log目录下: flink-root-taskexecutor-*.log
#页面点击 flink-session 的application,查看运行在哪个node,比如运行在node04,查看YarnSessionClusterEntrypoint的进程号
jps
#干掉对应进程号
ps -ef|grep YarnSessionClusterEntrypoint|grep -v grep |awk '{print $2}'|xargs kill -9
#可以在yarn页面看到对应的 从 RUNNING 到 ACCEPTED 再到RUNNING 的节点挂掉然后重启的过程