flink 1.11.2 的安装记录

背景

计划将之前部署好的flink1.10升级到1.11.2。

 

主要流程及踩坑

1.从官方下载flink1.11.2的压缩包,选择与业务程序中导入的maven依赖scala版本一致即可(本人选用的是2.11)。

flink压缩包官方下载链接

 

2.修改对应的配置文件(yarn模式下只需配置 flink-conf.yaml, 如果是使用flink自己的资源调度则简单配置masters、workers文件即可 )。flink 1.10与1.11.2的配置项基本没有太多差别,配置参考之前的文档和内容即可。因为这些之前都自己配置好了,基本都没有进行修改。

首次进行设置的话可以参考flink社区提供的入门文档,根据自己情况进行设置。

Apache Flink 零基础入门(三):开发环境搭建和应用的配置、部署及运行

下面是自己配置的基本参数,可以根据自己的集群性能和要求按官方文档进行修改



jobmanager.rpc.address: cdh2

jobmanager.rpc.port: 6123

jobmanager.heap.size: 1024m

taskmanager.memory.process.size: 1024m


taskmanager.numberOfTaskSlots: 8 

parallelism.default: 1

high-availability: zookeeper

high-availability.zookeeper.path.root: /flink
task.cancellation.timeout: 0

high-availability.storageDir: hdfs:///flink/ha/

high-availability.zookeeper.quorum: cdh3:2181,cdh4:2181,cdh5:2181

yarn.application-attempts: 10

jobmanager.execution.failover-strategy: region

rest.port: 9250


 

3.(非必要)添加额外的jar包。在flink1.11之前如果需要将flink的调度依托于hadoop,则需要引入一批额外的jar包到lib目录下来支持flink与hadoop之间的通信。之前进行额外引入的jar包都有(均可在maven仓库中直接搜索找到并进行下载):

flink-shaded-hadoop-3-uber-3.1.1.7.1.1.0-565-9.0.jar

hadoop-yarn-api-3.1.1.3.1.4.0-315.jar

jersey-client-1.9.jar

jersey-core-1.9.jar

jsr311-api-1.1.1.jar

maven仓库

 

4.配置环境变量

flink1.11已经不需要通过额外引入jar包来支持此功能,但是必须配置YARN_CONF_DIR、HADOOP_CLASSPATH来支持与yarn集群的调度。

进入/etc/profile.d隐藏目录,创建hadoop.sh.并增加如下内容即可:

HADOOP_HOME=/usr/hdp/3.1.4.0-315/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export HADOOP_CLASSPATH='hadoop classpath'

5.使用Per Job cluster模式挂起一个flink任务即可跑路了。flink 使用 yarn资源调度的话 主要有session cluster 和 job cluster两种作业方式:

per Job模式每提交一个任务都会创建一个flink yarn资源调度器(ResourceManager ),一旦job执行完了所有占用的资源都会回收掉,比较适合长时间作业的任务,比如无限数据流的实时计算。

session cluster模式的flink yarn资源管理器(ResourceManager )是复用的,直接在yarn上创建一个flink集群来接受任务。所以在提交任务频繁的情况下,可以节约创建flink yarn资源管理器(ResourceManager )的时间,提升执行效率。适合离线批处理任务。

结合自身集群服务器不大,且全部都是实时计算的特点,这边选择直接使用Per Job cluster模式执行flink任务。

直接在flink/bin路径下,执行./flink run -m yarn-cluster  /root/cliu_bi_job/UserCenterCount.jar 

可以看到任务已经提交,flink集群已经起来运行了,提交在cdh3上启动的服务。可以收工跑路了。

 

反思

之前首次安装clouder manage、kafka、flume配置的时候明明踩坑了好多,也花费了不少时间去解决问题。但是都只有十分简单的记录。导致在下次升级或者重装的时候因为没有详细的笔记或记录,导致并没有因为有踩坑经验减少处理的时间。

 

引申问题

目前根据集群和业务特点选择了Per Job cluster模式提交任务,但是公司有很多需要跑的任务要提交到集群上。使用Per Job cluster模式提交的时候,在哪台服务器启动flink job manager服务是不确定的。导致不同业务的任务随机分配到不同机器上,不方便使用Web UI 查看任务的运行状态。

这个  问题目前还没有找到解决方案。打算找找flink官方的文档,查找一下解决方案。到时候也出一个笔记记录一下。

Flink是一个开源的流处理框架,用于处理高吞吐量的数据流。Flink 1.11.2版本支持离线批处理和实时流处理,能够处理各种数据处理场景。 要使用Flink 1.11.2进行离线统计上个月的数据,你需要按照以下步骤进行: 1. 环境准备:确保你的系统中已经安装Flink,并且配置好环境变量,以便可以在命令行中使用Flink的命令。 2. 准备数据:你需要有一个数据源,比如HDFS、Kafka等,存储了需要处理的数据。数据应该是可以被Flink读取的格式,如CSV、JSON等。 3. 编写Flink作业:使用Flink的API编写作业来读取数据、执行转换操作,并进行统计计算。关键的步骤可能包括: - 读取数据源中的数据。 - 定义Watermark和时间窗口(如果处理的是流数据),如果是批处理则跳过这一步。 - 应用转换操作,比如filter、map等。 - 对数据进行分组和聚合操作,例如使用`groupBy()`和`reduce()`或`aggregate()`函数。 - 对于时间窗口,可以使用窗口函数如`window()`、`windowAll()`等来指定窗口的类型和大小。 4. 设置时间范围:你需要在程序中设置好时间范围,以便处理上个月的数据。这通常涉及到根据当前日期计算上个月的起始和结束时间戳。 5. 运行Flink作业:将编写好的Flink作业提交到Flink集群上运行。 6. 结果输出:处理完毕后,可以将统计结果输出到外部存储系统中,例如HDFS、数据库等。 下面是使用Flink进行批处理统计上个月数据的一个简单示例代码: ```java StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); // 假设有一个数据源 DataStream<String> input = env.readTextFile("path_to_your_data"); // 将数据流转换为POJO或元组,这里以POJO为例 DataStream<MyEvent> myEvents = input.map(new MapFunction<String, MyEvent>() { @Override public MyEvent map(String value) { return MyEvent.fromCSV(value); } }); // 设置时间属性 myEvents.assignTimestampsAndWatermarks(new AscendingTimestampExtractor<MyEvent>() { @Override public long extractAscendingTimestamp(MyEvent element) { return element.getTimestamp(); // 获取事件时间戳 } }); // 定义时间窗口 TimeWindow window = new TimeWindow(TimeUnit.MILLISECONDS.convert(1, TimeUnit.DAYS)); // 进行分组和窗口聚合计算 DataStream<MyAggregates> result = myEvents .keyBy(MyEvent::getKey) .window(window) .reduce(new MyReduceFunction()); // 执行并输出结果 result.writeAsText("path_to_output_data"); // 执行作业 env.execute("Flink Batch Job to Process Last Month's Data"); ``` 注意,上述代码只是一个示例,你需要根据实际情况来调整数据源读取、事件类定义、聚合逻辑等部分。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值