美文网首页
使用Docker部署Flink大数据项目

使用Docker部署Flink大数据项目

作者: CheckChe | 来源:发表于2019-11-20 18:07 被阅读0次

    本文是为基于Flink的商品推荐系统所搭建的Docker环境,目的为了方便体验项目,一键部署项目需要的所有环境,并预填充所需要的数据。完整的环境包括Zookeeper 、Kafka 、 Hbase 、 Mysql 、 Redis 、 Flink 。

    环境介绍:

    • zookeeper 3.4.5
    • kafka 2.12-2.2.1
    • hbase 1.5.0
    • mysql 8.0.18
    • redis
    • flink 1.9.0
    容器环境.png

    整个项目的部署和工作环境如上图所示。由于 kafka 和 hbase 均需要 zookeeper 的支持,所以没有使用集成式的 hbase docker镜像,所以笔者自己基于 hbase 1.5.0 制作了一版镜像,由于 hbase 的 standlone模式端口会随机生成,故也搭建成了伪分布式,HMaster 和 HRegionserver均在同一个 Docker Container 中。 在Kafka容器中,配置了对内对外两个地址,这是为了方便远程的队列消费,以及在容器内自动生产消息。

    搭建步骤:

    1. 拉取镜像并启动

    首先请下载 目录 内的所有文件,因为mysql和hbase需要插入数据,kafka需要启动一个shell脚本自动的模拟用户点击行为。对应的请修改docker-compose.yml文件中对应的文件地址为自己所保存的地址。

    首先请保证已经成功安装了docker和docker-compose,其次请将docker-compose.yml文件中的 hbase 的 hostname 修改为自己的主机名。

    最后通过docker-compose启动所有容器

    [root@docker-linux recommend]# docker-compose up -d
    

    2. 给 Mysql / Redis 填充数据,给 Hbase 创建表结构

    进入mysql container, 连接mysql

    [root@docker-linux recommend]# docker exec -ti mysql bash
    root@6fdc02332cd0:/# mysql -u root -p
    

    通过提前制作好的sql文件填充mysql

    mysql> source /opt/contact.sql
    

    之后是构建 hbase 表结构

    [root@docker-linux recommend]# docker exec -ti hbase bash
    root@docker-linux:/opt/hbase# hbase shell /opt/hbase_ini.sql
    

    通过 list 命令可以看到我们创建的表都已成功

    hbase(main):001:0> list
    TABLE                                                             ··· 
    8 row(s) in 0.1390 seconds
    => ["con", "p_history", "prod", "ps", "px", "u_history", "u_interest", "user"]
    

    最后进入redis,创建10个热度数据

    [root@docker-linux recommend]# docker exec -ti redis bash
    root@7735aff1391f:/bin# redis-cli
    

    启动客户端后,之后按照如下格式创建 set 0 123之类的创建从0-9的10条数据即可,最后一位为商品id,在0-999内任意取值。

    3. 启动 Kafka 消息生成器

    进入kafka容器并启动shell脚本即可,脚本会按照每秒一次的频率发送message到log这个topic里。

    [root@docker-linux recommend]# docker exec -ti kafka bash
    bash-4.4# sh /opt/generator.sh -d
    

    验证成功发送消息的方法是重新开一个连接进入kafka容器并启动Consumer,注意kafka内部端口号配置的是9093

    bash-4.4# $KAFKA_HOME/bin/kafka-console-consumer.sh --bootstrap-server kafka:9093 --topic log
    

    正确看到如下格式的消息即可

    558,559,1574180802,1
    576,576,1574180819,3
    585,585,1574180828,3
    594,594,1574180837,3
    603,603,1574180846,3
    613,613,1574180856,1
    

    执行任务:

    我们这个项目一共有6个flink的任务,如果只是在本地测试的话,可以直接在IDEA中启动对应的任务即可,为了做实验,我们把项目打包并提交到 Docker 的 Flink 中,为了方便就不再把各种依赖单独放到集群中,而是直接打到任务的jar包中。正确的打包方法可以参考这篇博客

    我们直接把打包好的jar包放到集群中,并拷贝到flink的docker中(jobmanager)

    [root@docker-linux pkg]# docker cp ./logtask.jar flink_jobmanager:/opt/
    

    然后进入flink jobmanager的容器中,提交jar包到集群

    [root@docker-linux pkg]# docker exec -ti flink_jobmanager bash
    root@0f5edbeeecb9:/opt/flink# flink run /opt/logtask.jar 
    

    提交成功后可以在Flink WebUI观察我们提交的任务

    flink界面.png

    相关文章

      网友评论

          本文标题:使用Docker部署Flink大数据项目

          本文链接:https://www.haomeiwen.com/subject/lrqaictx.html