第3章 Flink部署

上篇:第2章 Flink快速上手


1、standalone模式

(1)上传发flink安装包到Linux环境中
在这里插入图片描述
(2)解压文件 flink-1.7.0-bin-hadoop27-scala_2.11.tgz

[root@hadoop105 hadoop]# tar -zxvf flink-1.7.0-bin-hadoop27-scala_2.11.tgz -C module/

(3)修改配置文件

[root@hadoop105 conf]# vim flink-conf.yaml 

jobmanager.rpc.address: hadoop105

在这里插入图片描述
修改slaves

[root@hadoop105 conf]# vim slaves 

hadoop106
hadoop107

(4)分发给另外两台机器

[root@hadoop105 module]# scp -r flink-1.7.0/ hadoop106:/usr/local/hadoop/module/

[root@hadoop105 module]# scp -r flink-1.7.0/ hadoop107:/usr/local/hadoop/module/

(5)启动

//先启动集群
[root@hadoop105 bin]# ./start-cluster.sh 

//一个主节点,两个从节点
Starting cluster.  
Starting standalonesession daemon on host hadoop105.
Starting taskexecutor daemon on host hadoop106.
Starting taskexecutor daemon on host hadoop107.

(5)访问
http://hadoop105:8081

在这里插入图片描述


2、代码实操

package com.study.flink1205

import org.apache.flink.api.java.utils.ParameterTool
import org.apache.flink.api.scala.{AggregateDataSet, DataSet, ExecutionEnvironment}
import org.apache.flink.api.scala._
//离线
object DateSetWcApp {
  def main(args: Array[String]): Unit = {
    //1、en  环境  2、source:数据源  3、transform  4、sink
    //使用这种方式比较灵活
    val tool: ParameterTool = ParameterTool.fromArgs(args)
    val inputPath: String = tool.get("input")
    val outputPath: String = tool.get("output")



    val env: ExecutionEnvironment = ExecutionEnvironment.getExecutionEnvironment

  /*  //这种方式:指定的目录写死了
    val txtDataSet: DataSet[String] = env.readTextFile("D:\\tmp\\hello.txt")*/

    val txtDataSet: DataSet[String] = env.readTextFile("inputPath")

    val aggSet: AggregateDataSet[(String, Int)] = txtDataSet.flatMap(_.split(" ")).map((_, 1)).groupBy(0).sum(1)

    aggSet.writeAsCsv(outputPath)

    env.execute()
  }
}

在这里插入图片描述
在这里插入图片描述

//编译操作
--input d:\\tmp\\hello.txt --output d:\\tmp\\output.csv

启动程序,控制台打印信息
在这里插入图片描述
自己的d盘文件额tmp文件就会生成文件:
在这里插入图片描述
不分区的话,设置代码参数即可:

 //分区
    //aggSet.writeAsCsv(outputPath)

    //不分区
    aggSet.writeAsCsv(outputPath).setParallelism(1)

自己的d盘文件额tmp文件就会生成文件:
在这里插入图片描述
文件夹里面的内容是:
在这里插入图片描述
接下来,我们对代码进行打包
在这里插入图片描述
打包ok,发现生成两个jar包(大包与小包),拷贝放到Linxu环境
在这里插入图片描述
尝试,使用Flink工具上传文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

接下来,就执行操作

注意的是:
在执行之前需要对另外两台机器分发一下(由于读取数据是从本地磁盘读取,实际任务会被分发到taskmanage的机器中,所以要把目标文件分发。

[root@hadoop105 flink]# scp -r input.txt hadoop106:/opt/flink/
[root@hadoop105 flink]# scp -r input.txt hadoop107:/opt/flink/

执行

在这里插入图片描述
执行ok
在这里插入图片描述
在虚拟机查看,只会一台机器有数据

[root@hadoop106 flink]# ll
total 8
-rw-r--r--. 1 root root 77 Feb 22 14:19 input.txt
-rw-r--r--. 1 root root 97 Feb 22 14:21 output2020_02_22.csv
[root@hadoop106 flink]# 

//查看数据
[root@hadoop106 flink]# cat output2020_02_22.csv 
China!,1
China,Flink?,1
Flink!,1
Hello,1
I,1
Love,1
Really?,1
World,1
Yes,I,1
veay,1

另一种方式执行程序(命令行方式)

[root@hadoop105 bin]#./flink run -c com.study.flink1205.DateSetWcApp  /opt/flink/flink1205-1.0-SNAPSHOT.jar  --input /opt/flink/input.txt --output /opt/flink/output0212.csv

Starting execution of program
Program execution finished
Job with JobID 3dd85951167ff0d5bf49e0e88bb08bdc has finished.
Job Runtime: 11553 ms
[root@hadoop105 bin]# 

发现,只有hadoop107机器有数据

到目标文件夹中查看计算结果
注意:计算结果根据会保存到taskmanage的机器下,不会再jobmanage下。

[root@hadoop107 flink]# ll
total 8
-rw-r--r--. 1 root root 77 Feb 22 14:20 input.txt
-rw-r--r--. 1 root root 97 Feb 22 14:38 output0212.csv

//查看数据
[root@hadoop107 flink]# cat output0212.csv 
China!,1
China,Flink?,1
Flink!,1
Hello,1
I,1
Love,1
Really?,1
World,1
Yes,I,1
veay,1

在webui控制台查看计算过程
在这里插入图片描述

小结:
执行有两种方式:工具执行与命令行执行


2、yarn模式

(1)启动hadoop集群

[root@hadoop105 bin]# start-all.sh

(2)启动yarn-session

[root@hadoop105 bin]# pwd
/usr/local/hadoop/module/flink-1.7.0/bin
[root@hadoop105 bin]# ./yarn-session.sh -n 2 -s 2 -jm 1024 -tm 1024 -nm test -d

其中:

-n(–container):TaskManager的数量。
-s(–slots): 每个TaskManager的slot数量,默认一个slot一个core,默认每个taskmanager的slot的个数为1,有时可以多一些taskmanager,做冗余。
-jm:JobManager的内存(单位MB)
-tm:每个taskmanager的内存(单位MB)。
-nm:yarn 的appName(现在yarn的ui上的名字)。
-d:后台执行。

执行过程出错
org.apache.flink.client.deployment.ClusterDeploymentException: Couldn’t deploy Yarn session cluster

解决方案:flink启动yarn-session命令报错的解决方案

(3)执行任务

[root@hadoop105 bin]# ./flink run  -m yarn-cluster -c com.study.flink1205.DateSetWcApp  /opt/flink/flink1205-1.0-SNAPSHOT.jar  --input /opt/flink/input.txt --output /opt/flink/output2020_21.csv

在这里插入图片描述
在hadoop106查看,有数据了

[root@hadoop106 flink]# ll
total 12
-rw-r--r--. 1 root root 77 Feb 22 14:19 input.txt
-rw-r--r--. 1 root root 97 Feb 22 14:21 output2020_02_22.csv
-rw-r--r--. 1 root root 97 Feb 22 15:42 output2020_21.csv
[root@hadoop106 flink]# 

(4)去yarn控制台查看任务状态
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
hadoop的8088跳转到flink页面
在这里插入图片描述
在这里插入图片描述

发布了216 篇原创文章 · 获赞 20 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_39868387/article/details/104435275