Flink编程——基础环境搭建

基础环境搭建

文章目录

准备环境搭建

我们先把电脑的准备环境给安装好,这样后面才能顺利的学习和时间

因为后面可能用到的有:Kafka、MySQL、ElasticSearch 等,另外像 Flink 编写程序还需要依赖Java,还有就是我们项目是用 Maven来管理依赖的,所以需要把这些环境搭建起来,如果可以的话也可以把Hadoop 的环境搭建起来,后面学习数据湖的时候要用。

源码环境搭建

源码环境是我们理解和阅读源代码的最有用的工具了,搭建好源码环境后我们可以对源代码进行调试和二次开发

克隆代码

Flink GitHub 仓库地址:https://github.com/apache/flink 但是GitHub 经常由于网络的一些问题不稳定,我们可以使用Gitee

复制代码
git clone https://gitee.com/apache/flink.git

'

我们可以切到对应的目录下,查看一下分支情况

编译
复制代码
mvn clean install -DskipTests -Dfast -Pskip-webui-build -T 1C
  • -DskipTests:跳过测试代码
  • -Dfast:跳过 QA 的插件和 JavaDocs 的生成
  • -Pskip-webui-build:跳过 WebUI 编译

fastskip-webui-build 这两个 Maven profiles 对整体构建时间影响比较大,特别是在存储设备比较慢的机器上,因为对应的任务会读写很多小文件。

注意: maven 的 settings.xml 文件的 mirror 添加下面这个

xml 复制代码
<mirror>
  <id>nexus-aliyun</id>
  <mirrorOf>*,!jeecg,!jeecg-snapshots,!mapr-releases</mirrorOf>
  <name>Nexus aliyun</name>
  <url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

<mirror>
  <id>mapr-public</id>
  <mirrorOf>mapr-releases</mirrorOf>
  <name>mapr-releases</name>
  <url>https://maven.aliyun.com/repository/mapr-public</url>
</mirror>

可以加速依赖包的下载

'

导入IDEA

IDEA 作为目前我们最长使用的开发工具,我们可以使用IDEA 阅读和理解Flink 的源代码,导入项目之前我们先配置一下Maven,不然我们它默认的目录是在用户目录下,这样就会导致我们在编译时候下载的的依赖还有再下载一遍,所以我们这里配置一下我们的Maven

'

接下来开始导入,步骤参考如下

  1. 启动 IntelliJ IDEA 并选择 New → Project from Existing Sources。
  2. 选择已克隆的 Flink 存储库的根文件夹。
  3. 选择 "Import project from external model",然后选择 "Maven"。
  4. 保留默认选项,然后依次单击 "Next",直到到达 SDK 部分。
  5. 如果未列出 SDK,请使用左上角的 "+" 号创建一个。选择 "JDK",选择 JDK 主目录,然后单击 "OK"。选择最合适的 JDK 版本。注意:一个好的经验法则是选择与活动 Maven 配置文件匹配的 JDK 版本。
  6. 单击 "Next" 继续,直到完成导入。
  7. 右键单击已导入的 Flink 项目 → Maven → Generate Sources and Update Folders。请注意:这会将 Flink 库安装在本地 Maven 存储库中,默认情况下位于 "/home/$USER/.m2/repository/org/apache/flink/"。另外 mvn clean package -DskipTests 也可以创建 IDE 运行所需的文件,但无需安装库。
  8. 编译项目(Build → Make Project)

我们选择我们的下载目录打开即可

或者这里你可以选择导入项目,然后根据提示一步步完成设置

'

选择maven

'

最后成功导入,这下我们可以在IDEA 中进行堆代码的调试和开发了

'

集群环境搭建

Apache Flink 可以以多种方式在不同的环境中部署,抛开这种多样性而言,Flink 集群的基本构建方式和操作原则仍然是相同的。

一个 Flink 集群总是包含一个 JobManager以及一个或多个 TaskManager。JobManager 负责处理 Job提交、 Job 监控以及资源管理。Flink TaskManager 运行 worker 进程, 负责实际任务 Tasks的执行,而这些任务共同组成了一个 Flink Job。

本地模式安装

请按照以下几个步骤下载最新的稳定版本开始使用。

步骤 1:下载

为了运行Flink,需提前安装好 Java 11 或者 Java8。你可以通过以下命令来检查 Java 是否已经安装正确。

bash 复制代码
java -version

下载 release 1.18.0 并解压。

bash 复制代码
$ tar -xzf flink-1.18.0-bin-scala_2.12.tgz
$ cd flink-1.18.0-bin-scala_2.12
步骤 2:启动集群

Flink 附带了一个 bash 脚本,可以用于启动本地集群。

bash 复制代码
$ ./bin/start-cluster.sh
Starting cluster.
Starting standalonesession daemon on host.
Starting taskexecutor daemon on host.

因为我这里在worker 文件里配置在本地启动了三个TaskManager 进程

'

'

步骤 3:提交作业(Job)

Flink 的 Releases 附带了许多的示例作业。你可以任意选择一个,快速部署到已运行的集群上。

bash 复制代码
$ ./bin/flink run examples/streaming/WordCount.jar
$ tail log/flink-*-taskexecutor-*.out
  (nymph,1)
  (in,3)
  (thy,1)
  (orisons,1)
  (be,4)
  (all,2)
  (my,1)
  (sins,1)
  (remember,1)
  (d,4)

另外,你可以通过 Flink 的 Web UI 来监视集群的状态和正在运行的作业,可以看到作业已经运行结束了

'

上面的日志输出,你也可以在Flink 的 Web UI 上看,但是因为我们这里启动了三个TaskManager,但是我们的任务并行度是1 ,也就是只有某一个的TaskManager 日志可以看到

'

下面就是 Web UI 上的日志

'

步骤 4:停止集群

完成后,你可以快速停止集群和所有正在运行的组件。

bash 复制代码
$ ./bin/stop-cluster.sh

'

总结

到这里我们的环境搭建就完成了主要包括

  1. 准备环境搭建
  2. 源码环境搭建
  3. 集群环境搭建
相关推荐
武子康15 小时前
大数据-237 离线数仓 - Hive 广告业务实战:ODS→DWD 事件解析、广告明细与转化分析落地
大数据·后端·apache hive
大大大大晴天16 小时前
Flink生产问题排障-Kryo serializer scala extensions are not available
大数据·flink
武子康3 天前
大数据-236 离线数仓 - 会员指标验证、DataX 导出与广告业务 ODS/DWD/ADS 全流程
大数据·后端·apache hive
武子康4 天前
大数据-235 离线数仓 - 实战:Flume+HDFS+Hive 搭建 ODS/DWD/DWS/ADS 会员分析链路
大数据·后端·apache hive
DianSan_ERP4 天前
电商API接口全链路监控:构建坚不可摧的线上运维防线
大数据·运维·网络·人工智能·git·servlet
够快云库4 天前
能源行业非结构化数据治理实战:从数据沼泽到智能资产
大数据·人工智能·机器学习·企业文件安全
AI周红伟4 天前
周红伟:智能体全栈构建实操:OpenClaw部署+Agent Skills+Seedance+RAG从入门到实战
大数据·人工智能·大模型·智能体
B站计算机毕业设计超人4 天前
计算机毕业设计Django+Vue.js高考推荐系统 高考可视化 大数据毕业设计(源码+LW文档+PPT+详细讲解)
大数据·vue.js·hadoop·django·毕业设计·课程设计·推荐算法
计算机程序猿学长4 天前
大数据毕业设计-基于django的音乐网站数据分析管理系统的设计与实现(源码+LW+部署文档+全bao+远程调试+代码讲解等)
大数据·django·课程设计
B站计算机毕业设计超人4 天前
计算机毕业设计Django+Vue.js音乐推荐系统 音乐可视化 大数据毕业设计 (源码+文档+PPT+讲解)
大数据·vue.js·hadoop·python·spark·django·课程设计