Windows上使用CentOS部署HA大数据环境

2022-11-14 14:56:34 浏览数 (1)

前言

本地安装了Docker和VMware后,无法同时启动。

因为Docker和VMware都相当于Hypervisor,并且基于虚拟机属性需要获取对CPU等硬件的掌控权,因为在同一台机器上无法同时运行。

使用”添加或删除Windows组件“图形界面程序,在里面取消勾选Hyper-V。

取消之后要重启电脑,否则不生效。

注意

其他环境的高可用集群前提是Zookeeper的集群

本文所有的大数据软件都放在了下面的文件夹中

/data/tools/bigdata

服务器准备至少3台

代码语言:javascript复制
192.168.160.101(hadoop01)
192.168.160.102(hadoop02)
192.168.160.103(hadoop03)

Taier

文档:https://dtstack.github.io/Taier/docs/guides/introduction/

视频:https://www.bilibili.com/video/BV13L4y1L71w/

源码:https://github.com/DTStack/Taier

安装JDK

官方下载JDK 网址

或者 链接:https://pan.baidu.com/s/1JdPCMMEq178hXV5V4Ild3Q 密码:03l1

比如下载的文件为jdk-8u221-linux-x64.rpm

更改文件权限

代码语言:javascript复制
chmod 755 jdk-8u221-linux-x64.rpm

安装

代码语言:javascript复制
rpm -ivh jdk-8u221-linux-x64.rpm

安装后的路径为/usr/java/jdk1.8.0_221-amd64

删除文件

代码语言:javascript复制
rm -rf jdk-8u221-linux-x64.rpm

查询Java版本

代码语言:javascript复制
java -version

查看JAVA_HOME

代码语言:javascript复制
echo $JAVA_HOME

添加环境变量

代码语言:javascript复制
cd /etc/profile.d/

创建配置文件

代码语言:javascript复制
vi /etc/profile.d/jdk.sh

加入:

代码语言:javascript复制
export JAVA_HOME=/usr/java/jdk1.8.0_221-amd64 
export PATH=$JAVA_HOME/bin:$PATH   
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

配置立即生效

代码语言:javascript复制
source /etc/profile

查询java版本

代码语言:javascript复制
java -version

查看java-home

代码语言:javascript复制
echo $JAVA_HOME

Zookeeper集群

集群最少为3个。

安装Zookeeper

kafka依赖zookeeper,安装包内已内置 使用内置的可以跳过该步骤

也可自己单独下载

https://zookeeper.apache.org/releases.html#download

我这里下载的是apache-zookeeper-3.7.1-bin.tar.gz

解压

代码语言:javascript复制
tar -zxvf apache-zookeeper-3.7.1-bin.tar.gz -C /data/tools/bigdata/
cd /data/tools/bigdata/apache-zookeeper-3.7.1-bin

配置环境变量

添加环境变量

代码语言:javascript复制
cd /etc/profile.d/

创建配置文件

代码语言:javascript复制
vi /etc/profile.d/zk.sh

加入:

代码语言:javascript复制
export ZK_HOME=/data/tools/bigdata/apache-zookeeper-3.7.1-bin 
export PATH=$ZK_HOME/bin:$PATH

配置立即生效

代码语言:javascript复制
source /etc/profile

查看ZK_HOME

代码语言:javascript复制
echo $ZK_HOME

配置修改

conf配置目录下的zoo_sample.cfg修改为zoo.cfg

修改

代码语言:javascript复制
dataDir=/data/tools/bigdata/zdata/zk_data
dataLogDir=/data/tools/bigdata/zdata/zk_logs

添加

代码语言:javascript复制
# server.1 这个1是服务器的标识,可以是任意有效数字,标识这是第几个服务器节点,这个标识要写到dataDir目录下面myid文件里
# 指名集群间通讯端口和选举端口
server.1=hadoop01:2888:3888
server.2=hadoop02:2888:3888
server.3=hadoop03:2888:3888

创建目录

代码语言:javascript复制
mkdir -p /data/tools/bigdata/zdata/zk_data
mkdir -p /data/tools/bigdata/zdata/zk_logs

另两台创建目录

代码语言:javascript复制
ssh hadoop02 "mkdir -p /data/tools/bigdata/zdata/zk_data"
ssh hadoop02 "mkdir -p /data/tools/bigdata/zdata/zk_logs"
ssh hadoop03 "mkdir -p /data/tools/bigdata/zdata/zk_data"
ssh hadoop03 "mkdir -p /data/tools/bigdata/zdata/zk_logs"

分别在三台主机的 dataDir 目录下新建 myid 文件,并写入对应的节点标识。Zookeeper 集群通过 myid 文件识别集群节点,并通过上文配置的节点通信端口和选举端口来进行节点通信,选举出 Leader 节点。

创建并写入节点标识到 myid 文件:

代码语言:javascript复制
ssh hadoop01 "echo 1 > /data/tools/bigdata/zdata/zk_data/myid"
ssh hadoop02 "echo 2 > /data/tools/bigdata/zdata/zk_data/myid"
ssh hadoop03 "echo 3 > /data/tools/bigdata/zdata/zk_data/myid"

配置分发

代码语言:javascript复制
distribution.sh $HADOOP_HOME

启动ZK

启动ZK

代码语言:javascript复制
bash $ZK_HOME/bin/zkServer.sh start

查看状态

代码语言:javascript复制
zkServer.sh status

或者

用自定义脚本

代码语言:javascript复制
ha-zk.sh start
ha-zk.sh status

全部启动成功后我们可以看到

1个leader,2个follower,就说明集群配置成功了。

访问

进入

代码语言:javascript复制
bash $ZK_HOME/bin/zkCli.sh

输入命令

代码语言:javascript复制
#查看zk的根目录kafka相关节点
ls / 
#查看kafka节点
ls /brokers
ls /brokers/topics  

create /zk "test"
set /zk "zkbak"
get /zk

使用到的端口

搭建集群时配置文件zoo.cfg中会出现这样的配置

代码语言:javascript复制
clientPort=2181
server.1=hadoop01:2888:3888
server.2=hadoop02:2888:3888
server.3=hadoop03:2888:3888

其中

  • 2181:Client使用
  • 2888:集群内部通讯使用(Leader监听此端口)
  • 3888:选举Leader使用

Hadoop集群

下载

https://archive.apache.org/dist/hadoop/common/hadoop-2.7.7/

解压

代码语言:javascript复制
tar -zxvf hadoop-2.7.7.tar.gz -C /data/tools/bigdata/
cd /data/tools/bigdata/hadoop-2.7.7

配置环境变量

代码语言:javascript复制
cd /etc/profile.d/

创建配置文件

代码语言:javascript复制
vi /etc/profile.d/hadoop.sh

内容设置为

代码语言:javascript复制
#HADOOP_HOME
export HADOOP_HOME=/data/tools/bigdata/hadoop-2.7.7
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

配置生效

代码语言:javascript复制
source /etc/profile

查看是否生效

代码语言:javascript复制
echo $HADOOP_HOME

添加文件夹

代码语言:javascript复制
mkdir -p /data/tools/bigdata/zdata/hadoop/tmp
mkdir -p /data/tools/bigdata/zdata/hadoop/dfs/journalnode_data
mkdir -p /data/tools/bigdata/zdata/hadoop/dfs/edits
mkdir -p /data/tools/bigdata/zdata/hadoop/dfs/datanode_data
mkdir -p /data/tools/bigdata/zdata/hadoop/dfs/namenode_data

修改配置文件

进入配置文件目录

代码语言:javascript复制
cd $HADOOP_HOME/etc/hadoop

core-site.xml

代码语言:javascript复制
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
    <property>
        <!--指定hadoop集群在zookeeper上注册的节点名-->
        <name>fs.defaultFS</name>
        <value>hdfs://hacluster</value>
    </property>  
    <property>
        <!--用来指定hadoop运行时产生文件的存放目录-->   
        <name>hadoop.tmp.dir</name>
        <value>file:///data/tools/bigdata/zdata/hadoop/tmp</value>
    </property>
    <property>
        <!--设置缓存大小,默认4kb-->
        <name>io.file.buffer.size</name>
        <value>4096</value>
    </property>
    <property>
        <!--指定zookeeper的存放地址 -->
        <name>ha.zookeeper.quorum</name>
        <value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value>
    </property>
</configuration>

hdfs-site.xml

代码语言:javascript复制
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
    <property>
        <!--数据块默认大小128M-->
        <name>dfs.block.size</name>
        <value>134217728</value>
    </property>
    <property>
        <!--副本数量,不配置的话默认为3-->
        <name>dfs.replication</name> 
        <value>3</value>
    </property>
    <property>
        <!--namenode节点数据(元数据)的存放位置-->
        <name>dfs.name.dir</name> 
        <value>file:///data/tools/bigdata/zdata/hadoop/dfs/namenode_data</value>
    </property>
    <property>
        <!--datanode节点数据(元数据)的存放位置-->
        <name>dfs.data.dir</name> 
        <value>file:///data/tools/bigdata/zdata/hadoop/dfs/datanode_data</value>
    </property>
    <property>
        <name>dfs.webhdfs.enabled</name>
        <value>true</value>
    </property>
    <property>
        <name>dfs.datanode.max.transfer.threads</name>
        <value>4096</value>
        </property>
    <property>
        <!--指定hadoop集群在zookeeper上注册的节点名-->
        <name>dfs.nameservices</name>
        <value>hacluster</value>
    </property>
    <property>
        <!-- hacluster集群下有两个namenode,分别为nn1,nn2 -->
        <name>dfs.ha.namenodes.hacluster</name>
        <value>nn1,nn2</value>
    </property>
    <!-- nn1的rpc、servicepc和http通信 -->
    <property>
        <name>dfs.namenode.rpc-address.hacluster.nn1</name>
        <value>hadoop01:9000</value>
    </property> 
    <property>
        <name>dfs.namenode.servicepc-address.hacluster.nn1</name>
        <value>hadoop01:53310</value>
    </property>
    <property>
        <name>dfs.namenode.http-address.hacluster.nn1</name> 
        <value>hadoop01:50070</value>
    </property>
    <!-- nn2的rpc、servicepc和http通信 -->
    <property>
        <name>dfs.namenode.rpc-address.hacluster.nn2</name>
        <value>hadoop02:9000</value>
    </property>
    <property>
        <name>dfs.namenode.servicepc-address.hacluster.nn2</name>
        <value>hadoop02:53310</value>
    </property>
    <property>
        <name>dfs.namenode.http-address.hacluster.nn2</name>
        <value>hadoop02:50070</value>
    </property>
    <property>
        <!-- 指定namenode的元数据在JournalNode上存放的位置 -->
        <name>dfs.namenode.shared.edits.dir</name>
        <value>qjournal://hadoop01:8485;hadoop02:8485;hadoop03:8485/hacluster</value>
    </property>
    <property>
        <!-- 指定JournalNode在本地磁盘存放数据的位置 -->
        <name>dfs.journalnode.edits.dir</name>
        <value>/data/tools/bigdata/zdata/hadoop/dfs/journalnode_data</value>
    </property>
    <property>
        <!-- namenode操作日志的存放位置 -->
        <name>dfs.namenode.edits.dir</name>
        <value>/data/tools/bigdata/zdata/hadoop/dfs/edits</value>
    </property>
    <property>
        <!-- 开启namenode故障转移自动切换 -->
        <name>dfs.ha.automatic-failover.enabled</name>
        <value>true</value> 
    </property>
    <property>
        <!-- 配置失败自动切换实现方式 -->
        <name>dfs.client.failover.proxy.provider.hacluster</name>
            <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    </property>    
    <property>
        <!-- 配置隔离机制 -->
        <name>dfs.ha.fencing.methods</name>
        <value>sshfence</value>
    </property>
    <property>
        <!-- 使用隔离机制需要SSH免密登录 -->
        <name>dfs.ha.fencing.ssh.private-key-files</name>
        <value>/root/.ssh/id_rsa</value>
    </property>
    <property>
        <!--hdfs文件操作权限,false为不验证-->
        <name>dfs.permissions</name> 
        <value>false</value>
    </property>
</configuration>

mapred-site.xml

mapred-site.xml.template 重命名为 mapred-site.xml

代码语言:javascript复制
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
    <property>  
        <!--指定mapreduce运行在yarn上-->
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property>
        <!--配置任务历史服务器地址-->
        <name>mapreduce.jobhistory.address</name>
        <value>hadoop01:10020</value>
    </property>
    <property>
        <!--配置任务历史服务器web-UI地址-->
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>hadoop01:19888</value>
    </property>
    <property>
        <!--开启uber模式-->
        <name>mapreduce.job.ubertask.enable</name>
        <value>true</value>
    </property>
</configuration>

yarn-site.xml

代码语言:javascript复制
<?xml version="1.0"?>
<configuration>
    <property>
        <!-- 开启Yarn高可用 -->
        <name>yarn.resourcemanager.ha.enabled</name>
        <value>true</value>
    </property>
    <property>
        <!-- 指定Yarn集群在zookeeper上注册的节点名 -->
        <name>yarn.resourcemanager.cluster-id</name>
        <value>hayarn</value>
    </property>
    <property>
        <!-- 指定两个ResourceManager的名称 -->
        <name>yarn.resourcemanager.ha.rm-ids</name>
        <value>rm1,rm2</value>
    </property> 
    <property>
        <!-- 指定rm1的主机 -->
        <name>yarn.resourcemanager.hostname.rm1</name>
        <value>hadoop02</value>
    </property>              
    <property>
        <!-- 指定rm2的主机 -->
        <name>yarn.resourcemanager.hostname.rm2</name>
        <value>hadoop03</value>
    </property> 
    <property>
        <!-- 配置zookeeper的地址 -->
        <name>yarn.resourcemanager.zk-address</name>
        <value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value>
    </property>    
    <property>
        <!-- 开启Yarn恢复机制 -->
        <name>yarn.resourcemanager.recovery.enabled</name>
        <value>true</value>
    </property> 
    <property>
        <!-- 配置执行ResourceManager恢复机制实现类 -->
        <name>yarn.resourcemanager.store.class</name>
            <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
    </property>
    <property>
        <!--指定主resourcemanager的地址-->
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop03</value>
    </property>
    <property>
        <!--NodeManager获取数据的方式-->
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <!--开启日志聚集功能-->
        <name>yarn.log-aggregation-enable</name>
        <value>true</value>
    </property>
    <property>
        <!--配置日志保留7天-->
        <name>yarn.log-aggregation.retain-seconds</name>
        <value>604800</value>
    </property>
</configuration>

slaves

代码语言:javascript复制
hadoop01
hadoop02
hadoop03

log4j.properties

剔除警告(可选):

添加

代码语言:javascript复制
log4j.logger.org.apache.hadoop.util.NativeCodeLoader=ERROR

配置分发

代码语言:javascript复制
distribution.sh $HADOOP_HOME

初始化集群

只用执行一次

(1). 启动3个Zookeeper

代码语言:javascript复制
ssh hadoop01 "zkServer.sh start"
ssh hadoop02 "zkServer.sh start"
ssh hadoop03 "zkServer.sh start"

(2). 启动3个JournalNode

JournalNode的作用:NameNode之间共享数据

代码语言:javascript复制
ssh hadoop01 "hadoop-daemon.sh start journalnode"
ssh hadoop02 "hadoop-daemon.sh start journalnode"
ssh hadoop03 "hadoop-daemon.sh start journalnode"

(3). 格式化NameNode

仅hadoop01

代码语言:javascript复制
sudo chmod -R 755 $HADOOP_HOME

rm -rf $HADOOP_HOME/tmp
hdfs namenode -format

这个操作主要是创建fsimage和edits文件。

只要看到信息中有一句关键:

INFO common.Storage: Storage directory /data/tools/bigdata/zdata/dfs/name has been successfully formatted.

则格式化成功.

(4). 复制hadoop01上的NameNode的元数据到hadoop02

代码语言:javascript复制
scp -r /data/tools/bigdata/zdata/hadoop/dfs/namenode_data/current root@hadoop02:/data/tools/bigdata/zdata/hadoop/dfs/namenode_data/

(5). 在NameNode节点(hadoop01或hadoop02)格式化zkfc

代码语言:javascript复制
# 【二者选其一即可】
ssh hadoop01 "hdfs zkfc -formatZK"
# 或
ssh hadoop02 "hdfs zkfc -formatZK"

(6). 停止3个JournalNode

JournalNode的作用:NameNode之间共享数据

代码语言:javascript复制
ssh hadoop01 "hadoop-daemon.sh stop journalnode"
ssh hadoop02 "hadoop-daemon.sh stop journalnode"
ssh hadoop03 "hadoop-daemon.sh stop journalnode"

启动集群

(1). 在hadoop01上启动HDFS相关服务

代码语言:javascript复制
ssh hadoop01 "start-dfs.sh"

对应日志

代码语言:javascript复制
Starting namenodes on [hadoop01 hadoop02]
hadoop01: starting namenode, logging to /data/tools/bigdata/hadoop-2.7.7/logs/hadoop-root-namenode-hadoop01.out
hadoop02: starting namenode, logging to /data/tools/bigdata/hadoop-2.7.7/logs/hadoop-root-namenode-hadoop02.out
localhost: starting datanode, logging to /data/tools/bigdata/hadoop-2.7.7/logs/hadoop-root-datanode-hadoop01.out
Starting journal nodes [hadoop01 hadoop02 hadoop03]
hadoop03: starting journalnode, logging to /data/tools/bigdata/hadoop-2.7.7/logs/hadoop-root-journalnode-hadoop03.out
hadoop02: starting journalnode, logging to /data/tools/bigdata/hadoop-2.7.7/logs/hadoop-root-journalnode-hadoop02.out
hadoop01: starting journalnode, logging to /data/tools/bigdata/hadoop-2.7.7/logs/hadoop-root-journalnode-hadoop01.out
Starting ZK Failover Controllers on NN hosts [hadoop01 hadoop02]
hadoop02: starting zkfc, logging to /data/tools/bigdata/hadoop-2.7.7/logs/hadoop-root-zkfc-hadoop02.out
hadoop01: starting zkfc, logging to /data/tools/bigdata/hadoop-2.7.7/logs/hadoop-root-zkfc-hadoop01.out

(2). 在hadoop03上启动YARN相关服务

代码语言:javascript复制
ssh hadoop03 "start-yarn.sh"

(3). 最后单独启动hadoop01的历史任务服务器和hadoop02的ResourceManager

代码语言:javascript复制
ssh hadoop01 "mr-jobhistory-daemon.sh start historyserver"
ssh hadoop02 "yarn-daemon.sh start resourcemanager"

或者

用自定义脚本

代码语言:javascript复制
ha-hadoop.sh start
ha-hadoop.sh status
ha-hadoop.sh stop

查看集群

代码语言:javascript复制
[root@hadoop01 ~]$ jps
8227 QuorumPeerMain
8916 DataNode
8663 JournalNode
8791 NameNode
9035 DFSZKFailoverController
11048 JobHistoryServer
9147 NodeManager
9260 Jps

[root@hadoop02 ~]$ jps
7538 QuorumPeerMain
8214 NodeManager
7802 JournalNode
8010 DataNode
8122 DFSZKFailoverController
8346 ResourceManager
8395 Jps
7916 NameNode

[root@hadoop03 ~]$ jps
8897 Jps
8343 DataNode
8472 ResourceManager
8249 JournalNode
7994 QuorumPeerMain
8575 NodeManager

【查看NameNode的状态】

代码语言:javascript复制
[root@hadoop01 ~]$ hdfs haadmin -getServiceState nn1
active
[root@hadoop01 ~]$ hdfs haadmin -getServiceState nn2
standby

【查看ResourceManager的状态】

代码语言:javascript复制
[root@hadoop03 ~]$ yarn rmadmin -getServiceState rm1
standby
[root@hadoop03 ~]$ yarn rmadmin -getServiceState rm2
active

访问

我的服务器的IP为 192.168.160.101

HDFS监控页面查询:

http://192.168.160.101:50070/

查看文件可以访问这个地址

http://192.168.160.101:50070/explorer.html#/

Yarn监控页面查询:

http://192.168.160.102:8088/cluster

停止

代码语言:javascript复制
bash $HADOOP_HOME/sbin/stop-all.sh

报错解决

ssh: connect to host localhost port 22: Connection refused

解决方法: 确定安装ssh:

包含了SSH服务 sudo apt-get install openssh-server 和客户端 sudo apt-get install openssh-client

代码语言:javascript复制
sudo apt-get install ssh

启动sshd:

代码语言:javascript复制
sudo service ssh start

检验方法:

代码语言:javascript复制
ssh hadoop01

又报错

Permission denied (publickey).

允许ssh密码登录权限

登录目标机器,打开

代码语言:javascript复制
vi /etc/ssh/sshd_config

修改PasswordAuthentication no为:PasswordAuthentication yes

允许root登录

代码语言:javascript复制
PermitRootLogin yes

然后重启服务。

代码语言:javascript复制
service ssh restart

Flink

默认情况下,每个 Flink 集群只有一个 JobManager,这将导致单点故障(SPOF),如果这个 JobManager 挂了,则不能提交新的任务,并且运行中的程序也会失败。使用JobManager HA,集群可以从 JobManager 故障中恢复,从而避免单点故障。

用户可以在Standalone 或 Flink on Yarn 集群模式下配置 Flink 集群 HA(高可用性)。 Flink 的HA需要Zookeeper和HDFS,因此首先要安装启动 zk、hdfs。

下载

下载地址

https://archive.apache.org/dist/flink/

这里下载1.12.7版本

https://archive.apache.org/dist/flink/flink-1.12.7/

https://archive.apache.org/dist/flink/flink-1.12.7/flink-1.12.7-bin-scala_2.12.tgz

解压

代码语言:javascript复制
tar zxvf flink-1.12.7-bin-scala_2.12.gz -C /data/tools/bigdata/

配置环境变量

代码语言:javascript复制
cd /etc/profile.d/

创建配置文件

代码语言:javascript复制
vi /etc/profile.d/flink.sh

内容设置为

代码语言:javascript复制
#FLINK_HOME
export FLINK_HOME=/data/tools/bigdata/flink-1.12.7
export PATH=$PATH:$FLINK_HOME/bin

配置生效

代码语言:javascript复制
source /etc/profile

查看是否生效

代码语言:javascript复制
echo $FLINK_HOME

修改配置

修改flink/conf/

  • flink-conf.yaml
  • masters
  • workers

flink-conf.yaml

代码语言:javascript复制
# 配置使用zookeeper来开启高可用模式
high-availability: zookeeper
# 配置zookeeper的地址,采用zookeeper集群时,可以使用逗号来分隔多个节点地址
high-availability.zookeeper.quorum: hadoop01:2181,hadoop02:2181,hadoop03:2181
# 在zookeeper上存储flink集群元信息的路径
high-availability.zookeeper.path.root: /ha-flink
# 持久化存储JobManager元数据的地址,zookeeper上存储的只是指向该元数据的指针信息
high-availability.storageDir: hdfs://hacluster:8020/flink/recovery

# 下面的可以不用配置
# 将已完成的作业上传到此目录中,让任务历史服务器进行监控
jobmanager.archive.fs.dir: hdfs://hacluster:8020/flink-jobhistory
historyserver.web.address: hadoop01
historyserver.web.port: 8082
# 任务历史服务器监控目录中已存档的作业
historyserver.archive.fs.dir: hdfs://hacluster:8020/flink-jobhistory
historyserver.web.refresh-interval: 10000

masters

代码语言:javascript复制
hadoop01:8081
hadoop02:8081

workers

代码语言:javascript复制
hadoop01
hadoop02
hadoop03

zoo.cfg,将内容修改为:

代码语言:javascript复制
server.1=hadoop01:2888:3888
server.2=hadoop02:2888:3888
server.3=hadoop03:2888:3888

作业归档需要记录在hdfs上,但是当前版本的flink把hadoop的一些依赖删除了,需要手动将jar包放到lib目录下 ,这里我用的是

https://repo.maven.apache.org/maven2/org/apache/flink/flink-shaded-hadoop-2-uber/

下载地址

https://repo.maven.apache.org/maven2/org/apache/flink/flink-shaded-hadoop-2-uber/2.7.5-10.0/flink-shaded-hadoop-2-uber-2.7.5-10.0.jar

配置分发

代码语言:javascript复制
distribution.sh $FLINK_HOME

创建所需目录

代码语言:javascript复制
hadoop fs -mkdir /flink
hadoop fs -mkdir /flink-jobhistory

如果创建错误 删除

代码语言:javascript复制
hadoop fs -rm -r /flink
hadoop fs -rm -r /flink-jobhistory

启动/停止

启动

代码语言:javascript复制
bash $FLINK_HOME/bin/start-cluster.sh
bash $FLINK_HOME/bin/historyserver.sh start

停止

代码语言:javascript复制
bash $FLINK_HOME/bin/stop-cluster.sh
bash $FLINK_HOME/bin/historyserver.sh stop

或者

用自定义脚本

代码语言:javascript复制
ha-flink.sh start
ha-flink.sh status
ha-flink.sh stop

访问

Flink有个UI界面,可以用于监控Flilnk的job运行状态 http://192.168.160.101:8081/

任务历史

http://192.168.160.101:8082/

Docker

数据同步

Mysql

代码语言:javascript复制
jdbc:mysql://hadoop01:3306/ztest?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&rewriteBatchedStatements=true&allowMultiQueries=true

允许远程登录

代码语言:javascript复制
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'psvmc123' WITH GRANT OPTION;
FLUSH PRIVILEGES; 
quit

设置密码永不过期

代码语言:javascript复制
ALTER USER 'root'@'%' PASSWORD EXPIRE NEVER;
flush privileges;

0 人点赞