3.Flink 集群搭建
Flink 可以选择的部署方式有:
Local、Standalone(资源利用率低)、Yarn、Mesos、Docker、Kubernetes、AWS。
我们主要对 Standalone 模式和 Yarn 模式下的 Flink 集群部署进行分析。
3.1Standalone 模式安装
我们对 standalone 模式的 Flink 集群进行安装,准备三台虚拟机,其中一台作为
JobManager(hadoop-senior01),另外两台作为 TaskManager(hadoop-senior02、
hadoop-senior03)。
1. 在官网下载 1.6.1 版本 Flink(https://archive.apache.org/dist/flink/flink-1.6.1/)。
2. 将安装包上传到要按照 JobManager 的节点(hadoop-senior01)。
3. 进入 Linux 系统对安装包进行解压:
[lxl@hadoop102 software]$ tar -zxvf flink-1.6.1-bin-hadoop27-scala_2.11.tgz -C /opt/module/
4. 修改安装目录下 conf 文件夹内的 flink-conf.yaml 配置文件,指定 JobManager:
[lxl@hadoop102 conf]$ vi flink-conf.yaml
5. 修改安装目录下 conf 文件夹内的 slave 配置文件,指定 TaskManager:
[lxl@hadoop102 conf]$ vi slaves
[lxl@hadoop102 conf]$ cat slaves hadoop103 hadoop104
[lxl@hadoop102 module]$ xsync flink
[lxl@hadoop102 flink]$ bin/start-cluster.sh
8. 通过 jps 查看进程信息:
[lxl@hadoop102 flink]$ jps 3041 Jps 2985 StandaloneSessionClusterEntrypoint [lxl@hadoop103 ~]$ jps 2759 Jps 2682 TaskManagerRunner [lxl@hadoop104 ~]$ jps 2758 Jps 2680 TaskManagerRunner
9. 访问集群 web 界面(8081 端口):
1 在官网下载 1.6.1 版本 Flink(https://archive.apache.org/dist/flink/flink-1.6.1/)。
2 将安装包上传到要按照 JobManager 的节点(hadoop-senior01)。
3 进入 Linux 系统对安装包进行解压:
6 将配置好的 Flink 目录分发给其他的两台节点:
7. 明确虚拟机中已经设置好了环境变量 HADOOP_HOME。 (安装Hadoop时已做)
8. 启动 Hadoop 集群(HDFS 和 Yarn)。
9. 在 hadoop102 节 点 提 交 Yarn-Session, 使 用 安 装目 录 下 bin 目录中的
yarn-session.sh 脚本进行提交:
/opt/modules/flink/bin/yarn-session.sh -n 2 -s 6 -jm 1024 -tm 1024 -nm test -d
其中:
-n(--container):TaskManager 的数量。
-s(--slots): 每个 TaskManager 的 slot 数量,默认一个 slot 一个 core,默认每个taskmanager 的 slot 的个数为 1。
-jm:JobManager 的内存(单位 MB)。
-tm:每个 taskmanager 的内存(单位 MB)。
-nm:yarn 的 appName(现在 yarn 的 ui 上的名字)。
-d:后台执行。
10. 启动后查看 Yarn 的 Web 页面,可以看到刚才提交的会话:
11. 在提交 Session 的节点查看进程:
[lxl@hadoop103 ~]$ jps 4034 NodeManager 2838 DataNode 4506 Jps 2682 TaskManagerRunner 4458 YarnSessionClusterEntrypoint 3916 ResourceManager
12. 提交 Jar 到集群运行:
/opt/modules/flink/bin/flink run -m yarn-cluster examples/batch/WordCount.jar
13. 提交后在 Yarn 的 Web 页面查看任务运行情况:
14. 任务运行结束后在控制台打印如下输出: