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

(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

二、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 kafkaStream = env.addSource(new FlinkKafkaConsumer("clicks", new SimpleStringSchema(), properties))

3.用flink进行转换处理

SingleOutputStreamOperator 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("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先森请坐下  阅读(80)  评论(0)    收藏  举报

导航