flink初步学习

下载

下载可以去官网下一个,下载完得到一个安装包
flink-1.7.2-bin-hadoop27-scala_2.11.tgz

安装

  1. 移到/usr/local下面
mv flink-1.7.2-bin-hadoop27-scala_2.11.tgz /usr/local
  1. 解压
tar -zxf flink-1.7.2-bin-hadoop27-scala_2.11.tgz
  1. 配置环境变量
vim /etc/profile
  1. 配置以下内容,FLINK_HOME配置成自己安装包解压出来的路径
export FLINK_HOME=/usr/local/{解压出来的那个文件夹}
export PATH=$FLINK_HOME/bin:$PATH
  1. 使配置环境生效
source /etc/profile
  1. 看看flink配置环境有没有生效
flink --version

启动

  1. 先来到bin目录下:cd /usr/local/flink-1.7.2/bin/
  2. 启动flink:./start-cluster.sh,关闭flink:./stop-cluster.sh
  3. 启动完可用jps看一下,有这三个就算是正常启动了
    在这里插入图片描述
  4. 可以通过8081端口进入页面,http://{你的ip}:8081
    在这里插入图片描述

运行测试

flink自带的example

  1. cd /usr/local/flink-1.7.2/examples/batch/,这个目录下就有一些flink自带的一些example
  2. 运行一下wordCount试试:flink run WordCount.jar,执行完后可以在后台看到有一条执行完成的记录,在shell上也有wordCount的日志
    在这里插入图片描述
    在这里插入图片描述

自己写个流处理wordCount

  1. 先建一个maven工程
  2. 引入flink的依赖
<dependencies>
    <dependency>
        <groupId>org.apache.flink</groupId>
        <artifactId>flink-java</artifactId>
        <version>1.6.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.flink</groupId>
        <artifactId>flink-streaming-java_2.11</artifactId>
        <version>1.6.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.flink</groupId>
        <artifactId>flink-clients_2.11</artifactId>
        <version>1.6.2</version>
    </dependency>
</dependencies>
  1. 写一个流处理的WordCount
/**
 * @author zhuangcanrun
 * @Date 2021/06/07/11:42
 * @description
 **/

public class WordCountStream {
    public static void main(String[] args) throws Exception {

        // 获得执行环境
        final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();

        // 从netcat获得数据,ip和端口看个人
        DataStream<String> text = env.socketTextStream("localhost", 60000, "\n");

        // parse the data, group it, window it, and aggregate the counts
        SingleOutputStreamOperator<Tuple2<String, Integer>> sum = text
                .flatMap(new MyFlatMapper())
                .keyBy(0)
                .sum(1);

        // print the results with a single thread, rather than in parallel
        sum.print().setParallelism(1);

        env.execute("Socket Window WordCount");
    }

    //将文本内容按空格,将单词分隔出来,然后按照(word,1)的形式返回
    public static class MyFlatMapper implements FlatMapFunction<String, Tuple2<String,Integer>> {
        @Override
        public void flatMap(String s, Collector<Tuple2<String, Integer>> collector){
            String[] words = s.split(" ");
            for (String word : words) {
                collector.collect(new Tuple2<String,Integer>(word, 1));
            }
        }
    }
}
  1. 把工程打包成一个jar包,放到服务器里面去
  2. 启动自己写的jar包:flink run -c com.rr.WordCountStream word-count-stream.jar,这里-c后面指定对应的java类,不用加.java后缀
  3. 另开一个shell,打开一个netcat:nc -lk 60000,没有的先yum install netcat
  4. 可以在netcat这边试着输入一些单词
  5. 可以在flink后台那里看到一些结果
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值