Flink1.10集群环境搭建

Centos7下安装Flink1.10(Standalone模式)

1、配置ssh、root免密及关闭防火墙

关闭虚拟机,更改虚拟机名字为Hadoop01,创建完整克隆,分别命名为Hadoop02 Hadoop03

网络配置

问题记录:

重启网络服务:service network restart失败

Restarting network (via systemctl):  Job for network.service failed because the control process exited with error code. See "systemctl status network.service" and "journalctl -xe" for details.
                                                           [失败]

image-20210927120857121

1、首先,在VMware workstation的菜单 编辑 -> 虚拟网络编辑器,查看子网IP及DHCP

image-20210927121129545

配置的IP地址应该在起始地址和结束地址范围内。

image-20210927121152377

2、进入虚拟机,打开终端,输入ip addr

image-20210927122156557

查看文件列表 ls /etc/sysconfig/network-scripts

image-20210927122804259

3、输入vi /etc/sysconfig/network-scripts/ifcfg-ens33

sp20210927_124924_798

此处,三个虚拟机的网关都应与主机保持一致,在VMware workstation的菜单 编辑 -> 虚拟网络编辑器->NAT设置中查看,IP地址分别为:

Hadoop01 192.168.115.130

Hadoop02 192.168.115.140

Hadoop03 192.168.115.150

每个虚拟机的mak地址都是不同的,所以每次配置时都需要先查看ip addr。配置完成后,保存退出。

4、输入service network restart 重启网络服务。

image-20210927130042347

输入ip addr查看是否配置成功。

image-20210927131146975

使用电脑的命令提示行查看是否能ping通

按照上面的步骤,配置另外两个虚拟机的网络。配置完成后,检查是否能互相ping通。

192.168.115.130 ping 192.168.115.140、192.168.115.150

192.168.115.140 ping 192.168.115.130、192.168.115.150

至此,网络配置基本完成。

配置ssh

弯路走得有点多。。。

输入vi /etc/ssh/sshd_config,打开ssh配置文件

将 PermitRootLogin 和 PubkeyAuthentication 的设置打开。

输入systemctl restart sshd.service 启动ssh服务;

设置开机自动启动ssh服务systemctl enable sshd.service

。。。。。。。。

终于稿定。感谢快照,配好其中一台,另外两台如果出问题也可以克隆配好的那台,然后改个IP就好啦。。感觉这当中有很多坑。

image-20210927155513475

配置hosts

输入hostname查看当前主机名。

输入hostnamectl set-hostname xxx 修改主机名为hadoop01、hadoop02、hadoop03。

输入vi /etc/hosts打开文件,在最后一行加入:IP地址 主机名,如下:

image-20210927161525909

三台虚拟机都这样配,配置完成后,互相ping主机名进行验证。

image-20210927161823123

image-20210927161909422

关闭防火墙

输入systemctl status firewalld 查看防火墙状态

image-20210930111022147

使用systemctl stop firewalld关闭防火墙

image-20210930111210886

可以看到,此时防火墙已关闭。输入systemctl disable firewalld命令,即可永久关闭防火墙。

image-20210930111408457

关闭SELINUX

使用vi /etc/selinux/config编辑文件,将SELINUX=enfocing修改为disabled.

image-20210927163230694

配置ssh免密登陆

参考文档centos7 root用户下配置虚拟机的免密登录_赴前尘-CSDN博客

通过命令 ssh-keygen -t rsa 生成公钥和私钥,输入命令后直接按三次确认键就能看到下面输出界面。

image-20210927164720163

之后进入到.ssh文件夹下,就能看到生成的公钥id_rsa.pub和私钥文件id_rsa。hadoop02、hadoop03同样操作。

在Hadoop02上输入cat /root/.ssh/id_rsa.pub查看公钥内容,复制备用。

同样,在Hadoop03上,复制公钥内容备用。

  • 以下都是在hadoop01上执行的操作:

.ssh目录下执行 touch authorized_keys创建存放秘钥的文件。

image-20210927171513122

执行 cp id_rsa.pub authorized_keys 将公钥放进authorized_keys文件,可无密登录本机;

执行 chmod 644 authorized_keys 修改 authorized_keys 权限;

执行 sudo service sshd restart 重启ssh服务;

ssh hadoop01 命令测试本机免密登录,第一次需要输入 yes 下次就不用再输入了

输入echo '公钥' >> authorized_keys 将前面复制的Hadoop02、Hadoop03公钥内容写入authorized_keys中

分别执行

scp /root/.ssh/authorized_keys hadoop02:/root/.ssh

scp /root/.ssh/authorized_keys hadoop03:/root/.ssh

将hadoop01上的authorized_keys 分发给hadoop02,hadoop03(如果有需要输入yes的步骤,输入yes即可)

  • 以下都是在hadoop02上执行的操作

执行 cd /root/.ssh进入到.ssh目录下,chmod 644 authorized_keys修改 authorized_keys 权限

image-20210928095923226

  • 以下都是在hadoop03上执行的操作

执行 cd /root/.ssh进入到.ssh目录下,chmod 644 authorized_keys修改 authorized_keys 权限

image-20210928095944242

权限配置完成后,回到hadoop01,输入ssh hadoop02连接 hadoop02,exit退出连接;ssh hadoop03连接 hadoop03,exit退出连接。

image-20210928100228033

同样,在Hadoop02、Hadoop03进行测试。

至此, root用户下三台虚拟机互相免密登录配置完成。

2、Linux下安装jdk及环境配置

虚拟机设置如下,ios镜像使用的Centos7。

参考博客Linux系统下安装jdk及环境配置(两种方法) - 韦邦杠 - 博客园 (cnblogs.com)

从官网上Java Downloads | Oracle下载jdk-8u301-linux-x64.tar.gz。进入目录/usr,更改目录权限chmod -R 777 local

使用xftp将jdk压缩包传输到/usr/loacl目录下。进入/usr/local目录输入解压命令:tar zxvf jdk-8u301-linux-x64.tar.gz

配置环境变量:vi /etc/profile

export JAVA_HOME=/usr/local/jdk1.8.0_301
export CALSSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH

输入source /etc/profile刷新设置。

使用 javajavacjava -version 验证是否安装成功

image-20210929111605043

配置完成。传给另外两台虚拟机:

scp -r /usr/local/jdk1.8.0_301 root@hadoop02:/usr/local/

scp -r /usr/local/jdk1.8.0_301 root@hadoop03:/usr/local/

scp /etc/profile root@hadoop02:/etc/profile

scp /etc/profile root@hadoop03:/etc/profile

另外两台虚拟机刷新配置:source /etc/profile,输入java -version验证

image-20210929113026722

3、zookeeper分布式集群环境搭建

此处搭建zookeeper分布式集群是为搭建HA(高可用)-Hadoop集群环境做准备。因为后面搭建的并不是HA-Hadoop集群,所以此处可直接跳过。

从官网上下载apache-zookeeper-3.5.9-bin.tar.gz。

使用xftp将zookeeper压缩包传输到/usr/loacl目录下。进入/usr/local目录输入解压命令:tar -zxvf apache-zookeeper-3.5.9-bin.tar.gz

输入mv /usr/local/apache-zookeeper-3.5.9-bin /usr/local/zookeeper,将文件夹重命名

进入目录/usr/local/zookeeper/conf,将文件zoo_sample.cfg重命名为zoo.cfg:mv /usr/local/zookeeper/conf/zoo_sample.cfg /usr/local/zookeeper/conf/zoo.cfg

  • 配置zookeeper环境变量

vi /etc/profile

export ZOOKEEPER_HOME=/usr/local/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin

刷新配置文件source /etc/profileecho $ZOOKEEPER_HOME打印一下看能不能输出

  • 配置zoo.cfg

输入vi /usr/local/zookeeper/conf/zoo.cfg,添加以下内容:

dataDir=/usr/local/zookeeper/data
server.1=hadoop01:2888:3888
server.2=hadoop02:2888:3888
server.3=hadoop03:2888:3888

ZooKeeper 集群中, 每台服务器上的 zoo.cfg 配置文件内容一致

创建文件/usr/local/zookeeper/data/myid,并写入相应的id

mkdir /usr/local/zookeeper/data

echo 1 > /usr/local/zookeeper/data/myid

server.1 的 myid 文件内容就是 "1"。

每个服务器的 myid 内容都不同,且需要保证和自己的 zoo.cfg 配置文件中 "server.id=host:port:port" 的 id 值一致。

按照相同步骤,为 Hadoop02 和 Hadoop03 配置 zoo.cfg 和 myid 文件。zoo.cfg文件内容相同,Hadoop02 的 myid 文件内容为 2,Hadoop03 的 myid 文件内容为 3。

最后,在各机器上执行/usr/local/zookeeper/bin/zkServer.sh start来启动zookeeper集群,使用jps命令查看ZooKeeper的启动进程。

/usr/local/zookeeper/bin/zkServer.sh stop关闭zookeeper。

4、Hadoop分布式集群搭建

参考博客:

3台centos7上安装hadoop3.1.4_sndayYU的博客-CSDN博客

从官网下载hadoop-3.1.4.tar.gz,解压到/usr/local/hadoop目录下:进入/usr/local目录cd /usr/local,输入解压命令tar -zxvf hadoop-3.1.4.tar.gz,重命名文件夹mv /usr/local/hadoop-3.1.4 /usr/local/hadoop

修改5个配置文件

不一定以此为准,具体情况具体分析,建议多在网上找找相对应的配置文件

1、vi /usr/local/hadoop/etc/hadoop/hadoop-env.sh,第54行

export JAVA_HOME=/usr/local/jdk1.8.0_301

image-20210929113832461

2、修改/usr/local/hadoop/etc/hadoop/core-site.xml

vi /usr/local/hadoop/etc/hadoop/core-site.xml

<!--指定HADOOP所使用的文件系统schema(URI),HDFS的老大(NameNode)的地址-->
		<property>
   				<name>fs.defaultFS</name>
                <value>hdfs://hadoop01:9000</value>
         </property>
        <!--指定HADOOP运行时产生文件的存储目录-->
        <property>
                <name>hadoop.tmp.dir</name>
                <value>/usr/local/hadoop/data</value>
        </property>

3、修改/usr/local/hadoop/etc/hadoop/hdfs-site.xml

vi /usr/local/hadoop/etc/hadoop/hdfs-site.xml

		<property>
                <name>dfs.namenode.http-address</name>
                <value>hadoop01:9870</value>
        </property>
        <property>
                <name>dfs.namenode.secondary.http-address</name>
                <value>hadoop03:9868</value>
        </property>

4、修改/usr/local/hadoop/etc/hadoop/mapred-site.xml

vi /usr/local/hadoop/etc/hadoop/mapred-site.xml

<configuration>
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
</configuration>

5、修改/usr/local/hadoop/etc/hadoop/yarn-site.xml

vi /usr/local/hadoop/etc/hadoop/yarn-site.xml

		<property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
        <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>hadoop02</value>
        </property>
        <property>
                <name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>		
        </property>
        <!-- 设置虚拟内存更大些,默认2.1,即物理内存1G,虚拟内存2.1G -->
        <property>
                <name>yarn.nodemanager.vmem-pmem-ratio</name>
                <value>2.1</value>
        </property>

配置环境变量和workers

  • 配置workers

    输入vi /usr/local/hadoop/etc/hadoop/workers

hadoop01
hadoop02
hadoop03
  • 配置环境变量

    vi /etc/profile

export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

传到其它两台服务器

scp -r /usr/local/hadoop root@hadoop02:/usr/local/

scp -r /usr/local/hadoop root@hadoop03:/usr/local/

scp /etc/profile root@hadoop02:/etc/profile

scp /etc/profile root@hadoop03:/etc/profile

使配置环境变量生效:source /etc/profile

三台虚拟机启用参数,并进行验证:

hadoop version

image-20210928171813595

win10配置hosts

Windows下修改hosts文件,以管理员身份运行Windows PowerShell

输入notepad,打开记事本

在记事本中打开hosts

image-20210929091827568

配置非root用户的ssh免密登录

在启动集群时出现错误:

image-20210929133053899

原因是在非root用户下,未配置ssh免密登录。以下为配置方法:

进入.ssh目录cd ~/.ssh,通过命令 ssh-keygen -t rsa 生成公钥和私钥。hadoop02、hadoop03同样操作。

image-20210929133621329

进入.ssh目录,将hadoop01、hadoop02和hadoop03的公钥合并到authorized_key文件中。

cat id_rsa.pub>> authorized_keys
ssh Pluto@hadoop02 cat ~/.ssh/id_rsa.pub>> authorized_keys
ssh Pluto@hadoop03 cat ~/.ssh/id_rsa.pub>> authorized_keys

image-20210929134207763

将hadoop01上的authorized_keys、known_hosts文件传给hadoop02和hadoop03。

scp ~/.ssh/authorized_keys Pluto@hadoop02:~/.ssh/
scp ~/.ssh/authorized_keys Pluto@hadoop03:~/.ssh/
scp ~/.ssh/known_hosts Pluto@hadoop02:~/.ssh/
scp ~/.ssh/known_hosts Pluto@hadoop03:~/.ssh/

image-20210929135851631

最后,在三台虚拟机的~/.ssh目录下输入chmod 600 ~/.ssh/authorized_keys修改authorized_keysd文件的权限。

image-20210929140255107

此时,非root用户下的ssh免密登录配置完成。

image-20210929140446411

启动集群

若要在root模式下启动hadoop,需要进入hadoop的sbin目录下修改几个配置文件:

vi start-dfs.sh
添加:
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

vi stop-dfs.sh
添加:
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

vi start-yarn.sh
添加:
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

vi stop-yarn.sh
添加:
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

首次需要格式化磁盘。在hadoop01上,以非root用户进到/usr/local/hadoop目录下,输入hdfs namenode -format

[Pluto@hadoop01 hadoop]$ pwd
/usr/local/hadoop
[Pluto@hadoop01 hadoop]$ hdfs name -format

image-20210929143350205

输入指令:/usr/local/hadoop/sbin/start-dfs.sh

image-20210929143522450

如果有这样的报错信息:

image-20210929141613029

可以输入:sudo chown -R 你自己电脑的用户名 /usr/local/hadoop

在hadoop02上,以非root用户输入指令:/usr/local/hadoop/sbin/start-yarn.sh

image-20210929143901813

在hadoop03上进行验证,使用jps查看进程。

image-20210929145442239

[root@hadoop hadoop]# jps #显示以下几个进程说明启动成功
96662 Jps
95273 DataNode #可有可无
95465 SecondaryNameNode #重要
95144 NameNode #重要
95900 NodeManager #可有可无
95775 ResourceManager #非常重要

验证

  • 前端查看

在Hadoop01打开网页:hdaoop01:9870

image-20210929152321714

在Hadoop02打开网页:hdaoop02:8088

image-20210929152625296

  • 文件上传验证:

创建测试文件demo.txt

image-20210929153700516

随便写点什么

image-20210929153741839

上传文件

image-20210929154108668

检查上传的文件:

image-20210929154435187

可以看到正是我们上传的文件及内容

Snipaste_2021-09-29_15-47-23

#注意启动后验证完必须关掉
start-all.sh

#关闭
stop-all.sh

5、Flink集群环境(Standalone模式)搭建

前置准备:CentOS7、jdk1.8、hadoop-3.1.4、flink-1.10.3

计划:

  • 在130安装JobManager,150上安装第二个JobManager;
  • 在3台服务器上都安装TaskManager;

注:flink集群使用hadoop操作。

下载

image-20210930090423624

上传并解压

使用Hadoop用户,部署到/usr/local/hadoop/目录下。

image-20210930091830215

cd /usr/local/hadoop

解压:tar zxf flink-1.10.3-bin-scala_2.12.tgz

将 flink-shaded-hadoop-2-uber-2.8.3-10.0.jar 放到flink-1.10.3 /lib目录下:mv flink-shaded-hadoop-2-uber-2.8.3-10.0.jar flink-1.10.3/lib

image-20210930092406059

配置文件

cd /usr/local/hadoop/flink-1.10.3/conf

  • flink-conf.yaml

输入:vi flink-conf.yaml

添加下面内容:

jobmanager.rpc.address: hadoop01

image-20210930093727279

  • maters

输入:vi masters

添加内容:

hadoop01:8081
hadoop03:8081

image-20210930094351536

  • slaves

输入:vi slaves

添加内容:

hadoop01
hadoop02
hadoop03

image-20210930094903056

  • 复制到另外两台服务器

scp -r /usr/local/hadoop/flink-1.10.3 hadoop02:/usr/local/hadoop

scp -r /usr/local/hadoop/flink-1.10.3 hadoop03:/usr/local/hadoop

测试

启动hdfs:/usr/local/hadoop/sbin/start-dfs.sh

启动flink:/usr/local/hadoop/flink-1.10.3/bin/start-cluster.sh

使用jps查看进程:

image-20210930134245012

可以看到flink启动成功,打开浏览器,输入:hadoop01:8081

至此,Flink集群环境(Standalone模式)搭建成功。

posted @ 2021-09-30 15:27  萘汝  阅读(528)  评论(0编辑  收藏  举报
我发了疯似的祝你好!