Flink入门——基础知识,Linux安装,Docker安装

这篇具有很好参考价值的文章主要介绍了Flink入门——基础知识,Linux安装,Docker安装。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

在linux部署Flink需要先安装Java的JDK。

Flink的安装包,需要到官网先下载。

官网下载地址:https://flink.apache.org/downloads/
各个版本下载地址:https://dlcdn.apache.org/flink/

Flink相关网站如下:

flink官网学习地址:https://nightlies.apache.org/flink/flink-docs-stable/docs/try-flink/local_installation/
flinkCDC,cdc不是flink提供的,是ververica提供的,
参考地址:MySQL CDC 连接器 — CDC Connectors for Apache Flink® documentation (ververica.github.io)
https://ververica.github.io/flink-cdc-connectors/master/content/connectors/mysql-cdc(ZH).html
https://github.com/ververica/flink-cdc-connectors

Flink还可以做机器学习,常用机器学习KMeans,LinearRegression,学习使用地址如下:

https://nightlies.apache.org/flink/flink-ml-docs-master/docs/operators/clustering/kmeans/
https://nightlies.apache.org/flink/flink-ml-docs-master/docs/operators/regression/linearregression/
然后使用final shell上传到 soft/resources下。

Flink安装

先下载安装包。

然后上传到 soft/resources下。

然后进入soft/resources,执行命令解压

tar -zxvf flink-1.18.0-bin-scala_2.12.tgz -C /soft/flink/

然后进入flink文件夹

# cd /soft/flink/flink-1.18.0/

然后进入conf。

cd conf

然后修改配置文件里的localhost都改为0.0.0.0

 vi flink-conf.yaml

然后执行命令启动

bin/start-cluster.sh 

然后放行8081,也可以直接关闭防火墙。

输入以下命令以停止防火墙服务:

sudo systemctl stop ufw.service

输入以下命令以禁用防火墙服务:

sudo systemctl disable ufw.service

输入以下命令以确认防火墙服务已关闭:

sudo ufw status

然后jps查看进程

jps

然后访问10.1.0.145:8081


flink创建项目

开发flink可以创建maven项目,flink提供了一个快速创建的jar包——flink-quickstart-java。
依赖如下:

<!-- https://mvnrepository.com/artifact/org.apache.flink/flink-quickstart-java -->
<dependency>
    <groupId>org.apache.flink</groupId>
    <artifactId>flink-quickstart-java</artifactId>
    <version>1.18.0</version>
</dependency>

Flink CDC

CDC我们都知道是 Change Data Capture。本来这个是数据库提供的,比如日志记录等等。
在Flink里也有CDC的功能,本质上就是把数据库的CDC给捕获了。
Flink连接Mysql的CDC就是连接Mysql的Binlog。
flinkCDC,cdc不是flink提供的,是ververica提供的。
参考地址:MySQL CDC 连接器 — CDC Connectors for Apache Flink® documentation (ververica.github.io)

Flink如果出现classloader异常,可以考虑修改配置文件——flink-conf.yaml,来应对classloader异常
classloader.check-leaked-classloader: false
这个我没测试过,这里做个记录

Flink——Docker实战

使用docker search命令,查询flink镜像如下:

Flink入门——基础知识,Linux安装,Docker安装

Flink的镜像,可以在https://hub-stage.docker.com/_/java/tags网站上找到。

可以直接拉取Flink镜像,也可以自己下载Flink安装。

下面使用java的jdk镜像,然后导入Flink压缩包的模式安装。

拉取java-jdk镜像命令如下:

docker pull java:openjdk-8u111-jre

openjdk:8-jdk-alpinejava:openjdk-8u111-jre都是Java的安装包,但它们的来源和用途略有不同。
openjdk:8-jdk-alpine是基于Alpine Linux构建的轻量级JDK版本,它包含了Java运行环境所需的基本组件,体积更小巧,适合于资源有限的环境。你可以使用它在Docker容器中运行Java应用程序。
java:openjdk-8u111-jre则是OpenJDK发行的标准JRE(Java Runtime Environment),它包含Java虚拟机(JVM)和Java应用程序所需的类库。它是一个独立的安装包,可以在各种操作系统上安装和使用。

综上所述,你可以根据具体的应用场景和需求来选择使用哪个安装包。如果你需要在Docker容器中运行Java应用程序,可以选择openjdk:8-jdk-alpine;如果你需要在本地计算机上安装和使用Java,可以选择java:openjdk-8u111-jre

拉取成功如下:

Flink入门——基础知识,Linux安装,Docker安装

然后执行run命令,使用镜像生成一个容器。

docker run -it -d --name flink-server -p 8082:8081  java:openjdk-8u111-jre  /bin/bash
  1. docker run: 这是运行 Docker 容器的命令。
  2. -it: 这是选项,其中-i表示以交互模式运行容器,-t表示为容器分配一个伪终端。
  3. -d: 这是选项,表示以守护进程模式运行容器,即在后台运行容器。
  4. --name flink-server: 这是为容器指定一个名称,这里将容器命名为flink-server
  5. -p 8082:8081: 这是将容器的端口 8081 映射到主机的端口 8082。
  6. java:openjdk-8u111-jre: 这是指定要使用的基础镜像,这里使用的是 OpenJDK 8 的 JRE(Java Runtime Environment)。
  7. /bin/bash: 这是指定在容器启动后执行的命令,这里执行的是/bin/bash,即启动一个 Bash 终端。

运行成功如下图:

Flink入门——基础知识,Linux安装,Docker安装

运行后可以使用下面命令增加端口映射(未测试)

docker run -p 8082:8081 flink-server

查看全部开放的端口

netstat -untlp

使用docker ps可以查看已经运行的容器,如下图:

Flink入门——基础知识,Linux安装,Docker安装

执行下面命令,可以进入容器内部。

docker exec -it <container-id> /bin/bash
docker exec -it 221aed7411ad3654a43d157ea4bb75ce20cf065fc34de0b5026e404418509158 /bin/bash 

如下图:

Flink入门——基础知识,Linux安装,Docker安装

输入java -version可以查看已安装的java版本,如下图:

Flink入门——基础知识,Linux安装,Docker安装

然后创建一个resources的文件夹,一个soft文件夹,一个soft/flink文件夹。

mkdir resources
mkdir soft
mkdir soft/flink

然后退出容器

exit

安装Flink

然后执行docker cp 复制系统中的文件到指定的容器下,代码如下:

docker cp /soft/resources/flink-1.17.1-bin-scala_2.12.tgz  flink-server:/resources/flink-1.17.1-bin-scala_2.12.tgz

复制成功如下:

Flink入门——基础知识,Linux安装,Docker安装

然后重新进入容器,查看 ls resources,如下图:

Flink入门——基础知识,Linux安装,Docker安装

然后进入cd resources文件夹,开始解压flink。这里使用1.17.1,因为当时1.18还没有对应的cdc包。

 tar -zxvf flink-1.17.1-bin-scala_2.12.tgz -C /soft/flink/

然后进入flink下的flink-1.17.1文件夹

 cd /soft/flink/flink-1.17.1

然后进入conf。

cd conf

然后修改配置文件里的localhost都改为0.0.0.0

 vi flink-conf.yaml

但容器里通常没有vi命令,因为没有安装vi工具,因此需要安装vi工具。

在容器里执行下面命令

 apt-get update
 apt-get install vim

如果安装提示E: Unable to locate package vim ,是因为下载地址是海外地址。

修改为国内镜像地址即可。

修改方案一:(亲测这个163的地址不好用)

mv /etc/apt/sources.list /etc/apt/sources.list.bak
 
echo "deb http://mirrors.163.com/debian/ jessie main non-free contrib" >/etc/apt/sources.list
 
echo "deb http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib" >>/etc/apt/sources.list
echo "deb-src http://mirrors.163.com/debian/ jessie main non-free contrib" >>/etc/apt/sources.list
echo "deb-src http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib" >>/etc/apt/sources.list

修改方案二:(亲测,替换镜像后,apt-get update虽然也有错误,但vim安装成功了)

mv /etc/apt/sources.list /etc/apt/sources.list.bak

echo  "deb http://mirrors.tuna.tsinghua.edu.cn/debian/ buster main contrib non-free" > /etc/apt/sources.list 

echo  "deb http://mirrors.tuna.tsinghua.edu.cn/debian/ buster-updates main contrib non-free" >>/etc/apt/sources.list 

echo  "deb http://mirrors.tuna.tsinghua.edu.cn/debian/ buster-backports main contrib non-free" >>/etc/apt/sources.list

echo  "deb http://mirrors.tuna.tsinghua.edu.cn/debian-security buster/updates main contrib non-free">>/etc/apt/sources.list 

然后重新执行 vi flink-conf.yaml,修改配置文件里的localhost都改为0.0.0.0。

numberOfTaskSlots和parallelism

配置flink-conf.yaml下的numberOfTaskSlots和parallelism。

numberOfTaskSlots是指任务管理器的并发执行能力,而Parallelism是指任务管理器实际使用的并发能力。numberOfTaskSlots可以通过参数taskmanager.numberOfTaskSlots进行配置,而Parallelism可以通过参数Parallelism.default进行配置。

taskmanager.numberOfTaskSlots定义的是【每个】任务管理器可使用的槽的数量,即如果有3个任务管理器,则配置taskmanager.numberOfTaskSlots为3时,等于我们定义了9个槽。通常,每个 TaskManager 的 numberOfTaskSlots 等于该机器上的 CPU 核数。

Parallelism.default是配置并发最大数量,如果配置为16,则我们开发的flink-job时,配置的并行度也需要小于16,否则安装到flink服务器时,将启动失败。如果服务器上上传多个job,那多个job的并发数量之和也要小于16,否则最后一个将启动失败。

开发时配置并行度代码:

env.setParallelism(1);//设置输入流并行度

配置flink-conf.yaml 的numberOfTaskSlots和parallelism:

# The number of task slots that each TaskManager offers. Each slot runs one parallel pipeline.
taskmanager.numberOfTaskSlots: 16
# The parallelism used for programs that did not specify and other parallelism.
parallelism.default: 16

当CPU为16核时,推荐配置如下:

taskmanager.numberOfTaskSlots: 16
parallelism.default: 16
parallelism.default: 32
parallelism.default: 64
parallelism.default: 128

然后 cd ../返回上一级,然后执行命令启动

bin/start-cluster.sh 

Flink入门——基础知识,Linux安装,Docker安装

然后访问10.1.0.100:8082(因为前面已经关闭了防火墙,所以这里可以直接访问,不然要开发固定端口)

到此,Flink的docker就配置完了。

其他Dock命令

which docker #which docker` 命令用于查找 `docker命令所在的路径。
docker images #查看当前服务器中docker 镜像列表
docker ps #查看正则运行的容器
docker ps -a #查看已停止的容器
netstat -untlp #需要查看端口占用 情况
kill -9 #进程号 杀进程

Docker自定义镜像

镜像创建好后,我们可以将镜像保存下来。
保存镜像命令如下:

docker commit flink-server flink-server-image;
docker save flink-server-image -o /soft/resources/flink-server-20240104.tar;

如下图:

Flink入门——基础知识,Linux安装,Docker安装

在执行了docker commit后,我们就可以在本地镜像里找到我们刚刚提交的镜像了,输入docker images,就可以找到flink-server-image了,如下图:

Flink入门——基础知识,Linux安装,Docker安装

然后我们使用本地镜像flink-server-image再创建一个容器,代码如下:

docker run -it -d --name flink-server-pre -p 8083:8081  flink-server-image:latest  /bin/bash

执行成功如下图:

Flink入门——基础知识,Linux安装,Docker安装

然后进入容器

docker exec -it flink-server-pre /bin/bash

然后cd到/soft/flink/flink-1.17.1,使用ls查看文件信息,如下:

cd /soft/flink/flink-1.17.1

Flink入门——基础知识,Linux安装,Docker安装

然后执行一下启动flink,如下:

bin/start-cluster.sh 

Flink入门——基础知识,Linux安装,Docker安装

然后访问10.1.0.100:8083,就可以访问Flink的Web管理页面了。

Flink入门——基础知识,Linux安装,Docker安装

到此Docker自定义镜像结束。


注:此文章为原创,任何形式的转载都请联系作者获得授权并注明出处!
Flink入门——基础知识,Linux安装,Docker安装

若您觉得这篇文章还不错,请点击下方的【推荐】,非常感谢!

https://www.cnblogs.com/kiba/p/18027613文章来源地址https://www.toymoban.com/news/detail-836687.html

到了这里,关于Flink入门——基础知识,Linux安装,Docker安装的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux系统知识1—Linux命令基础格式,什么是命令,命令行,ls命令入门,ls命令的参数和选项,-a,-l -h选项的使用及组合使用

    .命令行:即 Linux 终端( Terminal ),是一种命令提示符页面。以纯\\\"字符\\\"的形式操作系统,可以使用各种字符化命令对系统发出操作指令。 .命令:即 Linux 程序。一个命令就是一个 Linux 的程序。命令没有图形化页面,可以在命令行(终端中)提供字符化的反馈。 无论

    2024年02月16日
    浏览(44)
  • Opengl入门基础-基础知识

    通过之前的教程,我们已经拥有了开发环境,但是在真正开发程序之前,我们首先了解下Opengl的基本概念。 Opengl是什么? 通常网上会说Opengl是一种规范,一种接口,但是这种说法有点抽象,我们不妨先看看下面这个简单的gl流程 代码中可能有人对GLFW_OPENGL_PROFILE这类参数感到

    2024年02月11日
    浏览(47)
  • 计算机基础知识(基础入门小白专属)

    ♥️ 作者:小刘在这里 ♥️ 每天分享云计算网络运维课堂笔记,疫情之下,你我素未谋面,但你一定要平平安安,一  起努力,共赴美好人生! ♥️ 夕阳下,是最美的,绽放,愿所有的美好,再疫情结束后如约而至。 目录 计算机的发展史 计算机的硬件组成 计算机的分类

    2024年02月08日
    浏览(57)
  • Docker的基础知识

    操作 命令(全) 命令(简) 容器的创建 docker container run docker run 容器的列出(up) docker container ls docker ps 容器的列出(up和exit) docker container ls -a docker ps -a 容器的停止 docker container stop docker stop 容器的删除 docker container rm docker rm

    2024年02月02日
    浏览(39)
  • QT入门基础知识

    什么是QT QT是一个跨平台的C++图像用户界面应用程序框架 QT在1991年由奇趣科技开发 QT的优点 跨平台,几乎支持所有平台 接口简单,容易上手 一定程度上简化了内存回收机制 有很好的社区氛围 可以进行嵌入式开发 QT注意事项 命名规范 类名 首字母大写,单词和单词之间首字母

    2024年02月10日
    浏览(58)
  • Java入门基础知识

    JDK是Java工具开发包,包含了JVM(程序运行环境),核心类库(直接应用即可),开发工具(Javac,java,jdb,jhat…) JRE是Java运行环境,包含了JVM,核心类库,运行工具 JDK包含了JRE,JRE包含了jvm 全部小写(有特定含义的英文字符) class 表示一个类 整数类型 小数类型 字符串类型 :只用\\\"双引

    2024年02月09日
    浏览(73)
  • 电脑入门基础知识

    答:一般情况下,电脑键盘只有一个。但是,也有一些特殊的情况,例如游戏玩家可能会使用额外的游戏键盘,或者一些专业人士可能会使用多个键盘来提高工作效率。但是在大多数情况下,一台电脑通常只会连接一个键盘。 答:外接键盘和笔记本键盘的按键数可能会有所不

    2024年02月04日
    浏览(64)
  • YOLOv5基础知识入门(2)— YOLOv5核心基础知识讲解

    前言: Hello大家好,我是小哥谈。 YOLOV4出现之后不久,YOLOv5横空出世。YOLOv5在YOLOv4算法的基础上做了进一步的改进,使检测性能得到更进一步的提升。YOLOv5算法作为目前工业界使用的最普遍的检测算法,存在着很多可以学习的地方。本文将对YOLOv5检测算法的核心基础知识进行

    2024年02月14日
    浏览(52)
  • Docker学习路线4:Docker基础知识

    Docker是一个平台,简化了在轻量、可移植的容器中构建、打包和部署应用程序的过程。在本节中,我们将介绍Docker的基础知识、其组件以及您需要开始使用的关键命令。 容器是一个轻量级、独立的可执行软件包,包含运行应用程序所需的所有依赖项(库、二进制文件和配置文

    2024年02月15日
    浏览(37)
  • 计算机基础知识(基础入门小白专属)二

      ♥️ 作者:小刘在这里 ♥️ 每天分享云计算网络运维课堂笔记,疫情之下,你我素未谋面,但你一定要平平安安,一  起努力,共赴美好人生! ♥️ 夕阳下,是最美的,绽放,愿所有的美好,再疫情结束后如约而至。 目录 vmware workstation  的用法 扩展部分

    2024年02月02日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包