Windows 本地启动Flink.

Windows环境下搭建Flink本地集群
本文介绍了在Windows上设置Flink本地环境的步骤。首先,确保安装了JDK8并配置好环境变量,接着从Apache官网下载Flink 1.8.1版本并解压。启动`start-cluster.sh`脚本后,通过访问localhost:8081验证Flink UI已成功启动。此外,还推荐在Scala官网下载Scala以便编写Flink代码。提供了一个Flink入门程序的GitHub仓库,包含SimpleSourceFunction和WindowWordCount两个类,分别用于生成数据源和执行基于key的聚合操作。最后,通过Flink UI上传jar包并指定mainClass运行程序。

首先需要安装jdk8版本,并且配置环境变量, 然后上官网http://mirror.bit.edu.cn/apache/flink/flink-1.8.1/flink-1.8.1-bin-scala_2.11.tgz 下载flink1.8版本。到解压后的目录下启动start-cluster.sh脚本, 然后在网页上输入localhost:8081进行验证发现可以看到Flink UI说明成功. 

然后在scala官网下载scala方便进行代码编写。https://www.scala-lang.org/download/2.11.8.html

https://github.com/a345560812/FlinkStudy/ Flink的入门程序代码在仓库当中写好了。

包含了两个类文件,SimpleSourceFunction类来创建一个不停生产数据的数据源。然后WindowWordCount当中摄取数据源以后不停的做根据key来聚合求值的运算并进行打印。 在Flink UI当中进行jar包上传并撰写mainClass的类名即可。

这样子代码实践就完成了 在完成提交进行运行以后UI的界面显示如下

[tailweb@ecs-gtcg-gtcg-app-k-ww173010 /home/flink/current/bin]$jps 645832 StandaloneSessionClusterEntrypoint 1960047 NameNode 565434 CliFrontend 1961214 DFSZKFailoverController 572271 Jps 1960273 DataNode 1960723 JournalNode 561366 TaskManagerRunner 10机器上 StandaloneSessionClusterEntrypoint 报错 2025-11-25 15:52:49,017 INFO org.apache.flink.util.NetUtils [] - Unable to allocate on port 6124, due to error: ?????? (Bind failed) 2025-11-25 15:52:49,024 INFO org.apache.flink.runtime.entrypoint.ClusterEntrypoint [] - Shutting StandaloneSessionClusterEntrypoint down with application status FAILED. Diagnostics java.io.IOException: Unable to open BLOB Server in specified port range: 6124 at org.apache.flink.runtime.blob.BlobServer.<init>(BlobServer.java:230) at org.apache.flink.runtime.blob.BlobUtils.createBlobServer(BlobUtils.java:129) at org.apache.flink.runtime.entrypoint.ClusterEntrypoint.initializeServices(ClusterEntrypoint.java:401) at org.apache.flink.runtime.entrypoint.ClusterEntrypoint.runCluster(ClusterEntrypoint.java:289) at org.apache.flink.runtime.entrypoint.ClusterEntrypoint.lambda$startCluster$1(ClusterEntrypoint.java:238) at java.base/java.security.AccessController.doPrivileged(Native Method) at java.base/javax.security.auth.Subject.doAs(Subject.java:423) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1899) at org.apache.flink.runtime.security.contexts.HadoopSecurityContext.runSecured(HadoopSecurityContext.java:41) at org.apache.flink.runtime.entrypoint.ClusterEntrypoint.startCluster(ClusterEntrypoint.java:235) at org.apache.flink.runtime.entrypoint.ClusterEntrypoint.runClusterEntrypoint(ClusterEntrypoint.java:740) at org.apache.flink.runtime.entrypoint.StandaloneSessionClusterEntrypoint.main(StandaloneSessionClusterEntrypoint.java:59)
最新发布
11-26
<think> 嗯,用户遇到了Flink StandaloneSessionClusterEntrypoint在端口6124报错的问题,显示"Bind failed",无法打开BLOB Server。这个问题挺典型的,通常和端口冲突或配置有关。 用户可能是个Flink运维工程师或者开发人员,正在本地搭建集群时遇到了这个阻碍。从ta直接引用技术类文档的行为来看,应该具备一定的技术基础,但可能对网络配置不够熟悉。ta现在应该挺着急的,因为端口冲突会阻断整个集群启动。 需要重点排查几个方向:首先是端口占用情况,6124是Flink的BLOB服务默认端口;其次是配置项检查,比如blob.server.port和rest.bind-port;还有可能是重复启动导致的冲突。 突然想到个细节,用户之前提到"参考站内引用",但那个引用内容和当前问题关联不大,可能是误粘贴。这说明用户可能在多个问题间切换时混淆了引用内容,需要特别注意避免混淆上下文。 解决方案要分层次:最快捷的是检查端口占用并kill进程;最稳妥的是修改配置换端口;还要提醒用户检查关键配置文件和环境变量。对了,如果用户启用了IPv6但系统不支持,也可能出现这种错误,这个点容易被忽略。 用户没有提供具体环境信息,所以补充说明里要提醒ta查看完整日志。考虑到ta可能后续需要调整其他服务端口,应该把相关配置项也列出来,比如rest.bind-port和query.server.port。 最后生成的三个问题都很有延续性:第一个帮助ta理解底层机制,第二个涉及集群优化,第三个则是常见错误汇总——正好构成从原理到实践的完整链条。特别是第二个问题,大型集群的端口配置确实需要提前规划。 </think>好的,针对 Flink StandaloneSessionClusterEntrypoint 启动时在端口 **6124** 报错 **"Bind failed"**,导致 **BLOB Server** 无法打开的问题,以下是详细的排查步骤和解决方案: ### 核心原因分析 端口 `6124` 是 Flink **BLOB (Binary Large Object) Server** 的默认服务端口。`Bind failed` 错误表明该端口已被占用或系统不允许绑定。 ### 解决方法 #### 1. 确认并解决端口冲突 (最常见原因) * **查找占用进程:** ```bash # Linux/Mac lsof -i :6124 # 或 netstat -tulpn | grep 6124 # Windows netstat -ano | findstr :6124 ``` * 查看输出结果,找到占用 `6124` 端口的 **PID (Process ID)**。 * **终止占用进程:** * **Linux/Mac:** `kill -9 <PID>` (替换 `<PID>` 为实际进程ID) * **Windows:** 1. 任务管理器 -> "详细信息" 标签页 -> 根据 PID 找到进程 -> 结束任务。 2. 或命令行 `taskkill /F /PID <PID>`。 * **重启 Flink:** 终止占用进程后,重新尝试启动 Flink Standalone 集群。 #### 2. 修改 Flink BLOB Server 端口配置 (推荐做法) 如果 `6124` 端口被关键服务占用或希望避免未来冲突,可修改 Flink 配置: * 编辑 `conf/flink-conf.yaml` 文件。 * 找到或添加配置项 `blob.server.port`。 * 指定一个未被使用的端口号 (例如 `6125`): ```yaml blob.server.port: 6125 ``` * 保存文件。 * **重启 Flink 集群** 使配置生效。集群启动时会尝试绑定到新端口 `6125`。 #### 3. 检查相关端口配置 * **`rest.bind-port` (`8081`):** Flink Web UI/REST API 端口。如果这个端口也被占用,集群启动同样可能失败,但错误信息会指向 `8081`。检查 `flink-conf.yaml` 中的 `rest.bind-port` 配置,确保其未被占用或修改为可用端口。 * **`query.server.port` (`9069`):** SQL 客户端网关端口。检查其状态和配置 (`query.server.port` in `flink-conf.yaml`),虽然不是 `6124` 错误的直接原因,但端口冲突也可能发生在其他地方。 * **`taskmanager.rpc.port` / `akka.ask.timeout` 等:** 确保集群配置文件中其他端口配置合理且无冲突。 #### 4. 检查网络接口绑定 (较少见) * **`blob.server.address`:** 在 `flink-conf.yaml` 中,此配置项指定 BLOB Server 绑定的网络接口地址。默认 (`0.0.0.0`) 绑定到所有可用接口。如果明确指定了一个无效或不可达的 IP 地址,也可能导致绑定失败。通常保持默认值 `0.0.0.0` 即可。 ```yaml blob.server.address: 0.0.0.0 # 默认值,通常不需要修改 ``` #### 5. 检查系统资源限制 (Linux) * **`ulimit`:** 检查操作系统对用户进程打开文件描述符数量的限制 (`ulimit -n`)。如果设置过低,在资源紧张时可能导致绑定失败。适当调高限制(需 root 权限): ```bash # 临时修改 (当前会话有效) ulimit -n 65536 # 永久修改,编辑 /etc/security/limits.conf ``` * **防火墙/SELinux:** 确认操作系统防火墙或 SELinux 没有阻止 Flink 进程绑定端口 `6124` (或你配置的新端口)。临时关闭防火墙测试或添加相应规则。 #### 6. 检查启动日志的完整上下文 * 仔细查看 `log` 目录下 `flink-<user>-standalonesession-<hostname>.log` 文件中 `Bind failed` 错误前后的日志。可能包含更精确的错误原因 (如 `Address already in use`, `Permission denied` 等) 或其他相关错误信息。 ### 总结步骤 (推荐顺序) 1. 运行 `lsof -i :6124` / `netstat -ano | findstr :6124` **检查端口占用**。 2. 如果找到占用进程,**终止该进程**。 3. 如果端口持续冲突或希望一劳永逸,**修改 `conf/flink-conf.yaml` 中的 `blob.server.port` 为一个空闲端口** (如 `6125`)。 4. 确保 `rest.bind-port` (`8081`) 和其他可能配置的端口**未被占用**。 5. **重启 Flink Standalone 集群** (`./bin/start-cluster.sh`)。 ### 附加说明 * Flink 集群启动时,`StandaloneSessionClusterEntrypoint` 进程负责启动 JobManager 和相关的服务(包括 BLOB Server)。 * BLOB Server 用于在 JobManager 和 TaskManager 之间高效传输大型文件(如用户代码 Jar 包、JobGraph 序列化数据等)。其正常运行对集群至关重要[^1]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值