前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Windows上使用CentOS部署HA大数据环境

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

作者头像
码客说
发布2022-11-14 14:56:34
1.6K0
发布2022-11-14 14:56:34
举报
文章被收录于专栏:码客

前言

本地安装了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,就说明集群配置成功了。

image-20221102192606506
image-20221102192606506

访问

进入

代码语言: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;
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-10-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 安装JDK
  • Zookeeper集群
    • 安装Zookeeper
      • 配置环境变量
        • 配置修改
          • 配置分发
            • 启动ZK
              • 访问
                • 使用到的端口
                • Hadoop集群
                  • 下载
                    • 配置环境变量
                      • 添加文件夹
                        • 修改配置文件
                          • core-site.xml
                          • hdfs-site.xml
                          • mapred-site.xml
                          • yarn-site.xml
                          • slaves
                          • log4j.properties
                        • 配置分发
                          • 初始化集群
                            • 启动集群
                              • 查看集群
                                • 访问
                                  • 报错解决
                                  • Flink
                                    • 下载
                                      • 配置环境变量
                                        • 修改配置
                                          • 配置分发
                                            • 创建所需目录
                                              • 启动/停止
                                                • 访问
                                                • Docker
                                                • 数据同步
                                                  • Mysql
                                                    • 允许远程登录
                                                    • 设置密码永不过期
                                                领券
                                                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档