Flink教程(1)-集群安装与部署

AI摘要

本文详细介绍了Apache Flink的安装部署过程,包括本地模式和集群模式,特别是Standalone和Flink on YARN两种集群模式的配置,涵盖了从下载安装包到设置SSH免密登录、时间同步等步骤,适合生产环境的部署需求。

【订阅专栏 ,作者所有付费文章都能看】


推荐【Flink教程】https://blog.youkuaiyun.com/hellozpc/category_10645207.html
推荐【Kafka教程】https://bigbird.blog.youkuaiyun.com/article/details/108770504
推荐【JVM面试与调优教程】https://blog.youkuaiyun.com/hellozpc/category_10959501.html
推荐【SpringBoot全套教程】https://blog.youkuaiyun.com/hellozpc/category_10159292.html
推荐【SpringCloud教程】https://blog.youkuaiyun.com/hellozpc/article/details/83692496
推荐【Mybatis教程】https://blog.youkuaiyun.com/hellozpc/article/details/80878563
推荐【SnowFlake教程】https://blog.youkuaiyun.com/hellozpc/article/details/108248227
推荐【并发限流教程】https://blog.youkuaiyun.com/hellozpc/article/details/107582771
推荐【Redis教程】https://bigbird.blog.youkuaiyun.com/article/details/81267030
推荐【Netty教程】https://blog.youkuaiyun.com/hellozpc/category_10945233.html


Flink概述

按照Apache官方的介绍,Flink是一个对有界和无界数据流进行状态计算的分布式处理引擎和框架。通俗地讲,Flink就是一个流计算框架,主要用来处理流式数据。其起源于2010年德国研究基金会资助的科研项目“Stratosphere”,2014年3月成为Apache孵化项目,12月即成为Apache顶级项目。Flinken在德语里是敏捷的意思,意指快速精巧。其代码主要是由 Java 实现,部分代码由 Scala实现。在Flink的世界里,一切数据都是流式的:离线数据(批数据)是有界(bounded)的流;实时数据(流数据)是无界(unbounded)的流。Flink既可以处理有界的批量数据集,也可以处理无界的实时流数据,为批处理和流处理提供了统一编程模型。如果把Storm看做第一代流处理框架、Spark Streaming(微批处理)看做第二代,那么Flink称得上是第三代流处理框架,并且是集大成者。

Flink安装部署

和几乎所有的大数据处理框架一样,使用Flink之前,我们需要在服务器上安装部署Flink框架。Flink可以以多种模式运行,既可以单机运行,也可以集群运行。集群环境下既可以独立运行,也可以依赖YARN来运行。下面详细介绍各种安装部署模式。

本地模式

本地模式即在linux服务器直接解压flink二进制包就可以使用,不用修改任何参数,用于一些简单测试场景。

下载安装包

直接在Flink官网下载安装包,如写作此文章时最新版为flink-1.11.1-bin-scala_2.11.tgz

上传并解压至linux
[root@vm1 myapp]# pwd
/usr/local/myapp

[root@vm1 myapp]# ll
总用量 435772
-rw-r--r--.  1 root root  255546057 2月  8 02:29 flink-1.11.1-bin-scala_2.11.tgz

解压到指定目录

[root@vm1 myapp]# tar -zxvf flink-1.11.1-bin-scala_2.11.tgz  -C /usr/local/myapp/flink/
启动Flink

注意运行之前确保机器上已经安装了JDK1.8或以上版本,并配置了JAVA_HOME环境变量。JDK安装可以参考这篇博文

[root@vm1 ~]# java -version
java version "1.8.0_261"
Java(TM) SE Runtime Environment (build 1.8.0_261-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.261-b12, mixed mode)

进入flink目录执行启动命令

[root@vm1 ~]# cd /usr/local/myapp/flink/flink-1.11.1/
[root@vm1 flink-1.11.1]# bin/start-cluster.sh 
[root@vm1 flink-1.11.1]# jps
3577 Jps
3242 StandaloneSessionClusterEntrypoint
3549 TaskManagerRunner

执行Jps查看java进程,可以看到Flink相关进程已经启动。可以通过浏览器访问Flink的Web界面http://vm1:8081

在这里插入图片描述

能在本机浏览器访问上述页面的前提是Windows系统的hosts文件配了vm1这台服务器的主机名和IP的映射关系,并且linux服务器的防火墙已关闭。

关闭防火墙

查看linux防火墙状态

[root@vm1 ~]# systemctl status firewalld

临时关闭防火墙

[root@vm1 ~]# systemctl stop firewalld

永久关闭防火墙

[root@vm1 ~]# systemctl disable firewalld

关闭Flink

执行bin/stop-cluster.sh

Flink集群模式

集群环境适合在生产环境下面使用,且需要修改对应的配置参数。Flink提供了多种集群模式,我们这里主要介绍standalone和Flink on Yarn两种模式。

Standalone模式

Standalone是Flink的独立集群部署模式,不依赖任何其它第三方软件或库。如果想搭建一套独立的Flink集群,不依赖其它组件可以使用这种模式。搭建一个标准的Flink集群,需要准备3台Linux机器。

Linux机器规划
节点类型主机名IP
Mastervm1192.168.174.136
Slavevm2192.168.174.137
Slavevm3192.168.174.138

在Flink集群中,Master节点上会运行JobManager(StandaloneSessionClusterEntrypoint)进程,Slave节点上会运行TaskManager(TaskManagerRunner)进程。

集群中Linux节点都要配置JAVA_HOME,并且节点之间需要设置ssh免密码登录,至少保证Master节点可以免密码登录到其他两个Slave节点,linux防火墙也需关闭。

设置免密登录

1)先在每一台机器设置本机免密登录自身

[root@vm1 ~]# ssh-keygen -t rsa
[root@vm1 ~]#  cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

在本机执行ssh登录自身,不提示输入密码则表明配置成功

[root@vm1 ~]# ssh vm1
Last login: Tue Sep 29 22:23:39 2020 from vm1

在其它机器vm2、vm3执行同样的操作:

ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

ssh vm2

ssh vm3

2)设置vm1免密登录其它机器

把vm1的公钥文件拷贝到其它机器vm2、vm3上

[root@vm1 ~]# scp ~/.ssh/id_rsa.pub root@vm2:~/
[root@vm1 ~]# scp ~/.ssh/id_rsa.pub root@vm3:~/

登录到vm2、vm3,把vm1的公钥文件追加到自己的授权文件中

[root@vm2 ~]# cat ~/id_rsa.pub  >> ~/.ssh/authorized_keys 
[root@vm3 ~]# cat ~/id_rsa.pub  >> ~/.ssh/authorized_keys 

如果提示没有 ~/.ssh/authorized_keys目录则可以在这台机器上执行ssh-keygen -t rsa。不建议手动创建.ssh目录!

验证在vm1上ssh登录vm2、vm3是否无需密码,不需要密码则配置成功!

[root@vm1 ~]# ssh vm2
Last login: Mon Sep 28 22:31:22 2020 from 192.168.174.133

[root@vm1 ~]# ssh vm3
Last login: Tue Sep 29 22:35:25 2020 from vm1

执行exit退回到本机

[root@vm3 ~]# exit
logout
Connection to vm3 closed.
[root@vm1 ~]# 

3)同样方式设置其它机器之间的免密登录

在vm2、vm3上执行同样的步骤

把vm2的公钥文件拷贝到vm1、vm3

[root@vm2 ~]# scp ~/.ssh/id_rsa.pub root@vm1:~/
[root@vm2 ~]# scp ~/.ssh/id_rsa.pub root@vm3:~/
[root@vm1 ~]#  cat ~/id_rsa.pub  >> ~/.ssh/authorized_keys 
[root@vm3 ~]#  cat ~/id_rsa.pub  >> ~/.ssh/authorized_keys 

把vm3的公钥文件拷贝到vm1、vm2

[root@vm3 ~]# scp ~/.ssh/id_rsa.pub root@vm1:~/
[root@vm3 ~]# scp ~/.ssh/id_rsa.pub root@vm2:~/
[root@vm1 ~]#  cat ~/id_rsa.pub  >> ~/.ssh/authorized_keys 
[root@vm2 ~]#  cat ~/id_rsa.pub  >> ~/.ssh/authorized_keys 

4)验证ssh免密码登录

[root@vm2 ~]# ssh vm1
[root@vm2 ~]# ssh vm3
[root@vm3 ~]# ssh vm1
[root@vm3 ~]# ssh vm2
设置主机时间同步

如果集群内节点时间相差太大的话,会导致集群服务异常,所以需要保证集群内各节点时间一致。

执行命令yum install -y ntpdate 安装ntpdate

执行命令ntpdate -u ntp.sjtu.edu.cn 同步时间

Flink安装步骤

下列步骤都是先在Master机器上操作,再拷贝到其它机器(确保每台机器都安装了jdk)

  1. 解压Flink安装包

[root@vm1 myapp]# tar -zxvf flink-1.11.1-bin-scala_2.11.tgz -C /usr/local/myapp/flink/

  1. 修改Flink的配置文件flink-1.11.1/conf/flink-conf.yaml

把jobmanager.rpc.address配置的参数值改为vm1

jobmanager.rpc.address: vm1

  1. 修改Flink的配置文件flink-1.11.1/conf/workers
[root@vm1 conf]# vim workers 
vm2
vm3
  1. 将vm1这台机器上修改后的flink-1.11.1目录复制到其他两个Slave节点
scp -rq /usr/local/myapp/flink vm2:/usr/local/myapp/
scp -rq /usr/local/myapp/flink vm3:/usr/local/myapp/
  1. 在vm1这台机器上启动Flink集群服务

执行这一步时确保各个服务器防火墙已关闭

进入flink目录/flink-1.11.1/bin执行start-cluster.sh

[root@vm1 ~]# cd /usr/local/myapp/flink/flink-1.11.1/
[root@vm1 flink-1.11.1]# bin/start-cluster.sh 
Starting cluster.
Starting standalonesession daemon on host vm1.
Starting taskexecutor daemon on host vm2.
Starting taskexecutor daemon on host vm3.
  1. 查看vm1、vm2和vm3这3个节点上的进程信息
[root@vm1 flink-1.11.1]# jps
4983 StandaloneSessionClusterEntrypoint
5048 Jps

[root@vm2 ~]# jps
4122 TaskManagerRunner
4175 Jps

[root@vm3 ~]# jps
4101 Jps
4059 TaskManagerRunner
  1. 查看Flink Web UI界面,访问http://vm1:8081
    在这里插入图片描述

8)提交任务执行

[root@vm1 flink-1.11.1]# bin/flink run ./examples/batch/WordCount.jar

提交任务可以在任意一台flink客户端服务器提交,本例中在vm1、vm2、vm3都可以
在这里插入图片描述

  1. 停止flink集群

bin/stop-cluster.sh

10)单独启动、停止进程

手工启动、停止主进程StandaloneSessionClusterEntrypoint

[root@vm1 flink-1.11.1]# bin/jobmanager.sh start
[root@vm1 flink-1.11.1]# bin/jobmanager.sh stop

手工启动、停止TaskManagerRunner(常用于向集群中添加新的slave节点)

[root@vm1 flink-1.11.1]# bin/taskmanager.sh start
[root@vm1 flink-1.11.1]# bin/taskmanager.sh stop
Flink on YARN 模式

在容器化部署盛行的时代,Flink on Yarn应运而生。Flink on Yarn模式使用YARN 作为任务调度系统,即在YARN上启动运行flink。好处是能够充分利用集群资源,提高服务器的利用率。这种模式的前提是要有一个Hadoop集群,并且只需公用一套hadoop集群就可以执行MapReduce和Spark以及Flink任务,非常方便。因此需要先搭建一个hadoop集群。

Hadoop集群搭建

1)下载并解压到指定目录

从官网下载Hadoop二进制包,上传到linux服务器,并解压到指定目录。

[root@vm1 ~]# tar -zxvf hadoop-2.9.2.tar.gz -C /usr/local/myapp/hadoop/

2)配置环境变量

vim /etc/profile

export HADOOP_HOME=/usr/local/myapp/hadoop/hadoop-2.9.2/
export PATH=$PATH:$HADOOP_HOME/bin

执行hadoop version查看版本号

[root@vm1 hadoop]# source /etc/profile
[root@vm1 hadoop]# hadoop version
Hadoop 2.9.2

3)修改hadoop-env.sh文件

修改配置export JAVA_HOME=${JAVA_HOME}指定JAVA_HOME路径:

export JAVA_HOME=/usr/local/myapp/jdk/jdk1.8.0_261/

同时指定Hadoop日志路径,先创建好目录:

[root@vm1]# mkdir -p /data/hadoop_repo/logs/hadoop

再配置HADOOP_LOG_DIR

export HADOOP_LOG_DIR=/data/hadoop_repo/logs/hadoop

4)修改yarn-env.sh文件

指定JAVA_HOME路径

export JAVA_HOME=/usr/local/myapp/jdk/jdk1.8.0_261/

指定YARN日志目录:

[root@vm1 ~]# mkdir -p /data/hadoop_repo/logs/yarn
export YARN_LOG_DIR=/data/hadoop_repo/logs/yarn

4)修改core-site.xml

配置NameNode的地址fs.defaultFS、Hadoop临时目录hadoop.tmp.dir

NameNode和DataNode的数据文件都会存在临时目录下的对应子目录下

<configuration>
<property>
   <name>fs.defaultFS</name>
   <value>hdfs://vm1:9000</value>
 </property>
 <property>
   <name>hadoop.tmp.dir</name>
   <value>/data/hadoop_repo</value>
 </property>
</configuration>

6)修改hdfs-site.xml

dfs.namenode.secondary.http-address指定secondaryNameNode的http地址,本例设置vm2机器为SecondaryNameNode

<configuration>
 <property>
   <name>dfs.replication</name>
   <value>2</value>
 </property>
 <property>
   <name>dfs.namenode.secondary.http-address</name>
   <value>vm2:50090</value>
 </property>
</configuration>

7)修改yarn-site.xml

yarn.resourcemanager.hostname指定resourcemanager的服务器地址,本例设置vm1机器为hadoop主节点

<configuration>
<property>
   <name>yarn.nodemanager.aux-services</name>
   <value>mapreduce_shuffle</value>
</property>
<property>
   <name>yarn.resourcemanager.hostname</name>
   <value>vm1</value>
</property>
</configuration>

8)修改mapred-site.xml

[root@vm1 hadoop]# mv mapred-site.xml.template mapred-site.xml

<configuration>
<property>
   <name>mapreduce.framework.name</name>
   <value>yarn</value>
</property>
</configuration>

mapreduce.framework.name设置使用yarn运行mapreduce程序

9) 配置slaves

设置vm2、vm3为Hadoop副节点

[root@vm1 hadoop]# vim slaves

vm2
vm3

10)设置免密码登录

免密配置参考前文 设置服务器间相互免密登录

11)拷贝hadoop到其它机器

将在vm1上配置好的Hadoop目录拷贝到其它服务器

[root@vm1 hadoop]# scp -r /usr/local/myapp/hadoop/ vm2:/usr/local/myapp/
[root@vm1 hadoop]# scp -r /usr/local/myapp/hadoop/ vm3:/usr/local/myapp/

12)格式化HDFS

在Hadoop集群主节点vm1上执行格式化命令

[root@vm1 bin]# pwd
/usr/local/myapp/hadoop/hadoop-2.9.2/bin
[root@vm1 bin]# hdfs namenode -format

如果要重新格式化NameNode,则需要先将原来NameNode和DataNode下的文件全部删除,否则报错。NameNode和DataNode所在目录在core-site.xml中hadoop.tmp.dir、dfs.namenode.name.dir、dfs.datanode.data.dir属性配置

13)启动集群

直接启动全部进程

[root@vm1 hadoop-2.9.2]# sbin/start-all.sh

也可以单独启动HDFS

sbin/start-dfs.sh

也可以单独启动YARN

sbin/start-yarn.sh

14)查看web页面

要在本地机器http访问虚拟机先关闭linux防火墙,关闭linux防火墙请参照前文

查看HDFS Web页面:

http://vm1:50070/

查看YARN Web 页面:

http://vm1:8088/cluster

15)查看各个节点进程

[root@vm1 ~]# jps
5026 ResourceManager
5918 Jps
5503 NameNode

[root@vm2 ~]# jps
52512 NodeManager
52824 Jps
52377 DataNode
52441 SecondaryNameNode

[root@vm3 ~]# jps
52307 DataNode
52380 NodeManager
52655 Jps

16)停止Hadoop集群

[root@vm1 hadoop-2.9.2]# sbin/stop-all.sh

Hadoop集群搭建完成后就可以在Yarn上运行Flink了!

Flink on Yarn的两种方式

第1种:在YARN中预先初始化一个Flink集群,占用YARN中固定的资源。该Flink集群常驻YARN 中,所有的Flink任务都提交到这里。这种方式的缺点在于不管有没有Flink任务执行,Flink集群都会独占系统资源,除非手动停止。如果YARN中给Flink集群分配的资源耗尽,只能等待YARN中的一个作业执行完成释放资源才能正常提交下一个Flink作业。这种方式适合小规模、短时间计算任务。

第2种:每次提交Flink任务时单独向YARN申请资源,即每次都在YARN上创建一个新的Flink集群,任务执行完成后Flink集群终止,不再占用机器资源。这样不同的Flink任务之间相互独立互不影响。这种方式能够使得资源利用最大化,适合长时间、大规模计算任务。

下面分别介绍2种方式的具体步骤。

第1种方式

不管是哪种方式,都要先运行Hadoop集群

1)启动Hadoop集群

[root@vm1 hadoop-2.9.2]# sbin/start-all.sh

2)将flink依赖的hadoop相关jar包拷贝到flink目录

[root@vm1]# cp /usr/local/myapp/hadoop/hadoop-2.9.2/share/hadoop/yarn/hadoop-yarn-api-2.9.2.jar /usr/local/myapp/flink/flink-1.11.1/lib
[root@vm1]# cp /usr/local/myapp/hadoop/hadoop-2.9.2/share/hadoop/yarn/sources/hadoop-yarn-api-2.9.2-sources.jar /usr/local/myapp/flink/flink-1.11.1/lib

还需要 flink-shaded-hadoop-2-uber-2.8.3-10.0.jar ,可以从maven仓库下载并放到flink的lib目录下。

3)创建并启动flink集群

在flink的安装目录下执行

bin/yarn-session.sh -n 2 -jm 512 -tm 512 -d

这种方式创建的是一个一直运行的flink集群,也称为flink yarn-session

由于Yarn模式的Flink集群是由yarn来启动的,因此可以在yarn控制台,即hadoop集群管理页面查看是否有flink任务成功运行:http://vm1:8088/cluster
在这里插入图片描述

创建成功后,flink控制台会输出web页面的访问地址,可以在web页面查看flink任务执行情况:
在这里插入图片描述

控制台输出http://vm2:43243 可以认为flink的Jobmanager进程就运行在vm2上,且端口是43243。指定host、port提交flink任务时可以使用这个地址+端口

4)附着到flink集群

创建flink集群后会有对应的applicationId,因此执行flink任务时也可以附着到已存在的、正在运行的flink集群

#附着到指定flink集群
[root@vm1 flink-1.11.1]# bin/yarn-session.sh -id application_1602852161124_0001

applicationId参数是上一步创建flink集群时对应的applicationId

5) 提交flink任务

可以运行flink自带的wordcount样例:

[root@vm1 flink-1.11.1]# bin/flink run ./examples/batch/WordCount.jar

在flink web页面 http://vm2:43243/ 可以看到运行记录:
在这里插入图片描述

可以通过-input和-output来手动指定输入数据目录和输出数据目录:

-input hdfs://vm1:9000/words
-output hdfs://vm1:9000/wordcount-result.txt

第2种方式

这种方式很简单,就是在提交flink任务时同时创建flink集群

[root@vm1 flink-1.11.1]# bin/flink run -m yarn-cluster -yjm 1024 ./examples/batch/WordCount.jar

需要在执行上述命令的机器(即flink客户端)上配置环境变量YARN_CONF_DIR、HADOOP_CONF_DIR或者HADOOP_HOME环境变量,Flink会通过这个环境变量来读取YARN和HDFS的配置信息。

如果报下列错,则需要禁用hadoop虚拟内存检查:

Diagnostics from YARN: Application application_1602852161124_0004 failed 1 times (global limit =2; local limit is =1) due to AM Container for appattempt_1602852161124_0004_000001 exited with  exitCode: -103
Failing this attempt.Diagnostics: [2020-10-16 23:35:56.735]Container [pid=6890,containerID=container_1602852161124_0004_01_000001] is running beyond virtual memory limits. Current usage: 105.8 MB of 1 GB physical memory used; 2.2 GB of 2.1 GB virtual memory used. Killing container.

修改所有hadoop机器(所有 nodemanager)的文件$HADOOP_HOME/etc/hadoop/yarn-site.xml

<property>  
    <name>yarn.nodemanager.vmem-check-enabled</name>  
    <value>false</value>  
</property>

重启hadoop集群再次运行

[root@vm1 hadoop-2.9.2]# sbin/stop-all.sh
[root@vm1 hadoop-2.9.2]# sbin/start-all.sh
[root@vm1 flink-1.11.1]# bin/flink run  -m yarn-cluster  -yjm 1024 ./examples/batch/WordCount.jar

任务成功执行,控制台输出如下。可以使用控制台输出的web页面地址vm3:44429查看任务。不过这种模式下任务执行完成后Flink集群即终止,所以输入地址vm3:44429时可能看不到结果,因为此时任务可能执行完了,flink集群终止,页面也访问不了了。
在这里插入图片描述

上述Flink On Yarn的2种方式案例中分别使用了两个命令:yarn-session.sh 和 flink run

yarn-session.sh 可以用来在Yarn上创建并启动一个flink集群,可以通过如下命令查看常用参数:

[root@vm1 flink-1.11.1]# bin/yarn-session.sh -h

-n :表示分配的容器数量,即TaskManager的数量

-s : 每个TaskManager的slot数量,一般根据cpu核数设定

-jm:设置jobManagerMemory,即JobManager的内存,单位MB

-tm:设置taskManagerMemory ,即TaskManager的内存,单位MB

-d: 设置运行模式为detached,即后台独立运行

-nm:设置在YARN上运行的应用的name(名字)

-id: 指定任务在YARN集群上的applicationId ,附着到后台独立运行的yarn session中

flink run命令既可以提交任务到Flink集群中执行,也可以在提交任务时创建一个新的flink集群,可以通过如下命令查看常用参数:

[root@vm1 flink-1.11.1]# bin/flink run -h

-m: 指定主节点(JobManger)的地址,在此命令中指定的JobManger地址优先于配置文件中的

-c: 指定jar包的入口类,此参数在jar 包名称之前

-p:指定任务并行度,同样覆盖配置文件中的值

flink run使用举例:

1)提交并执行flink任务,默认查找当前YARN集群中已有的yarn-session的JobManager

[root@vm1 flink-1.11.1]# bin/flink run ./examples/batch/WordCount.jar -input hdfs://vm1:9000/hello.txt -output hdfs://vm1:9000/result_hello

2)提交flink任务时显式指定JobManager的的host的port,该域名和端口是创建flink集群时控制台输出的

[root@vm1 flink-1.11.1]# bin/flink run -m vm3:39921 ./examples/batch/WordCount.jar  -input hdfs://vm1:9000/hello.txt -output hdfs://vm1:9000/result_hello

3)在YARN中启动一个新的Flink集群,并提交任务

[root@vm1 flink-1.11.1]# bin/flink run  -m yarn-cluster  -yjm 1024 ./examples/batch/WordCount.jar -input hdfs://vm1:9000/hello.txt -output hdfs://vm1:9000/result_hello

-m yarn-cluster是固定写法,这种方式告诉flink不用去找standalone集群和yarn session集群,而是根据当前提交的job单独启动一个cluster。

完整教程请订阅《作者专栏合集》,谢谢支持!

小白速通!Flink Standalone 模式安装部署教程,3 步搞定实时计算神器 想入门实时计算却被 Flink 难住?这篇教程专为你准备!Flink Standalone 模式无需依赖其他平台,部署超简单,特别适合新手。3 步就能搞定:备好 Java 环境,解压安装包,启动集群即可。还教你跑实时单词统计示例,直观感受效果。附避坑指南,解决 Java 环境、端口访问等常见问题。不管是单节点还是伪分布式,跟着操作都能轻松搞定。赶紧学起来,开启你的实时计算之旅! 阅读详情

相关推荐

【Flink】flink的安装部署(1)

Flink集群的搭建,local,standalone,flink on yarn。

hx1156477702的博客 3005

Flink安装及部署

(1) 下载flink:flink-1.13.1-bin-scala_2.11.tgzhttps://flink.apache.org/downloads.html(2)上传flink到linux本地模式安装 | Apache Flinkconf/master conf/workers flink-conf.yaml Stream测试案例: Batch测试案例: 2. Flink 架构 https://ci.apache.org/projects/flink/flink-docs-release-1.13/

YLKai_的博客 2515

Flink实战教程从入门到精通(基础篇)(三)Flink集群部署

Flink提交作业和执行任务,需要几个关键组件::代码由客户端并做,之后提交给J。就是Flink集群里的“”,对作业进行中央调度管理;而它获取到要执行的作业后,会进一步处理转换,然后分发任务给众多的TaskManager。,就是真正“”,都是它们来做的。注意:Flink是一个非常灵活的处理框架,,还所以接下来我们会先做一个简单的介绍:让大家有一个初步的认识,之后再展开讲述不同情形下的Flink部署。

majunssz的博客 2220

CentOS7下的Flink 集群部署

通过以上步骤,可构建一个高可用、高性能的 Flink 分布式流处理集群,支撑实时数据处理与分析任务。生产环境中需结合业务场景优化资源分配、内存使用及 Checkpoint 策略,并利用 Flink 生态工具(如 Flink SQL、Table API)提升开发效率。参考官方文档()可进一步学习流处理语义、机器学习集成等高级特性及性能调优技巧。

2401_83224865的博客 1148

Flink1.13.2三种方式安装部署

有位Flink初学者问我有没有Flink的安装教程,看到这后,土哥二话不说直接安排上。 以下教程全部使用 Flink1.13.2版本,在普通用户下面部署: 1、Standalone部署 版本要求: 版本 节点 部署方式 flink-1.13.2-bin-scala_2.11.tgz 192.168.244.129 standalone 1.1 将软件安装包放入集群中 1.2、软件包解压 tar -zxvf flink-1.13.2-bin-scala_2.11

逆流而上Mr李 1万+

音乐频谱灯的硬件艺术:从STM32到SK9822LED的工程美学

本文探讨了基于STM32微控制器和SK9822 LED的音乐频谱灯硬件设计与实现。通过ADC采集音频信号,利用FFT算法进行频谱分析,并驱动LED阵列呈现动态视觉效果,展现了硬件工程与艺术美学的完美融合。

Pepper的专栏 217

HID报告描述符实战解析:从Usage到Item的完整设计流程

本文深入解析了HID报告描述符的设计流程,从核心概念Usage(用途定义)入手,详细阐述了如何通过Item(条目)的三种角色——全局、局部与主干,构建出能被系统正确识别的设备“说明书”。文章以标准USB鼠标和键盘为例进行实战拆解,并介绍了使用Report ID与自定义设备等进阶设计方法,帮助开发者掌握这一实现USB设备即插即用的关键技术。

weixin_29230865的博客 282

疑难问题(二)——PyTorch 2.3.0 ‘import torch‘ 错误排查:深入解析‘shm.dll‘加载失败与系统路径修复

本文深入解析了在Windows系统上安装PyTorch 2.3.0后,执行'import torch'时遇到的'shm.dll'加载失败错误(OSError)。该问题通常源于系统DLL搜索路径缺失,导致无法找到关键的共享内存通信组件或其依赖项。文章提供了核心解决方案:通过手动修改PyTorch的`__init__.py`文件,将用户基目录下的Library\bin路径添加到DLL搜索列表中,从而从根本上修复此导入错误,并给出了详细的修改步骤和验证方法。

weixin_29056865的博客 305

未来智能家居解决方案:AI应用架构师的前沿探索

当你加班到深夜回家时,门锁自动识别你的脚步声解锁,玄关灯渐亮成你最爱的暖光,空调早已调到25℃(你夏天的习惯温度),音箱播放着最近循环的爵士乐,茶几上的智能水壶烧好了温水——这不是科幻电影,而是未来智能家居的日常。如何让“冰冷的设备”变成“懂你的伙伴”。我们将深入探讨五大前沿技术(边缘AI、多模态融合、联邦学习、数字孪生、个性化推荐)的底层原理,用“家里的小管家”“邻居互相学习”等生活化比喻简化复杂概念,结合代码示例与架构图还原实现流程,并通过智能卧室、智能厨房等真实案例展示落地路径。

AI天才研究院 1410

Windows: 深入剖析pip install SSLError与SSL模块缺失的根源及系统级修复

本文深入分析Windows系统下pip install SSLError与SSL模块缺失的根本原因,提供系统级修复方案。从Python安装包缺失SSL支持、OpenSSL库冲突到环境变量配置问题,详细讲解四大成因及对应的解决方案,包括重新安装Python、手动修复OpenSSL依赖等实用技巧,帮助开发者彻底解决HTTPS连接问题。

weixin_28595749的博客 459

PCIe信号眼图总是不开?手把手教你调CTLE和DFE参数(附实测波形对比)

本文详细解析了PCIe信号眼图调试中CTLE和DFE参数的优化方法,帮助硬件工程师解决眼图无法张开的问题。通过实际案例和步骤指导,介绍了如何调整CTLE直流增益和DFE抽头系数,提升接收端均衡器性能,确保信号完整性。

weixin_26805597的博客 215

打开电脑自动弹窗问题:无法为文件‘D:\Config.Msi\*.rbf‘设置文件安全。错误:5。请确认...如何解决?| 提供多种解决方案,亲测有效!

🏆本文收录于 《全栈Bug调优(实战版)》 专栏,该专栏专注于分享我在真实项目开发中遇到的各类疑难Bug及其深层成因,并系统提供高效、可复现的解决思路和实操方案。无论你是刚入行的新手开发者,还是拥有多年项目经验的资深工程师,本专栏都将为你提供一条系统化、高质量的问题排查与优化路径,助力你加速成长,攻克技术壁垒,迈向技术价值最大化与职业发展的更高峰🚀!

**My Coding Family** 2914

YOLO26涨点改进 | 检测头Head创新改进篇 | 利用RFAConv感受野注意力卷积改进YOLO26检测头,RFAHead感受野注意力检测头,助力小目标检测高效涨点

YOLO26作为轻量化目标检测模型的新一代标杆,凭借高效的Backbone与Neck结构,在实时检测场景中表现突出,但原生检测头仍存在核心痛点——感受野固定、小目标特征感知薄弱、多尺度目标适配不足,导致在小目标密集、复杂背景遮挡等场景中漏检率偏高、定位精度不足。

qq_36130719的博客 168

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

上一篇: webClient和restTemplate对比
下一篇: Flink教程(5)-Flink常用API
程猿薇茑
程猿薇茑 优质创作者: Java技术领域 优质创作者: Java技术领域 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄16年 6050粉丝 213原创
评论 19
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程猿薇茑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值