flink1.10安装详解
flink从flink1.10版本对其内存结构发生改变,所以在环境配置的时候也要主要具体怎么配置比较合适。
内存结构可以看官网:https://ci.apache.org/projects/flink/flink-docs-release-1.10/ops/memory/mem_setup.html
Standalone模式官网:https://ci.apache.org/projects/flink/flink-docs-release-1.10/ops/deployment/cluster_setup.html
基于yarn模式官网:https://ci.apache.org/projects/flink/flink-docs-release-1.10/ops/deployment/yarn_setup.html
一、环境准备
1.1、java环境
下载java安装包,通过tar -zxvf 命令解压java压缩包,然后配置java变量环境
1 2 3 4 5 | vim /etc/profile ##########在后面追加############## export JAVA_HOME=/usr/java/ default export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$JAVA_HOME/bin |
1.2、ssh环境
准备几台机器
1 2 3 4 | #准备机器 /etc/hosts 192.168 . 88.130 lgh 192.168 . 88.131 lgh1 192.168 . 88.132 lgh2 |
添加flink group和flink user
1 2 | useradd flink -d /home/flink echo "flink123" | passwd flink --stdin |
然后对该用户配置ssh环境(在192.168.88.130,指定一台操作)
1 2 3 4 | su - flink ssh-keygen -t rsa ssh-copy-id 192.168 . 88.131 ssh-copy-id 192.168 . 88.132 |
1.3、zookeeper环境
下载zookeeper的安装包进行安装
1 2 3 4 | ##解压 tar -zxvf zookeeper- 3.4 . 8 .tar.gz -C xxx目录 ##创建软链接(每一台机器) ln -s zookeeper- 3.4 . 8 zookeeper |
配置环境变量
1 2 3 | vim ~/.bashrc export ZOOKEEPER_HOME=/home/spark/zookeeper export PATH=$ZOOKEEPER_HOME/bin:$ZOOKEEPER_HOME/conf:$PATH |
修改配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | cd /home/spark/zookeeper/conf cp zoo_sample.cfg zoo.cfg vim zoo.cfg ###########修改配置如下################## tickTime= 2000 #服务器与客户端之间交互的基本时间单元(ms) initLimit= 10 # 此配置表示允许follower连接并同步到leader的初始化时间,它以tickTime的倍数来表示。当超过设置倍数的tickTime时间,则连接失败 syncLimit= 5 # Leader服务器与follower服务器之间信息同步允许的最大时间间隔,如果超过次间隔,默认follower服务器与leader服务器之间断开链接 dataDir=/home/spark/zookeeper/data #保存zookeeper数据路径 dataLogDir=/home //spark/zookeeper/dataLog #保存zookeeper日志路径,当此配置不存在时默认路径与dataDir一致 clientPort= 2181 #客户端访问zookeeper时经过服务器端时的端口号 server. 1 =lgh: 2888 : 3888 #表示了不同的zookeeper服务器的自身标识,作为集群的一部分,每一台服务器应该知道其他服务器的信息 server. 2 =lgh1: 2888 : 3888 server. 3 =lgh2: 2888 : 3888 maxClientCnxns= 60 #限制连接到zookeeper服务器客户端的数量 |
创建myid文件
1 2 | cd /home/spark/zookeeper/data vim myid #输入 1 |
复制到其他机器以及启动
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | ##复制到其他机器 scp -r zookeeper- 3.4 . 8 spark @lgh1 :/home/spark/ scp -r zookeeper- 3.4 . 8 spark @lgh2 :/home/spark/ #修改myid文件 不同机器数字不一样,分别为 2 和 3 ##启动 zkServer.sh start #查看状态 zkServer.sh status #查看进程 jps QuorumPeerMain |
二、安装flink
2.1、基础安装配置
下载:https://flink.apache.org/downloads.html#apache-flink-1101
下载如上两个两个包(第二个包对应hadoop的版本),然后对flink的通过过tar命令进行解压,把第二个包放在flink包的lib目录下,如下所示
1 2 3 4 5 | [flink @lgh01 lib]$ pwd /home/flink/flink10/lib [flink @lgh01 lib]$ ll | grep hadoop -rwxrwxrwx 1 mstream hive 80331 Apr 16 14 : 20 flink-hadoop-compatibility_2. 11 - 1.10 . 0 .jar -rwxrwxrwx 1 mstream hive 36433393 Apr 16 14 : 20 <strong>flink-shaded-hadoop- 2 -uber- 2.6 . 5 - 8.0 .jar</strong> |
然后配置hadoop相关的环境变量和flink环境变量
1 2 3 4 5 6 7 8 9 10 11 12 13 | vim /etc/profile #########后面追加内容######### export PATH=/apps/opt/cloudera/parcels/CDH/bin:$PATH export HADOOP_HOME=/apps/opt/cloudera/parcels/CDH/lib/hadoop export HADOOP_CONF_DIR=/etc/hadoop/conf export YARN_CONF_DIR=/etc/hadoop/conf export PATH=$PATH:/apps/opt/cloudera/parcels/CDH/bin export CLASSPATH=$CLASSPATH:/apps/opt/cloudera/parcels/CDH/jars/:/utf/ #export FLINK_HOME=/apps/flink/flink #export PATH=$FLINK_HOME/bin:$PATH export FLINK_HOME=/apps/mstream/install/flink10 export PATH=$FLINK_HOME/bin:$PATH |
然后修改flinkxxx/conf/flink-conf.yaml这个配置文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | jobmanager.rpc.address: 192.168 . 88.130 jobmanager.rpc.port: 6124 jobmanager.heap.size: 1024m taskmanager.heap.size: 1024m taskmanager.numberOfTaskSlots: 2 #根据自己的CPU core进行配置,lscpu可以查看cpu的核数 cluster.evenly-spread-out-slots: true env.java.home: /usr/java/ default #可以不配置 parallelism. default : 2 high-availability: zookeeper high-availability.zookeeper.path.root: /flink high-availability.storageDir: hdfs: ///user/flink/ha/ high-availability.zookeeper.quorum: lgh1: 2181 ,lgh2: 2181 ,lgh3: 2181 #high-availability.cluster-id: /cluster_one # important: customize per cluster #这个参数在yarn模式下不能配置 rest.port: 8081 rest.bind-port: 8080 - 8180 #这里启动Standalone集群的时候会在日志中选择端口,而不一定就是 8081 ,所以登录的网址就是看日志 taskmanager.memory.process.size: 2048m #flink1. 10 内存结构变化之后必须要配置三种其中的一个,根据集群进行相应的配置,详情见官网 jobmanager.execution.failover-strategy: region #checkpoint state.checkpoints.dir: hdfs: ///user/flink/checkpoint state.checkpoints.num-retained: 20 #savepoint state.savepoints.dir: hdfs: ///user/flink/savepoints #stateful state.backend: filesystem #使用FsStateBackend(生产推荐使用rocksdb) state.backend.fs.checkpointdir: hdfs: ///user/flink/pointsdata/ state.backend.incremental: true jobmanager.archive.fs.dir: hdfs: ///user/flink/flink-jobs/ historyserver.web.address: 192.168 . 88.130 historyserver.web.port: 8083 historyserver.archive.fs.dir: hdfs: ///user/flink/historyserver historyserver.archive.fs.refresh-interval: 10000 blob.storage.directory: /tmp/ |
配置conf/masters
1 2 | 192.168 . 88.130 : 8081 192.168 . 88.131 : 8081 |
配置conf/slaves
1 2 3 | 192.168 . 88.130 192.168 . 88.131 192.168 . 88.132 |
然后将flink的安装包通过scp -r 命令复制到其他的节点
2.2、日志相关配置(可选)
JobManager和TaskManager的启动日志可以在Flinkbinary目录下的log子目录中找到:
1 2 3 4 5 6 7 8 | -rw-r--r-- 1 flink flink 0 Mar 25 11 : 43 flink-flink-standalonesession- 8 -lgh01.out. 1 -rw-r--r-- 1 flink flink 0 Mar 23 16 : 31 flink-flink-standalonesession- 8 -lgh01.out. 2 -rw-r--r-- 1 flink flink 0 Mar 23 15 : 18 flink-flink-standalonesession- 8 -lgh01.out. 3 -rw-r--r-- 1 flink flink 0 Mar 23 14 : 55 flink-flink-standalonesession- 8 -lgh01.out. 4 -rw-r--r-- 1 flink flink 216520 May 5 16 : 38 flink-flink-taskexecutor- 0 -lgh01.log -rw-r--r-- 1 flink flink 14191242 Apr 19 00 : 05 flink-flink-taskexecutor- 0 -lgh01.log. 1 -rw-r--r-- 1 flink flink 821762 Apr 16 12 : 24 flink-flink-taskexecutor- 0 -lgh01.log. 2 -rw-r--r-- 1 flink flink 0 Apr 28 11 : 42 flink-flink-taskexecutor- 0 -lgh01.out |
目录中以“flink-{id}-${hostname}”为前缀的文件对应的即是JobManager 的输出,其中有三个文件:
- flink-{id}-${hostname}.log:代码中的日志输出
- flink-{id}-${hostname}.out:进程执行时的 stdout 输出
- flink-{id}-${hostname}-gc.log:JVM 的 GC 的日志
目录中以“flink-{id}-${hostname}”为前缀的文件对应的是 TaskManager的输出,也包括三个文件,和 JobManager 的输出一致。
日志配置文件在flink安装包的conf目录下,如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | [flink @lgh01 conf]$ pwd /home/flink/flink10/conf [flink @lgh01 conf]$ ll total 56 -rw-r--r-- 1 flink flink 1187 Mar 25 11 : 43 flink-conf.yaml -rw-r--r-- 1 flink flink 2138 Jan 24 17 : 01 log4j-cli.properties -rw-r--r-- 1 flink flink 1884 Jan 24 17 : 01 log4j-console.properties -rw-r--r-- 1 flink flink 1939 Jan 24 17 : 01 log4j.properties -rw-r--r-- 1 flink flink 1709 Jan 24 17 : 01 log4j-yarn-session.properties -rw-r--r-- 1 flink flink 2294 Jan 24 17 : 01 logback-console.xml -rw-r--r-- 1 flink flink 2331 Jan 24 17 : 01 logback.xml -rw-r--r-- 1 flink flink 1550 Jan 24 17 : 01 logback-yarn.xml -rw-r--r-- 1 flink flink 36 Mar 16 15 : 15 masters -rw-r--r-- 1 flink flink 74 Feb 13 09 : 51 slaves -rw-r--r-- 1 flink flink 5484 Apr 28 14 : 08 sql-client-defaults.yaml -rw-r--r-- 1 flink flink 1541 Feb 28 16 : 38 sql-client-hive.yaml -rw-r--r-- 1 flink flink 1434 Jan 24 17 : 01 zoo.cfg |
其中:
- log4j-cli.properties:用Flink命令行时用的log配置,比如执行“flinkrun”命令
- log4j-yarn-session.properties:是用yarn-session.sh启动时命令行执行时用的log配置
- log4j.properties:无论是standalone还是yarn模式,JobManager和TaskManager上用的log配置都是log4j.properties
这三个“log4j.*properties”文件分别有三个“logback.*xml”文件与之对应,如果想使用logback的同学,之需要把与之对应的“log4j.*properties”文件删掉即可,对应关系如下:
- log4j-cli.properties->logback-console.xml
- log4j-yarn-session.properties->logback-yarn.xml
- log4j.properties->logback.xml
需要注意的是,“flink-{id}-{user}-taskexecutor-{hostname}”都带有“{id}”表示本进程在本机上该角色(JobManager
或TaskManager)的所有进程中的启动顺序,默认从0开始。
2.3、启动相关
Standalone集群:在打通ssh的节点执行命令: start-cluster.sh即可,然后可以通过jps命令查看相关进程
yarn-session模式:后台启动yarn-session.sh即可,这里可以配置很多参数,可以用yarn-session.sh --help查看,比如:
1 | ./bin/yarn-session.sh -jm 1024m -tm 4096m |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | [flink @lgh01bin ]$ ./yarn-session.sh --help Usage: Optional -at,--applicationType <arg> Set a custom application type for the application on YARN -D <property=value> use value for given property -d,--detached If present, runs the job in detached mode -h,--help Help for the Yarn session CLI. -id,--applicationId <arg> Attach to running YARN session -j,--jar <arg> Path to Flink jar file -jm,--jobManagerMemory <arg> Memory for JobManager Container with optional unit ( default : MB) -m,--jobmanager <arg> Address of the JobManager (master) to which to connect. -nl,--nodeLabel <arg> Specify YARN node label for the YARN application -nm,--name <arg> Set a custom name for the application on YARN -q,--query Display available YARN resources (memory, cores) -qu,--queue <arg> Specify YARN queue. -s,--slots <arg> Number of slots per TaskManager -t,--ship <arg> Ship files in the specified directory (t for transfer) -tm,--taskManagerMemory <arg> Memory per TaskManager Container with optional unit ( default : MB) -yd,--yarndetached If present, runs the job in detached mode (deprecated; use non-YARN specific option instead) -z,--zookeeperNamespace <arg> Namespace to create the Zookeeper sub-paths for high availability mode |
yarn per-job模式:不要启动任何啥,通过flink run -m yarn-cluster命令进行提交任务即可,比如:
1 | ./bin/flink run -m yarn-cluster -p 4 -yjm 1024m -ytm 4096m ./examples/batch/WordCount.jar |
如果有小伙伴也在学习研究flink的话,可以关注下,后期会更新flink相关的基础和flink的相关源码分析
参考:
https://files.alicdn.com/tpsservice/4824447b829149c86bedd19424d05915.pdf
出处:https://www.cnblogs.com/zsql/
如果您觉得阅读本文对您有帮助,请点击一下右下方的推荐按钮,您的推荐将是我写作的最大动力!
版权声明:本文为博主原创或转载文章,欢迎转载,但转载文章之后必须在文章页面明显位置注明出处,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现