ToB企服应用市场:ToB评测及商务社交产业平台

标题: 使用Docker快速摆设Flink分布式集群 [打印本页]

作者: 花瓣小跑    时间: 2024-7-18 13:29
标题: 使用Docker快速摆设Flink分布式集群
前言

大家是否记得自己是怎么开始学习大数据的内容呢,估计关注我得同学会发现前面有点连续有点关于Docker的小烂文,是由于使用Docker可以最快的速率让我们拥有一个学习的情况。大数据的东西都逃不外搭建情况测试跑通这么一个过程,我自己也是过来人,尤其是刚刚打仗比力新的东西的时候受制于当前的网络,当前的设置一系列的问题,导致大量从入门到放弃的情况非常多,今天我通过一些实际的例子,让大家感受一下这种便利性。
误区

首先一定要改正一个误区,尤其是这种技能类型的,不是说必要掌握100%才去使用,但凡相识了一丢丢,你就应该去做了,很多人一上来就干到很深的底层原理,那样学习自己的成本就很高了,没必要。另外一方面来说试错这个事情自己就是学习的过程。更紧张的一点,一定是你自己亲自动手跑通的才算,由于参考学习视频学的时候,你发现老师操纵的时候非常顺利,由于有些问题老师处理过了,有的问题在老师的情况上面就没有。
目标

我这里是两个小案例,通过这种案例让大家感受到docker作为工具给我们带来便利,一是自己编写的java使用docker跑通,第二个是使用docker快速得到flink的情况。 条件,大家机器内里有docker情况,注意了docker情况在mac和windows都是有图形安装的,以是和安装QQ这种完满是一样的,官网在这里,点击,下载安装包安装就行,不用很复杂的设置。我知道这内里在很多教学资料告诉怎么去linux上面安装,那是深入学习的时候才会到linux上面去,这个地方千万别花太多时间折腾了。

跑通一个自己的Java步伐

首先当然是构建一个maven工程,大家养成习惯为了让背面的人工作顺利举行,前面的工作做好,我这里提前准备一下maven仓库的设置,内容如下
  1. cat /Users/zhuxuemin/.m2/settings_aliyun.xml
复制代码
这内里关键的内容其实是阿里云仓库设置,这样背面会顺利一些
  1. <mirror>
  2.             <id>alimaven</id>
  3.             <name>aliyun maven</name>
  4.             <url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
  5.             <mirrorOf>central</mirrorOf>
  6. </mirror>
复制代码
构建工程了,我是比力喜欢先下令行构建出来,再导入idea,以是下面的下令顺利会和前面工作有关系
  1. mvn --settings /Users/zhuxuemin/.m2/settings_aliyun.xml archetype:generate -DgroupId=net.blog.csdn -DartifactId=docker-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
复制代码
构建出来导入idea,就是一个简单的maven工程,帮我们输出一下。
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/ef0af76c7bc144eca352d18f5112208b.png

在根目录下面新建Dockerfile文件,内里放入内容,如下:
  1. FROM williamyeh/java8
  2. COPY target/docker-app-1.0-SNAPSHOT.jar /usr/local/docker-app-1.0-SNAPSHOT.jar
  3. CMD ["java", "-cp", "/usr/local/docker-app-1.0-SNAPSHOT.jar","net.blog.csdn.App"]
复制代码
构建镜像
  1. docker build . -t docker-java-app
复制代码
显示如下:
  1. Sending build context to Docker daemon  38.91kB
  2. Step 1/3 : FROM williamyeh/java8
  3. ---> 00bc163fa009
  4. Step 2/3 : COPY target/docker-app-1.0-SNAPSHOT.jar /usr/local/docker-app-1.0-SNAPSHOT.jar
  5. ---> 4738e15804e9
  6. Step 3/3 : CMD ["java", "-jar", "/usr/local/docker-app-1.0-SNAPSHOT.jar"]
  7. ---> Running in d9a68086b6ce
  8. Removing intermediate container d9a68086b6ce
  9. ---> 519ece8e6b16
  10. Successfully built 519ece8e6b16
  11. Successfully tagged docker-java-app:latest
复制代码
运行如下,至此我们的步伐顺利在docker情况下面运行了
  1. docker run docker-java-app
  2. Hello World!
复制代码
接下来,学会学习,假如就是这样子copy过去,十有八九干不乐成,究竟上这个套路百度是可以搜刮到的。现在都是大模型交互的方式,以是大家要学会去问了。

好了,这内里情况就是,下面myjavaapp还好明白,大家改成自己的工程名字就行,必要说明的情况是from这个下令
  1. FROM openjdk:8-jdk-alpine
复制代码
这里是这样的,我们运行java不是要一个java情况嘛,这内里按照docker的术语来说就是基于之前的镜像去走叠加,相当于他有一个床架子,我们可以往上面加我们喜欢的被子,这内里就是要看自己的仓库有哪些基础情况
  1. docker search jdk
复制代码
结果如下,这内里可以看到一堆相干的,选择一个就行,仔细的同学可以看到,并没有我上面代码上面使用到的williamyeh/java8,这个是由于我之前使用的时候有,然后在本机已经有了,以是说这个镜像其实是会变革的,大家必要灵活调解。
  1. NAME                                  DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
  2. java                                  DEPRECATED; use "openjdk" (or other JDK impl…   2002      [OK]      
  3. bellsoft/liberica-runtime-container   Alpaquita based image for Liberica JDK and J…   17                  
  4. eclipse/ubuntu_jdk8                   Ubuntu, JDK8, Maven 3, git, curl, nmap, mc, …   17                   [OK]
  5. jdkato/vale                           The official Docker image for Vale.             10                  
  6. eclipse/centos_jdk8                   CentOS, JDK8, Maven 3, git, curl, nmap, mc, …   5                    [OK]
  7. dockette/jdk8                         My Oracle Java 8 Dockerfile                     5                    [OK]
  8. jdkelley/simple-http-server                                                           1                    
  9. eucm/maven                            Maven 3.3.9 with Java jdk 8 Docker image rep…   1                    [OK]
  10. eclipse/ubuntu_jdk8_x11               Based on Ubuntu 14, JDK 8, Maven 3.3.9, x11 …   1                    [OK]
  11. sismics/debian-java                   Debian Jessy + Oracle JDK                       1                    
  12. eclipse/debian_jdk8                   Debian, JDK8, Maven 3, git, curl, nmap, mc, …   1                    [OK]
  13. eclipse/debian_jdk8_node              Node (+ Angular stuff) + JDK8. Debian based     1                    [OK]
  14. eclipse/alpine_jdk8                   Based on Alpine 3.3. JDK 1.8, Maven 3.3.9, T…   1                    [OK]
  15. eclipse/ubuntu_wildfly8               Ubuntu 14.04, JDK 1.8, Maven 3.3.9, Wildfly 8   0                    [OK]
  16. eclipse/hadoop-dev                    Ubuntu 14.04, Maven 3.3.9, JDK8, Tomcat 8       0                    [OK]
  17. clarinpl/java                         Ubuntu with java ( jdk-8u161)                   0                    
  18. eclipse/ubuntu_gradle                 Ubuntu, JDK1.8, Gradle2.3                       0                    [OK]
  19. bellsoft/buildpacks.liberica          A Cloud Native Buildpack for Alpaquita Linux…   0                    
  20. jdk1/php-redis-modified                                                               0                    
  21. vespaengine/vespa-pipeline            Docker image with supported versions of Mave…   0           
复制代码
快速上手flink情况

这个就比力故意思了,信赖很多人想玩大数据的东西,第一时间是想找个地方爽一把先,但是通常搭建情况这个事情上猜疑人生,上网搜刮吧,乱七八糟的讲啥都有。文档在这里,点我
其实官网就是给了2+N动作,首先就是设置一个设置参数,由于背面必要不断使用这个参数,再构建一个网络,可以明白背面的节点要相互通讯,就都使用同一个网络就好了。
  1. FLINK_PROPERTIES="jobmanager.rpc.address: jobmanager"
  2. docker network create flink-network
复制代码
第二步,来个主节点
  1. docker run \
  2.     --rm \
  3.     --name=jobmanager \
  4.     --network flink-network \
  5.     --publish 8081:8081 \
  6.     --env FLINK_PROPERTIES="${FLINK_PROPERTIES}" \
  7.     flink:1.18.1-scala_2.12 jobmanager
复制代码
其实这个时候已经可以在浏览器输入 http://localhost:8081,访问到了,不外玩多了大数据的人都知道,这种时候管的是主备,不能光这个。

下面就是启动从节点了:
  1. docker run \
  2.     --rm \
  3.     --name=taskmanager \
  4.     --network flink-network \
  5.     --env FLINK_PROPERTIES="${FLINK_PROPERTIES}" \
  6.     flink:1.18.1-scala_2.12 taskmanager
复制代码
不外有个问题发现启动主节点的时候那个控制台一直没有退出,卡着,从节点这里好像没有办法去写下令,这里可以开一个新窗口去搞,没问题。

当然一模一样抄过来代码也显得我这种博客其实是废物,还不如直接去官网抄就好。当然,只有实际动手的同学才会对下面的内容感兴趣,以是我们对节点启动下令调解一下,首先是启动节点,我们盼望在后台运行就可以了。
–rm 其实是说退出后可以把容器都烧毁的意思,主打一个绿色环保,我们调解成 -d ,deamon 的意思。
主节点启动下令:
  1. docker run \
  2.     -d \
  3.     --name=jobmanager \
  4.     --network flink-network \
  5.     --publish 8081:8081 \
  6.     --env FLINK_PROPERTIES="${FLINK_PROPERTIES}" \
  7.     flink:1.18.1-scala_2.12 jobmanager
复制代码
对应从节点, 相应改造即可,这个从节点,实行一次便会启动一个从节点,以是可以实行多次,但是假如每次实行的话taskmanager作为容器名字不能重复,不方便,以是我改了两个地方,一个是 调解为-d模式,后台实行
第二个是去掉指定容器名称的操纵
  1. docker run \
  2.         -d \
  3.     --network flink-network \
  4.     --env FLINK_PROPERTIES="${FLINK_PROPERTIES}" \
  5.     flink:1.18.1-scala_2.12 taskmanager
复制代码
每次运行一次,都可以在Task managers的地方多新增节点,这便是分布式摆设的样子啦。

这其实就结束了。
跑起来

flink其实是有很多开发好的应用的,不外在容器的情况,我们怎么跑起来,首先找到我们运行的容器,任意哪个都行
  1. docker ps
  2. CONTAINER ID   IMAGE                             COMMAND                  CREATED             STATUS             PORTS                              NAMES
  3. 26d17915e2dd   flink:1.18.1-scala_2.12           "/docker-entrypoint.…"   24 minutes ago      Up 24 minutes      6123/tcp, 8081/tcp                 magical_carson
  4. a244103c431b   flink:1.18.1-scala_2.12           "/docker-entrypoint.…"   24 minutes ago      Up 24 minutes      6123/tcp, 8081/tcp                 sharp_mestorf
  5. 926ecf993f0f   flink:1.18.1-scala_2.12           "/docker-entrypoint.…"   24 minutes ago      Up 24 minutes      6123/tcp, 8081/tcp                 epic_hofstadter
  6. cc868476ee11   flink:1.18.1-scala_2.12           "/docker-entrypoint.…"   28 minutes ago      Up 28 minutes      6123/tcp, 8081/tcp                 taskmanager
  7. cd422928babc   flink:1.18.1-scala_2.12           "/docker-entrypoint.…"   About an hour ago   Up About an hour   6123/tcp, 0.0.0.0:8081->8081/tcp   jobmanager
复制代码
docker容器是支持写一部门id就可以匹配,我们从容器上把jar可以copy到本机
  1. docker cp 26d1:/opt/flink/examples/streaming/WordCount.jar .
复制代码
然后在页面上前次jar即可

然后就跑起来了。

总结

本文其实是先容了最长见的两种使用docker的场景,一个是自己开发的步伐如何用docker跑起来,第二是使用现成的容器更快速让我们入门。这两种方式在以后会常常碰到。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4