WSL中Docker内Flink集群搭建
- 一、实验内容
- 二、实验环境
- 三、环境说明
- 四、实验步骤
- 实验问题
-
- 1.Timed out waiting for response from loggers
- 2.Zookeeper启动后自关闭
- 3.Operation category READ/WRITE is not supported in state standby解决案例
- 4.org.apache.flink.runtime.taskexecutor.exceptions.RegistrationTimeoutException: Could not register at the ResourceManager within the specified maximum registration duration 300000 ms. This indicates a problem with this instance. Terminating now.caused by : java.net.BindException: Address already in use
写在前面:
本实验开始之前,已经安装好Ubuntu内的docker,并拉取一个centos8镜像作为基础的镜像。
一、实验内容
在docker内搭建Flink集群。
二、实验环境
- 本机:win 10 专业版;
- WSL:Ubuntu 20.04 TS;
- docker:19.03
- Hadoop:2.7.4
- zookeeper:3.4.9
- Flink:1.7.2
三、环境说明
WSL是安装于windows中的linux系统,具体介绍安装请参考https://www.jianshu.com/p/6b02948b3d37
总体环境如下:
四、实验步骤
- flink版本的选择需要考虑hadoop的版本,本集群hadoop的版本为2.7.4,flink的版本为flink-1.7.2-bin-hadoop27-scala_2.11.tgz
- flink高可用集群需要依赖zookeeper
现在一个容器中配置好所有的环境,然后存为镜像,再分别启动三个容器,形成集群。
4.1 Java环境搭建
首先检验镜像内有无Java环境,经过检查并无Java配置。通过以下命令安装Java环境:
yum update
yum list java* #查看yum源的java包
yum install XXXXXXX #XXXXX为上条命令下查看到的java包
java -version #验证java环境
通常安装java 1.8即可。
使用yum安装之后, 再修改环境变量,修改.bashrc文件,追加jdk的路径。
export JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.272.b10-1.el8_2.x86_64
若是不知道Java的路径可以采用如下的方法进行查询:
因为用yum安装,实质上是用rpm安装,所以rpm查询信息的指令都可用。但是环境变量中的信息是在以jre开头的目录下,这点需要注意。修改环境变量之后,执行source ~/.bashrc
使环境变量生效。
使用命令java
,javac
都能正确执行命令,则java环境安装成功。
4.2 hadoop环境搭建
4.2.1 安装hadoop
进入 hadoop 目录,然后解压下载下来的 hadoop-2.7.4.tar.gz,修改 ~/.bashrc, 配置 hadoop 环境变量。
链接:https://pan.baidu.com/s/10vpKVkeIpDALfHO6zloLow
提取码:rwst
cd /root/soft/apache/hadoop
tar -xvzf hadoop-2.7.4.tar.gz
cd hadoop-2.7.4
mkdir tmp
cd tmp
mkdir dfs
cd dfs
mkdir data
mkdir name
vim ~/.bashrc
export HADOOP_HOME=/root/soft/apache/hadoop/hadoop-2.7.4
export HADOOP_CONFIG_HOME=$HADOOP_HOME/etc/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
source ~/.bashrc
使用hadoop version
命令查看hadoop是否安装完成
4.2.2 配置Hadoop
接下来进入hadoop/etc/hadoop目录下,hadoop的配置文件均在此目录下。
- core-site.xml
<property>
<name>hadoop.tmp.dir</name>
<value>/root/soft/apache/hadoop/hadoop-2.7.4/tmp</value>
<description>A base for other temporary directories.</description>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
<final>true</final>
<description>The name of the default file system. A URI whose scheme and authority determine the FileSystem implementation. The uri's scheme determines the config property (fs.SCHEME.impl) naming the FileSystem implementation class. The uri's authority is used to determine the host, port, etc. for a filesystem.</description>
</property>
<property>
<name>ha.zookeeper.quorum</name>
<value>master:2181,slave1:2181,slave2:2182</value>
</property>
<property>
<name>ipc.client.connect.max.retries</name>
<value>100</value>
<description>Indicates the number of retries a client will make to establish a server connection.</description>
</property>
<property>
<name>ipc.client.connect.retry.interval</name>
<value>10000</value>
<description>Indicates the number of milliseconds a client will wait for before retrying to establish a server connection.</description>
</property>
- hdfs-site.xml
<configuration>
<property>
<name>dfs.nameservices</name>
<value>ns1</value>
</property>
<property>
<name>dfs.ha.namenodes.ns1</name>
<value>nn1,nn2</value>
</property<