Flink开发环境准备: centos-jdk8

linux-jdk8 - Flink开发环境准备

  • 一、基本介绍
  • 二、环境准备
    • [1.1 JDK环境](#1.1 JDK环境)
    • [1.2 开发工具](#1.2 开发工具)
    • [1.3 Maven环境](#1.3 Maven环境)
  • 三、flink下载安装配置
    • [3.1 Flink下载](#3.1 Flink下载)
    • [3.2 flink本地模式安装 - linux](#3.2 flink本地模式安装 - linux)
    • [3.3 常用配置](#3.3 常用配置)
    • [3.4 日志的查看和配置](#3.4 日志的查看和配置)
  • [四、单机 Standalone 的方式运行 Flink](#四、单机 Standalone 的方式运行 Flink)

一、基本介绍

Flink底层源码是基于Java代码进行开发,在Flink编程中我们除了可以使用Java语言来进行编写Flink程序外,还可以使用Scala、Python语言来进行编写Flink程序。

本文主要使用Java来编写Flink程序。

  • flink搭建在centos服务器:jdk环境1.8、flink单机 - 1.16.0版本
  • 开发环境搭建在win10系统:jdk环境1.8、idea、maven3.4.5

回到目录

下面来准备下Flink开发环境:

二、环境准备

1.1 JDK环境

Flink核心模块均采用Java开发,所以运行环境需要依赖JDK,Flink可以基于类UNIX 环境中运行,例如:Linux、Max、OS、Windows等,在这些系统上运行Flink时都需要配置JDK环境。Flink早在1.15就要求使用JDK11,主要是为了用上比G1更优秀的ZGC。Flink1.16.0版本也支持使用JDK8,后续版本对JDK8的支持将会移除。

  • windows环境:

建议升级到JDK11 ,

JDK11 下载地址如下:https://www.oracle.com/java/technologies/javase-jdk11-downloads.html

jdk1.8下载地址如下:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html

考虑到Flink后期与一些大数据框架进行整合,这些大数据框架对JDK11的支持并不完善,例如:Hive3.1.3版本还不支持JDK11,所以本文采用JDK8来开发Flink。

回到目录

1.2 开发工具

可以选择IntelliJ IDEA或者Eclipse作为Flink应用的开发IDE,Flink开发官方建议使用IntelliJ IDEA,因为它默认集成了Scala和Maven环境,使用更加方便。

具体安装步骤详见:IntelliJ IDEA 安装及配置详细教程

博主使用IntelliJ IDEA开发工具.

回到目录

1.3 Maven环境

通过IntelliJ IDEA进行开发Flink Application时,可以使用Maven来作为项目jar包管理工具,需要在本地安装Maven及配置Maven的环境变量,需要注意的是,Maven版本需要使用3.0.4及以上,否则编译或开发过程中会有问题。

具体安装步骤详见:Maven下载安装及IDEA配置Maven的超详细教程

本文使用Maven3.5.4

回到目录

三、flink下载安装配置

3.1 Flink下载

flink 从 1.10开始,windows上跑不起来,各种问题。windows当前能支持的最高版本是1.9.3,直接安装就行。

选择合适的版本下载,官方下载地址:https://archive.apache.org/dist/flink/

本文选择的版本Flink1.16.0,Flink1.16.0版本官方文档地址:
https://nightlies.apache.org/flink/flink-docs-release-1.16/

回到目录

3.2 flink本地模式安装 - linux

参考链接:【Flink入门】centos上flink安装部署(standalone模式)

注意:centos需要先安装jdk环境 ,参考链接 - CentOS安装jdk的三种方法

  1. 创建目录,将下载文件放入该目录;或者直接本地下载,执行如下命令:

    wget http://mirrors.estointernet.in/apache/flink/flink-1.16.0/对应版本的安装包名称.tgz

    示例 :下载flink1.16.0版本

    wget http://mirrors.estointernet.in/apache/flink/flink-1.16.0/flink-1.16.0-bin-scala_2.11.tgz

  2. 解压安装包,执行命令:

    tar -zxvf 安装包名称.tgz

    示例

    tar -zxvf flink-1.16.0-bin-scala_2.11.tgz

回到目录

3.3 常用配置

1. 配置 TaskManager 的部署:

flink安装包的/conf/slaves用于配置 TaskManager 的部署,默认配置下只会启动一个 TaskManager 进程,如果想增加一个 TaskManager 进程的,只需要文件中追加一行"localhost"。

也可以直接通过" ./bin/taskmanager.sh start "这个命令来追加一个新的 TaskManager:

复制代码
./bin/taskmanager.sh start|start-foreground|stop|stop-all

2. 配置 JM 和 TM 的运行参数:

flink安装包的/conf/flink-conf.yaml用于配置 JM 和 TM 的运行参数,常用配置有:

css 复制代码
# The total process memory size for the JobManager.
# Note this accounts for all memory usage within the JobManager process, including JVM metaspace and other overhead.
# 包括JobManager进程中的所有内存使用,包括JVM元空间和其他开销
jobmanager.memory.process.size: 1600m

# The total process memory size for the TaskManager.
# Note this accounts for all memory usage within the TaskManager process, including JVM metaspace and other overhead.
# 这包括TaskManager进程中的所有内存使用,包括JVM元空间和其他开销
taskmanager.memory.process.size: 1728m

# To exclude JVM metaspace and overhead, please, use total Flink memory size instead of 'taskmanager.memory.process.size'.
# It is not recommended to set both 'taskmanager.memory.process.size' and Flink memory.
# 要排除JVM元空间和开销,请使用总Flink内存大小,而不是'taskmanager.memory.process.size'。不建议同时设置'taskmanager.memory.process. '和Flink内存
# taskmanager.memory.flink.size: 1280m

# 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.4 日志的查看和配置

JobManager 和 TaskManager 的启动日志可以在 Flink binary 目录下的 Log 子目录中找到。Log 目录中以flink-{id}-${hostname}为前缀的文件对应的是 JobManager 的输出,其中有三个文件:

  • flink-${user}-standalonesession-${id}-${hostname}.log:代码中的日志输出
  • flink-${user}-standalonesession-${id}-${hostname}.out:进程执行时的stdout输出
  • flink-${user}-standalonesession-${id}-${hostname}-gc.log:JVM的GC的日志

Log 目录中以flink-{id}-${hostname}为前缀的文件对应的是 TaskManager 的输出,也包括三个文件,和 JobManager 的输出一致。

日志的配置文件在 Flink binary 目录的 conf 子目录下,其中:

  • log4j-cli.properties:用 Flink 命令行时用的 log 配置,比如执行" flink run"命令
  • log4j-yarn-session.properties:用 yarn-session.sh 启动时命令行执行时用的 log 配置
  • log4j.properties:无论是 Standalone 还是 Yarn 模式,JobManager 和 TaskManager 上用的 log 配置都是 log4j.properties。
      这三个"log4j.*properties"文件分别有三个"logback.*xml"文件与之对应,如果想使用 Logback 的同学,只需要把与之对应的"log4j.*properties"文件删掉即可,对应关系如下:
  • log4j-cli.properties -> logback-console.xml
  • log4j-yarn-session.properties -> logback-yarn.xml
  • log4j.properties -> logback.xml
      需要注意的是,flink-{id}-和{user}-taskexecutor-{hostname}都带有",{id}"表示本进程在本机上该角色(JobManager 或 TaskManager)的所有进程中的启动顺序,默认从 0 开始。

回到目录

四、单机 Standalone 的方式运行 Flink

最简单的运行 Flink 应用的方法就是以单机 Standalone 的方式运行。

  1. 进入flink安装目录: cd 安装目录
  2. 启动集群:./bin/start-cluster.sh

停止集群./bin/stop-cluster.sh

  1. 打开 http://127.0.0.1:8081/ 就能看到 Flink 的 Web 界面。在执行./start-cluster.sh 后,flink进程的监听ip端口是127.0.0.1:8081。这样只能本机进行访问,外部服务器是访问不了的。
  • 要想外部服务器能访问,需要修改配置文件:flink安装包的conf/masters
    默认配置:localhost:8081,进程启动时会按照这个主机名从/etc/hosts找到对应的ip, 因为我的主机配置是:

  • 看centos服务器的8081端口防火墙是否打开。

    #示例:新增防火墙开放端口
    firewall-cmd --zone=public --add-port=8081/tcp --permanent
    firewall-cmd --reload
    firewall-cmd --list-all

回到目录

相关推荐
Elastic 中国社区官方博客28 分钟前
JavaScript 中使用 Elasticsearch 的正确方式,第一部分
大数据·开发语言·javascript·数据库·elasticsearch·搜索引擎·全文检索
ThomasChan12330 分钟前
Win10 安装单机版ES(elasticsearch),整合IK分词器和安装Kibana
java·大数据·elasticsearch·搜索引擎·全文检索·jenkins·es
令狐少侠20111 小时前
elasticsearch之记录es7.17升级8.17 springboot2.7.0 程序改造坑
大数据·elasticsearch·jenkins
源码技术栈11 小时前
SaaS基于云计算、大数据的Java云HIS平台信息化系统源码
java·大数据·云计算·云his·his系统·云医院·区域his
Elastic 中国社区官方博客11 小时前
Elasticsearch 索引副本数
大数据·数据库·elasticsearch·搜索引擎·全文检索
Eternity......11 小时前
SparkSQL基本操作
大数据·spark
2685725911 小时前
Elasticsearch 初步认识
大数据·elasticsearch·搜索引擎·全文检索·es
python算法(魔法师版)11 小时前
网络编程入门(一)
大数据·网络·网络协议·计算机网络
caihuayuan513 小时前
生产模式下react项目报错minified react error #130的问题
java·大数据·spring boot·后端·课程设计
兔子坨坨13 小时前
详细了解HDFS
大数据·hadoop·hdfs·big data