Docker安装flink

导航

  • 无处不在的大数据
  • 安装flink
    • 拉取flink镜像
    • 编写docker-compose.yml
    • 生成启动
    • 查看安装效果
  • 常见坑及解决方案
    • 问题1
    • 问题2
  • 参考

  本节是《flink入门实战》的第4篇,感谢您的阅读,预计阅读时长3min。

“泰山不拒细壤,故能成其高,江海不择细流,故能就其深。”

flink作为第三代大数据处理方案,早已成为业内的共识,并且发展迅猛(即将发布的新特性可以查看《Flink1.14新特性抢鲜看~》),而打开这扇大门的第一步是搭建flink的环境,以便我们后续测试和项目实践。

无处不在的大数据

大数据早已不是什么新鲜事物,比如在国内一线互联网大厂早有应用。比如,我们熟知淘宝的双十一大屏数据,头条的个个性化推荐等应用。

但是,在很多二三线城市,中小型公司基本上没有处理大数据的能力。

自从提出大数据之后,软件行业产生了一些新兴的岗位,如算法工程师,大数据工程师。

大数据工程师可以从事对大量数据的采集、清洗、分析、治理、挖掘,并对这些数据加以利用、管理、维护和服务的相关技术工作。(百度百科)

大数据工程师更加偏向于算法和抽象数据的分析和处理。传统的软件工程师更加偏向于业务代码的实现。

物以稀为贵,大数据的工程师的价位不菲,几乎是传统工程师2~3倍。再加上大数据的门槛,比如要学习python,要学习很多数学公式,让很多传统软件工程师望而生畏。

笔者接触大数据也是基于一个工作上的契机。因为公司业务的需要,公司高层希望建立APP用户画像,并能有针对性的为顾客做一些智能化商品或者内容推荐。

因为部门研发人员基本上都是从事业务代码编写,对大数据这一套并没有实践经验。通过,一番学习打卡,再加上和阿里,亚马逊等技术大神多次交流,集合整个团队智慧,总算搭建了一套可以跑起来的推荐系统。

在这个过程中,其实涉及的语言和中间件很多,比如Java,python,embedding(特征抽取),tensorflow框架,离线和在线计算等。数据处理引擎涉及到Spark,flink等。

安装flink

Notes: 安装flink需要一些环境准备,前期准备可以参考相关文章《环境准备》《安装Docker》等文章,这里不再赘述。

(1) 拉取flink镜像

Note: 这里可以根据实际情况指定安装的版本

 docker pull flink:1.10.0-scala_2.12

(2) 编写docker-compose.yml

Note:flink使用8081等端口,要事先保证8081端口未被占用。

在opt下创建flink 目录

mkdir /opt/flink -p


编写docker-compose.yml,放在/opt/flink下面

Note: 会使用8081等端口,要事先保证8081端口未被占用。

version: "2.1"
services:
jobmanager:
image: ${FLINK_DOCKER_IMAGE_NAME:-flink}
expose:
- "6123"
ports:
- "8081:8081"
command: jobmanager
environment:
- JOB_MANAGER_RPC_ADDRESS=jobmanager taskmanager:
image: ${FLINK_DOCKER_IMAGE_NAME:-flink}
expose:
- "6121"
- "6122"
depends_on:
- jobmanager
command: taskmanager
links:
- "jobmanager:jobmanager"
environment:
- JOB_MANAGER_RPC_ADDRESS=jobmanager

(3) 生成启动

进入/opt/flink,依次执行以下命令

cd /opt/flink/
docker-compose build
docker-compose up -d --force-recreate
docker-compose down
docker-compose restart

(4) 查看安装效果

浏览器上查看页面dashboard

在浏览器输入地址:http://X.X.0.101:8081

Note: 以自己安装flink的IP地址来访问


大告成功。

常见坑及解决方案

尽管官方文档提供了标准安装文档,但是有时候在实际场景中,手气可能比较差,会遭遇各种坑。

这里将笔者在安装中遇到问题整理一下,希望给新手一些参考。

问题1

如果执行docker-compose 命令报错:

-bash: docker-compose: command not found

(1) 先检查pip是否已经安装:

pip -V 

如果出现提示

bash: pip: command not found

安装pip

yum -y install epel-release
yum -y install python-pip #升级
pip install --upgrade pi

安装Docker-Compose

pip install docker-compose

查看是否安装成功

docker-compose -version

返回版本号

docker-compose version 1.29.2, build unknown

问题2

如果出现如下

You are using pip version xxx; however, version xxx is available

这种字样,说明是pip版本过低,需要升级

可以尝试执行

python -m pip install --upgrade pip -i https://pypi.douban.com/simple

如果失败。有可能是因为本机安装的python版本过低。比如,本机可能是python2,实际上需要python3.

执行下面命令

python -V

Python 2.7.5

再次执行命令

python3 -V

Python 3.6.8

修改yum相关文件

vi /usr/bin/yum

修改首行

!/usr/bin/python 为 #!/usr/bin/python2


再次输入

python -V

Python 3.6.8

然后再次执行pip升级

python -m pip install --upgrade pip -i https://pypi.douban.com/simple

参考

Docker安装flink及避坑指南的更多相关文章

  1. Windows环境下Anaconda安装TensorFlow的避坑指南

    最近群里聊天时经常会提到DL的东西,也有群友在学习mxnet,但听说坑比较多.为了赶上潮流顺便避坑,我果断选择了TensorFlow,然而谁知一上来就掉坑里了…… 我根据网上的安装教程,默认安装了最新 ...

  2. MySQL 在 Windows 下安装教程、避坑指南

    MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,2008 年被 SUN 公司收购,后 SUN 公司又被 Oracle 公司收购. 一.下载 MySQL 官网 https:/ ...

  3. Linux下Python3.6的安装及避坑指南

    Python3的安装 1.安装依赖环境 Python3在安装的过程中可能会用到各种依赖库,所以在正式安装Python3之前,需要将这些依赖库先行安装好. yum -y install zlib-dev ...

  4. electron 编译 sqlite3避坑指南---尾部链接有已经编译成功的sqlite3

    electron 编译 sqlite3避坑指南(尾部链接有已经编译成功的sqlite3) sqlite很好用,不需要安装,使用electron开发桌面程序,sqlite自然是存储数据的不二之选,奈何编 ...

  5. Harmony OS 开发避坑指南——源码下载和编译

    Harmony OS 开发避坑指南--源码下载和编译 本文介绍了如何下载鸿蒙系统源码,如何一次性配置可以编译三个目标平台(Hi3516,Hi3518和Hi3861)的编译环境,以及如何将源码编译为三个 ...

  6. 今天 1024,为了不 996,Lombok 用起来以及避坑指南

    Lombok简介.使用.工作原理.优缺点 Lombok 项目是一个 Java 库,它会自动插入编辑器和构建工具中,Lombok 提供了一组有用的注解,用来消除 Java 类中的大量样板代码. 目录 L ...

  7. CEF避坑指南(一)——下载并编译第一个示例

    CEF即Chromium Embedded Framework,Chrome浏览器嵌入式框架.它提供了接口供程序员们把Chrome放到自己的程序中.许多大型公司,如网易.腾讯都开始使用CEF进行前端开 ...

  8. Canal v1.1.4版本避坑指南

    前提 在忍耐了很久之后,忍不住爆发了,在掘金发了条沸点(下班时发的): 这是一个令人悲伤的故事,这条情感爆发的沸点好像被屏蔽了,另外小水渠(Canal意为水道.管道)上线一段时间,不出坑的时候风平浪静 ...

  9. Hive改表结构的两个坑|避坑指南

    Hive在大数据中可能是数据工程师使用的最多的组件,常见的数据仓库一般都是基于Hive搭建的,在使用Hive时候,遇到了两个奇怪的现象,今天给大家聊一下,以后遇到此类问题知道如何避坑! 坑一:改变字段 ...

随机推荐

  1. 痞子衡嵌入式:在IAR开发环境下将关键函数重定向到RAM中执行的三种方法

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是在IAR开发环境下将关键函数重定向到RAM中执行的三种方法. 嵌入式项目里应用程序代码正常是放在 Flash 中执行的,但有时候也需要将 ...

  2. Notes about multiboot usb creator

    U盘上的多系统启动工具,Windows上YUMI比较好,Ubuntu上MultiSystem用法复杂,unetbootin是另外一款,需要安装p7zip(apt-get install p7zip-f ...

  3. Linux 文件、目录与磁盘格式

    文件属性      连接数  文件持有者 文件所属群组 文件容量 文件最后修改时间 文件名(就那个..) 第一栏其中文件属性有10,第一个属性代表这个文件是目录.文件或链接文件: [d]目录 [-]文 ...

  4. 数字化转型:敏捷和DevOps如何降低风险,提高速度

    进行数字化转型就意味着团队需要应对经常发生冲突的挑战--例如,要应对在复杂的相互依赖环境中快速变化的需求.对软件开发人员来说,这是一个熟悉的困境. 如果使用传统的瀑布方法来应对这些挑战,就会发现,在线 ...

  5. CMD直接输入Java,Javac,Javap发生乱码解决方式

    首先需要设置jdk的默认编码,在之前一篇博文里有 然后在cmd里直接执行chcp 65001   代表将cmd换成UTF-8的显示页 936是GBK 437为英语

  6. 图文详解两种算法:深度优先遍历(DFS)和广度优先遍历(BFS)

    参考网址:图文详解两种算法:深度优先遍历(DFS)和广度优先遍历(BFS) - 51CTO.COM 深度优先遍历(Depth First Search, 简称 DFS) 与广度优先遍历(Breath ...

  7. ASP.NET Core教程:使用Supervisor做ASP.NET Core应用程序守护进程

    一.前言 在上一篇文章中,我们讲解了如何在Linux服务器上面部署ASP.NET Core应用程序,并且使用Nginx作为反向代理.我们在Linux服务器上面,是通过ASP.NET Core自宿主的方 ...

  8. 使用Postman测试 参数为实体类

    Body-->raw-->json

  9. vue + iview 怎样在vue项目下添加ESLint

    参考:https://segmentfault.com/a/1190000012019019?utm_source=tag-newest 使用iview框架的MenuGroup标签,vscode报红, ...

  10. Qt 的MDI 多文档窗口

    一.MDI简介 MDI就是多文档界面(Multi-document Interface,MDI)应用程序 MDI就是在主窗口里创建多个同类型的MDI子窗口,这些MDI子窗口在主窗口里显示,并共享主窗口 ...