首页 > 其他分享 >flink初识

flink初识

时间:2023-07-06 19:34:09浏览次数:40  
标签:1.16 flink Flink 初识 mysql apache xbd

  一、flink:apache开源的一款流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。Flink以数据并行和流水线方式执行任意流数据程序,Flink的流水线运行时系统可以执行批处理和流处理程序。此外,Flink的运行时本身也支持迭代算法的执行。

  

  二、Flink是一个计算框架和分布式的计算处理引擎,基于对流(实时、无界)和批(离散、有界)数据进行有状态的计算,它可以通过集群以内存进行任意规模的数据计算。

  • 高吞吐、低延迟、高性能
  • 支持带有事件的窗口(window)操作
  • 支持有状态的计算
  • 内存计算
  • 迭代计算

   

  三、应用场景

  Apache Flink 功能强大,支持开发和运行多种不同种类的应用程序。它的主要特性包括:批流一体化、精密的状态管理、事件时间支持以及精确一次的状态一致性保障等。Flink 不仅可以运行在包括 YARN、 Mesos、Kubernetes 在内的多种资源管理框架上,还支持在裸机集群上独立部署。在启用高可用选项的情况下,它不存在单点失效问题。事实证明,Flink 已经可以扩展到数千核心,其状态可以达到 TB 级别,且仍能保持高吞吐、低延迟的特性。世界各地有很多要求严苛的流处理应用都运行在 Flink 之上。

  四、组成:

  flink 主要分为2个部分:jobmanager、taskmanager。

  jobmanager:主要是处理作业。

  taskmanager:通过任务槽执行具体的任务。

  当然。除了2个主要的,还需要resourcemanager(资源管理器)主要协调任务的和资源的调度过程。

  五、flink 链路流程:

  

  1、source:数据来源

  2、transform:数据转换,分析处理过程。

  3、sink:结果输出下沉。

  五、本地数据库采集开发测试:

  1)maven依赖(具体的都是根据需要进行依赖即可):

   <dependencies>
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-java</artifactId>
            <version>1.16.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-streaming-java</artifactId>
            <version>1.16.2</version>
        </dependency>
        <!-- client -->
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-clients</artifactId>
            <version>1.16.2</version>
        </dependency>
        <!-- jdbc -->
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-connector-jdbc</artifactId>
            <version>1.16.2</version>
        </dependency>
        <!-- mysql -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.29</version>
        </dependency>
    </dependencies>

  2)demo

public class Demo {

    public static void main(String[] args) throws Exception {
        StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();

        // source
        DataStreamSource<Row> input = env.createInput(JdbcInputFormat
                .buildJdbcInputFormat()
                .setDrivername("com.mysql.cj.jdbc.Driver")
                .setDBUrl("jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8&allowMultiQueries=true")
                .setUsername("root")
                .setPassword("root")
                .setQuery("select id from user")
                .setRowTypeInfo(new RowTypeInfo(BasicTypeInfo.STRING_TYPE_INFO))
                .finish());


        //transform
        SingleOutputStreamOperator<String> operator = input.map(new MapFunction<Row, String>() {
            public String map(Row row) throws Exception {
                return String.valueOf(row.getField(0));
            }
        });

        //sink
        operator.addSink(JdbcSink.sink(
                "INSERT INTO test(id) values(?)",
                new JdbcStatementBuilder<String>() {
                    public void accept(PreparedStatement ps, String id) throws SQLException {
                        ps.setString(1, id);
                    }
                },
                new JdbcConnectionOptions.JdbcConnectionOptionsBuilder()
                        .withDriverName("com.mysql.cj.jdbc.Driver")
                        .withUrl("jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8&allowMultiQueries=true")
                        .withUsername("root")
                        .withPassword("root")
                        .build()
        ));
        env.execute("demo");
    }
}

  六、集群开发测试:

  1)集群搭建

version: '3'
services:
  xbd-flink-job:
    image: flink:1.16.2
    container_name: xbd-flink-job
    restart: always
    privileged: true
    ports:
      - 8081:8081
    environment:
      - TZ=Asia/Shanghai
      - JOB_MANAGER_RPC_ADDRESS=xbd-flink-job
    command: jobmanager

  xbd-flink-task:
    image: flink:1.16.2
    container_name: xbd-flink-task
    restart: always
    privileged: true
    environment:
      - TZ=Asia/Shanghai
      - JOB_MANAGER_RPC_ADDRESS=xbd-flink-job
    command: taskmanager
    depends_on:
      - xbd-flink-job

  

  2)打包测试:

  a、maven(主要为了打成jar,包含依赖)

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>3.2.4</version>
                <configuration>
                    <createDependencyReducedPom>false</createDependencyReducedPom>
                </configuration>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

  b、执行、提交:

   c、结果查看

   七、官网:https://flink.apache.org/zh/

标签:1.16,flink,Flink,初识,mysql,apache,xbd
From: https://www.cnblogs.com/ll409546297/p/17533143.html

相关文章

  • 初识html[230706]
    基础认知目标:认识网页组成、浏览器、web标准概念铺垫网页有哪些部分组成?文字图片视频音频超链接背后本质是什么?前端程序员、工程师的代码代码是通过什么软件转换成用户眼中的页面?通过浏览器“解析和渲染”常见:IE、Firefox、Chorme(辅助、自带调试功能多)、Saf......
  • 01_Avalonia+.NET 6 初识篇
    https://zhuanlan.zhihu.com/p/539490994 前言应信创(主要是国产麒麟系统)的要求,最近在看C/S架构跨平台的解决方案。由于之前的系统是使用WPF开发的,使用Avalonia跨平台改动的工作量会比较小。Avalonia是一个跨平台的.NETUI框架,支持Windows,Linux,MacOSX,IOS环境......
  • 【9.0】前端基础之JavaScript初识
    【9.0】前端基础之JavaScript初识js也是一门面向对象的编程语言,一切皆对象【一】变量命名规范变量名只能是数字/字母/下划线/$变量名命名规范(js中推荐驼峰式命名法)变量民不能用关键字作为变量名【二】JS代码的书写位置可以单独开设JS文件书写还可以直接在浏览......
  • Flink DataStream API
    Flink的DataSet和DataStream的API,并模拟了实时计算的场景。说好的流批一体呢现状Flink很重要的一个特点是“流批一体”,然而事实上Flink并没有完全做到所谓的“流批一体”,即编写一套代码,可以同时支持流式计算场景和批量计算的场景。目前截止1.10版本依然采用了DataS......
  • (一)kafka从入门到精通之初识kafka
    一、发布订阅系统在学习kafka之前,我们先来看看什么是发布订阅系统。概念数据的发送者不会直接把消息发送给接收者,这是发布与订阅消息系统的一个特点。发布者以某种方式对消息进行分类,接受者订阅它们,以便接受特定类型的消息。发布与订阅系统一般会有一个broker,也就是发布消息的......
  • Flink API的4个层次
    从纵向来看Flink中的API分为4个层次,从下而上,API层次越高,抽象程度越高,使用起来越方便,灵活性则会降低。1、核心底层API核心底层API提供了Flink的最底层的分布式计算构建块的操作API,包含了ProcessFunction、状态、时间和窗口等操作的API。ProcessFunction是Flink提供的最具表现力的底......
  • 初识标识符
    关键字abstractassertbooleanbreakbytecasecatchcharclassconstcontinuedefaultdodoubleelseenumextendsfinalfinallyfloatforgotoifimplementisimportinstanceofintinterfacelongnativenewpackageprivateprotectedpublicretur......
  • Flink 核心技术与实战
    你将获得熟练掌握FlinkSQL接口的原理与操作方法;深入理解FlinkDataStreamAPI的实践原理;全面剖析FlinkRuntime的设计与实现机制;完整构建一个实时推荐数据流系统。课程介绍目前大部分公司的大数据处理工作,使用的还是离线处理技术,但未来,流式计算必定会成为分布式计算......
  • 【1.0】数据库知识点小结数据库初识
    【1.0】数据库知识点小结数据库初识【一】存储数据的演变过程【1】文件存储随意地存放到一个文件中、数据格式也是千差万别的完全取决于个人【2】软件开发目录规范(1)概要限制了存储数据的具体位置建立专门的文件夹存储数据(2)软件开发目录规范binmain.pycon......
  • 【四】MySQL数据库之MySQL语句初识
    【四】MySQL数据库之MySQL语句初识有了mysql这个数据库软件就可以将程序员从对数据的管理中解脱出来专注于对程序逻辑的编写mysql服务端软件即mysqld帮我们管理好文件夹以及文件前提是作为使用者的我们需要下载mysql的客户端或者其他模块来连接到mysqld然后使用mys......