Flink学习

一、Flink部署

1.集群角色:hadoop102:JobManager; hadoop103:TaskManager; hadoop104:TaskManager

2.集群启动

$ bin/start-cluster.sh

3.查看flink状态:jps

4.停止集群

$ bin/stop-cluster.sh

5.测试端口可用

nc -lk 7777

6.命令行执行

./bin/flink run -m hadoop102:8081 -c 类路径 -p 并行度 执行的jar包

7.命令行取消任务

./bin/flink cancel 作业ID

8.部署模式:会话模式、单作业模式、应用模式

9.Yarn部署

(1)配置环境变量
$ sudo vim /etc/profile.d/my_env.sh
HADOOP_HOME=/opt/module/hadoop-2.7.5
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin43
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export HADOOP_CLASSPATH=`hadoop classpath
(2)关闭flink集群,启动hadoop集群
$ bin/yarn-session.sh -nm test
可用参数解读:
⚫ -d:分离模式,如果你不想让 Flink YARN 客户端一直前台运行,可以使用这个参数,44
即使关掉当前对话窗口, YARN session 也可以后台运行。
⚫ -jm(--jobManagerMemory):配置 JobManager 所需内存,默认单位 MB。
⚫ -nm(--name):配置在 YARN UI 界面上显示的任务名。
⚫ -qu(--queue):指定 YARN 队列名。
⚫ -tm(--taskManager):配置每个 TaskManager 所使用内存。
(4)提交作业:
执行以下命令将该任务提交到已经开启的 Yarn-Session 中运行。
$ bin/flink run -c com.atguigu.wc.StreamWordCount FlinkTutorial-1.0-SNAPSHOT.jar
(5)单作业模式
提交作业
$ bin/flink run -d -t yarn-per-job -c com.atguigu.wc.StreamWordCount FlinkTutorial-1.0-SNAPSHOT.jar
查看和取消作业
$ ./bin/flink list -t yarn-per-job -Dyarn.application.id=application_XXXX_YY
$ ./bin/flink cancel -t yarn-per-job -Dyarn.application.id=application_XXXX_YY<jobId>
(6)应用模式
提交作业
$ bin/flink run-application -t yarn-application -c com.atguigu.wc.StreamWordCount FlinkTutorial-1.0-SNAPSHOT.jar
查看和取消作业
$ ./bin/flink list -t yarn-application -Dyarn.application.id=application_XXXX_YY
$ ./bin/flink cancel -t yarn-application -Dyarn.application.id=application_XXXX_YY <jobId>

二、DataStream API

1.启动kafka:

./bin/zookeeper-server-start.sh -daemon ./config/zookeeper.properties
./bin/kafka-server-start.sh -daemon ./config/server.properties

2.从kafka中读取数据:

Properties properties = new Properties();
properties.setProperty("bootstrap.servers", "hadoop102:9092");
DataStreamSource<String> kafkaStream = env.addSource(new FlinkKafkaConsumer<String>("clicks", new SimpleStringSchema(), properties))

3.用flink进行转换处理

SingleOutputStreamOperator<String> result = kafkaStream.map(new MapFunction<String,String>(){
        @Override
        public String map(String value) throws Exception {
            String[] fileds = value.split(",");
            return new Event(fileds[0].trim(),fileds[1].trim(),Long.valueOf(fileds[2].trim())).toString();
        }
    });

4.结果数据写入kafka:

result.addSink(new FlinkKafkaProducer<String>("hadoop102:9092","events",new SimpleStringSchema()));

5.在hadoop102上开两个终端

(1)一个作为生产者:
./bin/kafka-console-producer.sh --broker-list localhost:9092 --topic clicks
(2)一个作为消费者:
./bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic events

posted on 2022-09-07 13:10  L先森请坐下  阅读(28)  评论(0编辑  收藏  举报

导航