Flink历史服务器

        回想一下,在实际线上开发flink任务时,是否存在这样的需求:flink实时任务掉线了,此时我们再去查看yarn的web页面最多也只能查看JobManager 的日志了,像检查点,处理的数据量,水印等指标如果没有Metrics 监控,那么很遗憾这些信息就丢失了,对我们分析flink任务出现的bug,异常退出的原因很不友好,此时flink的HistoryServer出现了。

1.在HDFS上创建日志归档目录
hdfs dfs -mkdir /flink-history-logs
2.在 flink-config.yaml中添加如下配置
jobmanager.archive.fs.dir: hdfs://hdfs-cluster/flink-history-logs historyserver.web.address: hadoop11 historyserver.web.port: 8082 historyserver.archive.fs.dir: hdfs://hdfs-cluster/flink-history-logs historyserver.archive.fs.refresh-interval: 5000

3.启动、关闭历史服务器

historyserver.sh start

historyserver.sh stop

开启进程:

jps查看进程:出现historyserver说明历史服务安装成功

在浏览器地址栏输入:http://hadoop11:8082 查看已经停止的 job 的统计信息

  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Flink可以通过使用SetState来实现历史全量去重计数。具体实现步骤如下: 1.定义一个MapState作为状态,用于存储历史数据的去重结果。 ``` MapState<String, Long> countState = getRuntimeContext().getMapState(new MapStateDescriptor<>("countState", String.class, Long.class)); ``` 2.在KeyedProcessFunction的processElement方法中,判断当前数据是否已经存在于状态中,如果不存在则将其加入状态,并将计数器加1。 ``` @Override public void processElement(T value, Context ctx, Collector<Long> out) throws Exception { //获取当前事件的key和value String key = ctx.getCurrentKey(); Long currentValue = value.get(); //如果当前事件不存在于状态中,就将其加入状态并将计数器加1 if (!countState.contains(currentValue.toString())) { countState.put(currentValue.toString(), 1L); out.collect(countState.values().iterator().next()); } } ``` 3.在Job中设置状态后端,并启动Job。 ``` StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); env.setStateBackend(new RocksDBStateBackend("hdfs://localhost:9000/flink/checkpoints")); DataStream<Tuple2<String, Long>> input = env.fromElements( Tuple2.of("key", 1L), Tuple2.of("key", 1L), Tuple2.of("key", 2L), Tuple2.of("key", 3L), Tuple2.of("key", 2L), Tuple2.of("key", 4L), Tuple2.of("key", 5L), Tuple2.of("key", 3L) ); input.keyBy(0) .process(new CountDistinct()) .print(); env.execute(); ``` 这样就可以实现历史全量去重计数了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值