Ubuntu环境下配置Flink

注:操作系统为Ubuntu 20.04.6;Java版本为8;Flink版本为Flink 1.16.2。

1 本地启动配置

1.1 JAVA环境配置

  1. 输入javac可查看安装提示信息。
  2. 使用命令sudo apt install openjdk-8-jdk-headless安装JDK
  3. 配置环境变量。使用sudo vim /etc/profile打开profile文件,按按键i,输入以下内容,依次按按键w、q保存并退出。然后输入命令source /etc/profile使修改生效。
    export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
    export JRE_HOME=$JAVA_HOME/jre
    export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
    export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
    

1.2 Flink配置

  1. 进入Flink官网下载安装包,如flink-1.16.2-bin-scala_2.12.tgz。

  2. 解压安装包。进入安装包所在文件夹打开终端,输入命令sudo tar -zxvf flink-1.16.2-bin-scala_2.12.tgz -C /opt/module/,位置可做修改。
    可通过命令chmod -R 777 flink-1.16.2递归修改文件权限。
    若没有文件夹,可使用sudo mkdir /opt/module/创建。解压完毕后,可进入解压后的目录的bin目录中,并可使用以下命令:

    # 启动集群
    bash start-cluster.sh
    # 关闭集群
    bash stop-cluster.sh
    

    若报出下面错误,原因是压缩包在上传的时候没有上传完整,需要重新上传一下。

    gzip: stdin: unexpected end of file
    tar: 归档文件中异常的 EOF
    tar: 归档文件中异常的 EOF
    tar: Error is not recoverable: exiting now
    
  3. 为了方便,可配置环境变量,即使用命令sudo vim /etc/bash.bashrc在/etc/bash.bashrc中写入以下内容。然后输入命令source /etc/bash.bashrc使修改生效。 然后就可以直接使用start-cluster.shstop-cluster.sh来启动或关闭集群。若提示权限不够,可使用sudo su切换为root用户。

    export FLINK_HOME=/opt/module/flink-1.16.2
    export PATH=$FLINK_HOME/bin:$PATH
    
  4. 启动成功后,可访问http://localhost:8081,对Flink集群和任务进行监控管理。

2 集群启动配置

2.1 集群环境配置

  1. 准备好多个虚拟机,可直接用克隆功能。
  2. 设置静态IP。
    • 输入命令route -n打印路由表,可以查看网关地址。
    • 图形界面操作:点击右上角倒三角\有线\有线设置\齿轮、IPv4,修改如下。
      Ubuntu环境下配置Flink_第1张图片
      可以直接点击开关按钮,关闭再打开,修改就生效了。
    • 命令行界面操作:还没研究。
  3. 准备主机名映射。
    在Ubuntu的/etc/hosts文件中,填入如下内容。也可以在Windows的C:\Windows\System32\drivers\etc\hosts文件中填写相同内容。
    192.168.88.131 node1
    192.168.88.132 node2
    192.168.88.133 node3
    
  4. 配置SSH免密登录。
    • 安装openssh-server,命令为sudo apt install openssh-server
      检查服务器运行状态,命令为service ssh statussudo systemctl status ssh
      若未运行,使用命令sudo systemctl enable --now ssh运行。
    • 开启root的ssh权限。
      (可使用sudo passwd root修改root密码。)
      修改/etc/ssh/sshd_config文件,在#PermitRootLogin prohibit-password下添加PermitRootLogin yes
      运行命令systemctl restart sshd使修改生效。
    • 生成密钥,命令为ssh-keygen(需要输入三次回车。)
      把公钥给其他设备公钥,相互都要给一遍,命令如ssh-copy-id root@node1
      测试。使用命令ssh root@node1,若不需要输入密码就是成功了。然后使用exit退出。
  5. 关闭防火墙和SELinux。
    • 关闭防火墙命令如下。
      systemctl stop firewalld
      systemctl disable firewalld
      
      可使用命令systemctl status firewalld查看防火墙状态。
    • 关闭SELinux命令如下。
      # 方法一:
      sudo vim /etc/selinux/config
      # 将SELINUX=enforcing改为SELINUX=disabled
      # 保存退出后,重启虚拟机即可,千万要注意disabled单词不要写错,不然无法启动系统
      # 方法二:
      setenforce 0
      

2.2 Flink配置

  1. 修改Flink目录下的conf/flink-conf.yaml文件,内容如下,指定了node1作为JobManager 节点。
    # JobManager 节点地址. 
    jobmanager.rpc.address: node1
    
    该文件还有其他配置,部分配置项如下:
    jobmanager.heap.size: 1024m  # JobManager JVM heap 内存大小
    taskmanager.heap.size: 1024m  # TaskManager JVM heap 内存大小
    taskmanager.numberOfTaskSlots: 2  # 每个 TaskManager 提供的任务 slots 数量大小
    taskmanager.memory.preallocate: false  #是否进行预分配内存,默认不进行预分配,这样在我们不使用flink集群时候不会占用集群资源
    parallelism.default: 1  # 程序默认并行计算的个数
    jobmanager.web.port: 8081  # JobManager的Web界面的端口(默认:8081)
    rest.bind-address: 0.0.0.0  # 0.0.0.0为允许其他设备访问Web UI
    
    参考配置:
    jobmanager.rpc.address: node1
    jobmanager.rpc.port: 6123
    jobmanager.bind-host: 0.0.0.0
    jobmanager.memory.process.size: 1600m
    
    taskmanager.bind-host: 0.0.0.0
    taskmanager.host: localhost
    taskmanager.memory.process.size: 1728m
    taskmanager.numberOfTaskSlots: 2
    
    parallelism.default: 1
    
    jobmanager.execution.failover-strategy: region
    
    rest.address: 0.0.0.0
    rest.bind-address: 0.0.0.0
    
  2. 修改conf/workers文件,内容如下,指定了node2和node3为 TaskManager 节点。
node2
node3
  1. 配置修改完毕后,将 Flink 安装目录发给其他节点服务器,命令如scp -r /opt/module/flink-1.16.2 root@node2:/opt/module/
  2. 在node1下,执行bin/start-cluster.sh文件即可启动集群。得到以下信息。
Starting cluster.
Starting standalonesession daemon on host node1.
Starting taskexecutor daemon on host node2.
Starting taskexecutor daemon on host node3.
  1. 启动成功后,可访问http://localhost:8081,对Flink集群和任务进行监控管理。

3 提交任务

  1. 将编写的代码打成 jar 包。
    可以引入插件 maven-assembly-plugin 进行打包。 在maven项目的 pom.xml 文件中添加打包插件的配置,具体如下。
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.pluginsgroupId>
                <artifactId>maven-assembly-pluginartifactId>
                <version>3.0.0version>
                <configuration>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependenciesdescriptorRef>
                    descriptorRefs>
                configuration>
                <executions>
                    <execution>
                        <id>make-assemblyid>
                        <phase>packagephase>
                        <goals>
                            <goal>singlegoal>
                        goals>
                    execution>
                executions>
            plugin>
        plugins>
    build>
    
    然后可以使用 IDEA 的 Maven 工具执行 package 命令进行打包。
  2. web UI界面:在右侧导航栏点击“Submit New Job”,然后点击按钮“+ Add New”,选择要上传运行的 jar 包。点击该 JAR 包,出现任务配置页面,进行相应配置。点击按钮“Submit”。
    命令行界面:使用命令示例:flink run -m node1:8081 -c org.example.WordCount /home/zpeng/My/FlinkStudy-1.0-SNAPSHOT-jar-with-dependencies.jar

你可能感兴趣的:(ubuntu,flink,linux,大数据)