本文档中的集群包含 192.168.105.10/11/12 三台机器。三台机器的 hostname 分别设为 ivic10/ivic11/ivic12,其中第一台机器作为 master,后两台作为 slaves。

1 先决条件

在部署 Flink 之前,请确认集群的每个节点都符合以下条件:

  1. 已安装 Java 1.8.x 或以上版本(推荐 1.8 版本)

  2. 节点两两之间可以 SSH 免密码登陆

  3. 已部署 Hadoop(如果只是部署 Standalone Cluster 则不需要 Hadoop)

如果你已经按照 Hadoop 部署文档成功建立了 Hadoop 集群,那么以上条件均已满足。

2 下载 Flink 二进制文件

在 Flink 的下载页面中有多个版本可以选择,因为之前选择了 Hadoop 2.7.7 版本,所以这里选择与之对应的 Apache Flink 1.7.2 with Hadoop 2.7 版本,Scala 版本选择最新的 2.12。

cd ~/bigdata
#Apache网站上的镜像太慢,从清华镜像下载
wget https://mirrors.tuna.tsinghua.edu.cn/apache/flink/flink-1.7.2/flink-1.7.2-bin-hadoop27-scala_2.12.tgz
#解压到当前文件夹
tar -xzvf flink-1.7.2-bin-hadoop27-scala_2.12.tgz -C .

3 配置 Flink

注意:如果只需要部署 Flink on YARN,那么可以跳过这一小节,因为 YARN 会帮你打理好一切。

#切换到flink配置路径
cd ./flink-1.7.2/conf

3.1 flink-conf.yaml

jobmanager.rpc.address 指向 master 节点,其他配置项可以按照机器实际硬件情况酌情填写,此处使用默认值。

# The host/IP of JobManager
jobmanager.rpc.address: ivic10
# The heap size for the JobManager JVM
jobmanager.heap.size: 1024m
# The heap size for the TaskManager JVM
taskmanager.heap.size: 1024m
# The number of task slots that each TaskManager offers. Each slot runs one parallel pipeline.
taskmanager.numberOfTaskSlots: 1
# The parallelism used for programs that did not specify and other parallelism.
parallelism.default: 1

3.2 slaves

向 slaves 文件写入 slave 节点的 host/IP 地址

ivic11
ivic12

4 将配置好的 Flink 分发到其他节点

#需要先在11/12节点上建立 /homne/ivic/bigdata/ 文件夹
scp -r /home/ivic/bigdata/flink-1.7.2 192.168.105.11:/home/ivic/bigdata/flink-1.7.2
scp -r /home/ivic/bigdata/flink-1.7.2 192.168.105.12:/home/ivic/bigdata/flink-1.7.2

5 以 Standalone 模式启动 Flink

cd $FLINK_HOME
./bin/start-cluster.sh

然后可以在 ivic10:8081 查看 Flink 集群的运行情况。

./examples 路径下有许多打包好的示例程序,可以用于验证 Flink 集群是否正常运行。

./bin/flink run ./examples/batch/WordCount.jar

上面的命令会向 Flink 集群提交一个 wordcount 任务,这个示例程序可以指定输入和输出路径,这里没有指定,因此输入文件为程序自带的一小段文本,结果直接输出在屏幕上。

如果 Flink 集群工作正常,应该会在屏幕上输出以下结果:

# 省略前面的输出
(wrong,1)
(you,1)
Program execution finished
Job with JobID d7df697505c1f68d4eda2828b6eb18e2 has finished.
Job Runtime: 3158 ms
Accumulator Results:
- 47b31488879a3449d67aca67f5b75188 (java.util.ArrayList) [170 elements]

6 以 Flink on YARN 模式启动

把 Flink 运行在 YARN 上有两种方式,第一种方式是建立一个长期运行的 Flink YARN Session,然后向这个 Session 提交 Flink Job,多个任务同时运行时会共享资源。第二种方式是为单个任务启动一个 Flink 集群,这个任务会独占 Flink 集群的所有资源,任务结束即代表集群被回收。

另外,Flink on YARN 模式需要系统中设置了 YARN_CONF_DIR 或 HADOOP_CONF_DIR 环境变量,如果未设置,请在 ~/.profile 中加入以下内容,然后使用 source ~/.profile 命令使修改立即生效。

#在这条命令前定义HADOOP_HOME环境变量
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop

6.1 Flink YARN Session

使用下列命令来启动一个拥有 2 个 TaskManager 的 Flink 集群,每个 TaskManager 有 2 GB 内存,2 个 slot。

./bin/YARN-session.sh -n 2 -tm 2048 -s 2

完整的参数列表如下

Usage:
Required
-n,--container <arg> Number of YARN container to allocate (=Number of Task Managers)
Optional
-D <arg> Dynamic properties
-d,--detached Start detached
-jm,--jobManagerMemory <arg> Memory for JobManager Container with optional unit (default: MB)
-nm,--name Set a custom name for the application on YARN
-q,--query Display available YARN resources (memory, cores)
-qu,--queue <arg> Specify YARN queue.
-s,--slots <arg> Number of slots per TaskManager
-tm,--taskManagerMemory <arg> Memory per TaskManager Container with optional unit (default: MB)
-z,--zookeeperNamespace <arg> Namespace to create the Zookeeper sub-paths for HA mode

启动 YARN Session 以后会输出 JobManager 的 Web Interface 地址,打开以后是这样的:

仔细一看,Task Managers,Task Slots 怎么都是 0 呢?难道是哪里出了问题?其实并没有问题,从某个版本开始 Flink 允许动态分配资源,在没有任务的时候不分配 TaskManager。接下来我们就提交一个任务试试。

因为启动 YARN Session 以后 Flink Client 会一直在前台运行,所以先用 Ctrl + Z 快捷键把 Client 转到后台,然后再提交任务。

./bin/flink run ./examples/batch/WordCount.jar

在任务运行期间观察 Web Interface,会发现 Task Managers 变为 1,Task Slots 变为 2 ,与启动集群时指定的参数不符,这是因为 YARN 集群中只有两个 NodeManager,ivic11 和 ivic12,其中一个作为 JobManager,因此只剩一个节点可以作为 TaskManager。

任务的运行结果和 Standalone 模式下完全一样。

6.2 Single Flink job on YARN

下面这条命令会为 wordcount 任务启动一个独占的 Flink 集群,任务结束集群即被回收。其中 -m 选项指定 Flink 集群的启动模式,-yn 选项指定 TaskManager 的数目。

./bin/flink run -m YARN-cluster -yn 2 ./examples/batch/WordCount.jar

任务的运行结果和 Standalone 模式下完全一样。

7 参考

  1. Standalone Cluster Deployment
  2. YARN Setup
  3. Flink TaskManagers do not start in YARN Cluster

Flink 部署文档的更多相关文章

  1. Hadoop 部署文档

    Hadoop 部署文档 1 先决条件 2 下载二进制文件 3 修改配置文件 3.1 core-site.xml 3.2 hdfs-site.xml 3.3 mapred-site.xml 3.4 ya ...

  2. PPTP部署文档

    PPTP部署文档 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.       欢迎加入:高级运维工程师之路 598432640 前言:这款VPN部署起来特别简单,想对OPENVON配 ...

  3. hadoop2.6.0汇总:新增功能最新编译 32位、64位安装、源码包、API下载及部署文档

    相关内容: hadoop2.5.2汇总:新增功能最新编译 32位.64位安装.源码包.API.eclipse插件下载Hadoop2.5 Eclipse插件制作.连接集群视频.及hadoop-eclip ...

  4. supervisor 部署文档

    supervisor 部署文档 supervisor 需要Python支持,如果不用系统的supervisor,单独安装python python 安装 #依赖 yum install python- ...

  5. centos6 Cacti部署文档

    centos6 Cacti部署文档 1.安装依赖 yum -y install mysql mysql-server mysql-devel httpd php php-pdo php-snmp ph ...

  6. HP DL160 Gen9服务器集群部署文档

    HP DL160 Gen9服务器集群部署文档 硬件配置=======================================================Server        Memo ...

  7. Sqlserver2008安装部署文档

    Sqlserver2008部署文档 注意事项: 如果你要安装的是64位的服务器,并且是新机器.那么请注意,你需要首先需要给64系统安装一个.net framework,如果已经安装此功能,请略过这一步 ...

  8. CDH简易离线部署文档

        CDH 离线简易部署文档       文档说明 本文为开发部署文档,生产环境需做相应调整. 以下操作尽量在root用户下操作,避免权限问题. 目录 文档说明 2 文档修改历史记录 2 目录 3 ...

  9. Ceph分布式存储(luminous)部署文档-ubuntu18-04

    Ceph分布式存储(luminous)部署文档 环境 ubuntu18.04 ceph version 12.2.7 luminous (stable) 三节点 配置如下 node1:1U,1G me ...

随机推荐

  1. luogu P4199 万径人踪灭

    嘟嘟嘟 方案:回文子序列数 - 回文子串数. 回文子串数用manacher解决就行了,关键是怎么求会问序列数. 一个比较好的\(O(n ^ 2)\)的算法:对于一个回文中心\(i\),\(O(n)\) ...

  2. chrome的uget扩展程序红色 Unable to connect with uget-integrator问题

    我们根据网上的教程在ubuntu16.04中安装下载工具uget+aria2并配置chrome时,最后重新打开chrome浏览器,发现uget扩展程序是红色的,点开看到”Unable to conne ...

  3. 正则表达式利用grep和sed处理日志内容,获取所需的内容

    app.log文件内容: 2014-09-11 00:00:01,516 INFO [com.tt.bb.thread.Control] - Socket连接:/182.105.83.33:53217 ...

  4. Java反射学习四

    利用反射调用私有方法.访问私有属性 利用反射,首先是Class对象的获取,之后是Method和Field对象的获取. 以Method为例,从文档中可以看到: getMethod()方法返回的是publ ...

  5. 【转】对H264进行RTP封包原理

    1. 引言     H.264/AVC 是ITU-T 视频编码专家组(VCEG)和ISO/IEC 动态图像专家组(MPEG )联合组成的联合视频组(JVT)共同努力制订的新一代视频编码标准,它最大的优 ...

  6. 在存放源程序的文件夹中建立一个子文件夹 myPackage。例如,在“D:\java”文件夹之中创建一个与包同名的子文件夹 myPackage(D:\java\myPackage)。在 myPackage 包中创建一个YMD类,该类具有计算今年的年份、可以输出一个带有年月日的字符串的功能。设计程序SY31.java,给定某人姓名和出生日期,计算该人年龄,并输出该人姓名、年龄、出生日期。程序使用YM

    题目补充: 在存放源程序的文件夹中建立一个子文件夹 myPackage.例如,在“D:\java”文件夹之中创建一个与包同名的子文件夹 myPackage(D:\java\myPackage).在 m ...

  7. Kafka设计解析(四)Kafka Consumer设计解析

    转载自 技术世界,原文链接 Kafka设计解析(四)- Kafka Consumer设计解析 目录 一.High Level Consumer 1. Consumer Group 2. High Le ...

  8. (转)Python学习笔记系列——Python是一种纯粹的语言

    此文出自知乎灵剑,原文传送门:https://zhuanlan.zhihu.com/p/23926957. 在摸索适合自己的语言学习方法,看到一篇好文章,转之,侵删. Python的语法范式相当多.知 ...

  9. 让自己的项目支持 Carthage

    据说 cocoaPods 升级到1.0之后变得使用起来不太方便了,好吧,这段时间公司事儿比较多而且是自己写的sdk就不怎么写demo了,cocoaPods也没用几次…… 前两天朋友说要转战 Carth ...

  10. 配虚拟ip脚本

    cat /home/master/init_pandora.sh #! /bin/shuser=`whoami`if [ $user = 'master' ]then sudo /sbin/ifcon ...