Flink系列---Flink流处理WordCount

FlinkStream的WordCount案例

这篇直接贴上案例,关于理论方面,我会选文章专门将Flink的运行流程、架构、原理、流处理、批处理的理论。

代码结构类型:maven的module

该处是DTFlinkStreaming

项目结构图

Flink系列---Flink流处理WordCount_第1张图片

pom文件




    
    
        DTFlink
        com.kevin
        1.0-SNAPSHOT
    
    DTFlinkStreaming

    4.0.0

    

        
            org.apache.flink
            flink-streaming-java_2.11
            ${flink.version}
        

        
            org.apache.flink
            flink-streaming-scala_2.11
            ${flink.version}
        

    

WordCount

package com.kevin.scala

import org.apache.flink.api.java.utils.ParameterTool
import org.apache.flink.streaming.api.scala.{DataStream, StreamExecutionEnvironment}

/**
  * 流处理的wordcount
  * @author caonanqing on createDate 2020/3/12
  */
object WordCount {

  def main(args: Array[String]): Unit = {

    // 从命令行中获取参数
    val tool:ParameterTool = ParameterTool.fromArgs(args)
    val host:String = tool.get("host")
    val port:Int = tool.get("port").toInt

    // 创建流处理环境
    val env:StreamExecutionEnvironment = StreamExecutionEnvironment.getExecutionEnvironment
    // 接收socket文本流
    val textDstream:DataStream[String] = env.socketTextStream(host,port)
    // flatMap和Map需要引用隐式转换
    import org.apache.flink.api.scala._
    // 处理:分组并且sum聚合
    val dStream:DataStream[(String,Int)] = textDstream.flatMap(_.split(" ")).filter(_.nonEmpty).map((_,1)).keyBy(0).sum(1)
    // 打印输出
    dStream.print()
    // 启动
    env.execute()

  }

}

打包jar

mvn clean package

Flink系列---Flink流处理WordCount_第2张图片

Flink系列---Flink流处理WordCount_第3张图片

将jar复制到liunx

启动Zookeeper、Hadoop、Flink

Flink系列---Flink流处理WordCount_第4张图片

贴上启动脚本

#! /bin/bash
echo "------正在启动集群------"
echo "------正在启动Zookeeper------"
ssh grid@Master '/home/grid/zookeeper/bin/zkServer.sh start'
ssh grid@Slave1 '/home/grid/zookeeper/bin/zkServer.sh start'
ssh grid@Slave2 '/home/grid/zookeeper/bin/zkServer.sh start'

echo "------正在启动Hadoop-----"
'/home/grid/hadoop/sbin/start-all.sh'

echo "------正在启动Flink------"
'/home/grid/flink/bin/start-cluster.sh'

Flink系列---Flink流处理WordCount_第5张图片

先启动监听

nc -l 7000

启动Flink打包的jar

./flink run -c com.kevin.scala.WordCount /home/grid/words/DTFlinkStreaming-1.0-SNAPSHOT-jar-with-dependencies.jar --host master --port 7000

在监听处输入数据

Flink系列---Flink流处理WordCount_第6张图片

启动Flink Web UI界面查看结果

地址:Master:8082

注:一般是8081,但是我部署的时候端口用的是8082

Flink系列---Flink流处理WordCount_第7张图片

来到TaskManagers找到在那个节点运行该任务

Flink系列---Flink流处理WordCount_第8张图片

查看Stdout发现有结果输出

Flink系列---Flink流处理WordCount_第9张图片

到此,Flink流WordCount案例完成

 

GitHub源码地址:https://github.com/kevin961212/DTFlink/tree/master/DTFlinkStreaming

你可能感兴趣的:(大数据,flink,flink)