视点!大数据Flink进阶(九):集群基础环境搭建
来源:腾讯云     时间:2023-03-30 13:11:29

集群基础环境搭建

Flink可以运行在所有类unix环境中,例如:Linux,Mac OS 和Windows,一般企业中使用Flink基于的都是Linux环境,后期我们进行Flink搭建和其他框架整合也是基于linux环境,使用的是Centos7.6版本,JDK使用JDK8版本(Hive版本不支持JDK11,所以这里选择JDK8),本小节主要针对Flink集群使用到的基础环境进行配置,不再从零搭建Centos系统,另外对后续整合使用到的技术框架也一并进行搭建,如果你目前已经有对应的基础环境,可以忽略本小节,Linux及各个搭建组件使用版本如下表所示。


(资料图片)

系统或组件名称

版本

Centos

CentOS-7-x86_64-DVD-1810

JDK

jdk-8u181-linux-x64

MySQL

5.7.32

Zookeeper

3.6.3

HDFS

3.3.4

Hive

3.1.3

Hbase

2.5.1

Redis

6.2.7

Kafka

3.3.1

一、Centos7节点配置

这里准备5台Linux节点,节点名称和ip信息如下,我们可以从头搭建各个Linux节点也可以基于已有快照创建各个Linux节点。

节点IP

节点名称

192.168.179.4

node1

192.168.179.5

node2

192.168.179.6

node3

192.168.179.7

node4

192.168.179.8

node5

这里默认已经创建好以上各个节点,并且每个节点分配资源为4核2G,下面进行节点的其他配置。

1、配置各个节点的Ip

启动每台节点,在对应的节点路径"/etc/sysconfig/network-scripts"下配置ifg-ens33文件配置IP(注意,不同机器可能此文件名称不同,一般以ifcfg-xxx命名),以配置ip 192.168.179.4为例,ifcfg-ens33配置内容如下:

TYPE=EthernetBOOTPROTO=static     #使用static配置DEFROUTE=yesPEERDNS=yesPEERROUTES=yesIPV4_FAILURE_FATAL=noIPV6INIT=yesIPV6_AUTOCONF=yesIPV6_DEFROUTE=yesIPV6_PEERDNS=yesIPV6_PEERROUTES=yesIPV6_FAILURE_FATAL=noONBOOT=yes      #开机启用本配置IPADDR=192.168.179.4   #静态IPGATEWAY=192.168.179.2   #默认网关NETMASK=255.255.255.0   #子网掩码DNS1=192.168.179.2       #DNS配置 可以与默认网关相同

以上其他节点配置只需要修改对应的ip即可,配置完成后,在每个节点上执行如下命令重启网络服务:

systemctl restart network.service

检查每个节点ip执行如下命令:

ip addr

2、配置主机名

在每台节点上修改/etc/hostname,配置对应的主机名称,参照节点IP与节点名称对照表分别为:node1、node2、node3、node4、node5。配置完成后 需要重启各个节点,才能正常显示各个主机名。

3、关闭防火墙

执行如下命令确定各个节点上的防火墙开启情况,需要将各个节点上的防火墙关闭:

#检查防火墙状态firewall-cmd --state#临时关闭防火墙(重新开机后又会自动启动)systemctl stop firewalld 或者systemctl stop firewalld.service#设置开机不启动防火墙systemctl disable firewalld

4、关闭SELinux

SELinux就是Security-Enhanced Linux的简称,安全加强的linux。传统的linux权限是对文件和目录的owner, group和other的rwx进行控制,而SELinux采用的是委任式访问控制,也就是控制一个进程对具体文件系统上面的文件和目录的访问,SELinux规定了很多的规则,来决定哪个进程可以访问哪些文件和目录。虽然SELinux很好用,但是在多数情况我们还是将其关闭,因为在不了解其机制的情况下使用SELinux会导致软件安装或者应用部署失败。

在每台节点/etc/selinux/config中将SELINUX=enforcing改成SELINUX=disabled即可。

5、配置国内云yum源

后续为了方便在Linux节点上安装各个软件,我们将yum源改成国内yum源,这样下载软件速度快一些,每个节点具体操作按照以下步骤进行。

#安装wget,wget是linux最常用的下载命令(有些系统默认安装,可忽略)yum -y install wget#备份当前的yum源mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup#下载国内云的yum源配置wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo#清除原来文件缓存,构建新加入的repo结尾文件的缓存yum clean allyum makecache

配置完成后,可以在每台节点上安装"vim"命令,方便后续操作:

#在各个节点上安装 vim命令yum -y install vim

6、设置Linux 系统显示中文/英文

Linux系统默认显示不支持中文,可以通过配置支持显示中文。每台节点具体操作参照如下步骤。

#查看当前系统语言echo $LANG#显示结果如下,说明默认支持显示英文en_US.UTF-8#临时修改系统语言为中文,重启节点后恢复英文LANG="zh_CN.UTF-8"#如果想要永久修改系统默认语言为中文,需要创建/修改/etc/locale.conf文件,写入以下内容,设置完成后需要重启各节点。LANG="zh_CN.UTF-8"

7、设置自动更新时间

后续基于Linux各个节点搭建HDFS时,需要各节点的时间同步,可以通过设置各个节点自动更新时间来保证各个节点时间一致,具体按照以下操作来执行。

7.1、修改本地时区及ntp服务

yum -y install ntprm -rf /etc/localtimeln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime/usr/sbin/ntpdate -u pool.ntp.org

7.2、自动同步时间

设置定时任务,每10分钟同步一次,配置/etc/crontab文件,实现自动执行任务。建议直接crontab -e 来写入定时任务。使用crontab -l 查看当前用户定时任务。

#各个节点执行 crontab -e 写入以下内容*/10 * * * *  /usr/sbin/ntpdate -u pool.ntp.org >/dev/null2>&1#重启定时任务   service crond restart#查看日期date

8、设置各个节点之间的ip映射

每个节点都有自己的IP和主机名,各个节点默认进行文件传递或通信时需要使用对应的ip进行通信,后续为了方便各个节点之间的通信和文件传递,可以配置各个节点名称与ip之间的映射,节点之间通信时可以直接写对应的主机名称,不必写复杂的ip。每台节点具体操作按照以下操作进行。

进入每台节点的/etc/hosts下,修改hosts文件,vim /etc/hosts:

#在文件后面追加以下内容192.168.179.4 node1192.168.179.5 node2192.168.179.6 node3192.168.179.7 node4192.168.179.8 node5

各个节点配置完成后,可以使用ping命令互相测试使用节点名称是否可以正常通信。

[root@node5 ~]# ping node1PING node1 (192.168.179.4) 56(84) bytes of data.64 bytes from node1 (192.168.179.4): icmp_seq=1 ttl=64 time=0.892 ms64 bytes from node1 (192.168.179.4): icmp_seq=2 ttl=64 time=0.415 ms... ...

9、配置节点之间免密访问

后续搭建HDFS集群时需要Linux各个节点之间免密,节点两两免秘钥的根本原理如下:假设A节点需要免秘钥登录B节点,只要B节点上有A节点的公钥,那么A节点就可以免密登录当前B节点。具体操作步骤如下。

9.1、安装ssh客户端

需要在每台节点上安装ssh客户端,否则,不能使用ssh命令(最小化安装Liunx,默认没有安装ssh客户端),这里在Centos7系统中默认已经安装,此步骤可以省略:

yum -y install openssh-clients

9.2、创建.ssh目录

在每台节点执行如下命令,在每台节点的"~"目录下,创建.ssh目录,注意,不要手动创建这个目录,因为有权限问题。

cd~ssh localhost#这里会需要输入节点密码#exit

9.3、配置各节点向一台节点通信免密

在每台节点上执行如下命令,给当前节点创建公钥和私钥:

ssh-keygen -t rsa -P ""-f ~/.ssh/id_rsa

将node1、node2、node3、node4、node5的公钥copy到node1上,这样这五台节点都可以免密登录到node1。命令如下:

#在node1上执行如下命令,需要输入密码ssh-copy-id node1 #会在当前~/.ssh目录下生成authorized_keys文件,文件中存放当前node1的公钥##在node2上执行如下命令,需要输入密码ssh-copy-id node1 #会将node2的公钥追加到node1节点的authorized_keys文件中#在node3上执行如下命令,需要输入密码ssh-copy-id node1 #会将node3的公钥追加到node1节点的authorized_keys文件中#在node4上执行如下命令,需要输入密码ssh-copy-id node1 #会将node4的公钥追加到node1节点的authorized_keys文件中#在node5上执行如下命令,需要输入密码ssh-copy-id node1 #会将node5的公钥追加到node1节点的authorized_keys文件中

9.4、各节点免密

将node1节点上~/.ssh/authorized_keys拷贝到node2、node3、node4、node5各节点的~/.ssh/目录下,执行如下命令:

scp ~/.ssh/authorized_keys node2:`pwd`scp ~/.ssh/authorized_keys node3:`pwd`scp ~/.ssh/authorized_keys node4:`pwd`scp ~/.ssh/authorized_keys node5:`pwd`

以上node1向各个几点发送文件时需要输入密码,经过以上步骤,节点两两免密完成。

二、安装JDK

按照以下步骤在各个节点上安装JDK8。

1、各个节点创建/software 目录,上传并安装jdk8 rpm

rpm -ivh /software/jdk-8u181-linux-x64.rpm

以上命令执行完成后,会在每台节点的/user/java下安装jdk8。

2、配置jdk环境变量

在每台节点上配置jdk的环境变量:

export JAVA_HOME=/usr/java/jdk1.8.0_181-amd64export PATH=$JAVA_HOME/bin:$PATHexport CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

每台节点配置完成后,最后执行"source /etc/profile"使配置生效。

三、安装MySQL

1、节点划分

在Linux集群中我们选择一台节点进行MySQL安装,这里选择在node2节点上安装MySQL。

节点IP

节点名称

mysql

192.168.179.5

node2

2、安装MySQL

在Centos6中安装mysql可以直接执行命令:

yum install –y mysql-server

但是在Centos7中yum源中没有自带mysql的安装包,需要执行命令下载mysql 的rpm配置文件,然后进行repo的安装,安装repo后在/etc/yum.repos.d路径下会有对应的mysql repo配置,然后再安装mysql,这里安装的mysql是5.7版本。命令如下:

#下载mysql repo,下载完成后会在当前执行命令目录下生成 rpm -ivh mysql57-community-release-el7-9.noarch.rpm文件。[root@node2 ~]# wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm#安装repo,安装完成后再/etc/yum.repos.d 目录下会生成mysql的 repo文件[root@node2 ~]# rpm -ivh mysql57-community-release-el7-9.noarch.rpm#安装mysql[root@node2 ~]# yum install mysql-server -y --nogpgcheck

执行完成之后,启动mysql:systemctl start mysqld,也可以使用service mysqld start启动msyql。

以上安装mysql的方式是直接从外网下载mysql 5.7版本安装,由于网络慢等原因导致mysql下载安装速度慢。我们也可以选择在mysql官网中找到linux版本对应的mysql版本先下载好,然后直接使用rpm安装。安装mysql rpm包有依赖关系,安装的顺序如下(--force:强制安装 --nodeps:不检查环境依赖):

rpm -ivh mysql-community-common-5.7.32-1.el7.x86_64.rpm --force --nodepsrpm -ivh mysql-community-libs-5.7.32-1.el7.x86_64.rpm --force --nodepsrpm -ivh mysql-community-client-5.7.32-1.el7.x86_64.rpm --force --nodepsrpm -ivh mysql-community-server-5.7.32-1.el7.x86_64.rpm --force --nodeps

以上安装完成后,执行如下命令来启动MySQL:

service mysqld start

3、配置MySQL

mysql5.7开始初始登录mysql需要使用初始密码,启动后登录mysql需要指定安装时的临时密码,使用命令:grep "temporary password" /var/log/mysqld.log 获取临时密码后,执行如下语句:

#使用临时密码登录mysql[root@node2 log]# mysql -u root -pK-BJt9jV0jb0#默认mysql密码需要含有数字、大小写字符、下划线等,这里设置密码验证级别为低即可mysql> setglobal validate_password_policy=LOW;#默认mysql密码设置长度是8位,这里修改成6位mysql> setglobal validate_password_length=6;#初始登录mysql必须重置密码才能操作,这里先修改密码为 123456mysql> alter user "root"@"localhost" identified by"123456";

也可以删除usr表中的数据,重新设置下mysql root密码也可以,命令如下:

[root@node2 java]# mysql -u root -p123456mysql> use mysql;mysql> selectuser,authentication_string fromuser; mysql> deletefromuser;mysql> GRANTALLPRIVILEGESON *.* TO"root"@"%" IDENTIFIED BY"123456"WITHGRANTOPTION;mysql> flush privileges;

执行如下命令,将mysql设置成开机启动,如果不设置开机启动,后期每次重启节点后需要手动启动MySQL。

#设置mysql 开机自动启动[root@cm1 ~]# systemctl enable mysqld [root@cm1 ~]# systemctl list-unit-files |grep mysqld

以上设置密码验证级别和密码长度验证当mysql重启后还需要重复设置,如果mysql中密码设置不想要太复杂或者密码长度不想设置长度验证,可以在"/etc/my.cnf"中配置如下内容:

[mysqld]plugin-load=validate_password.sovalidate-password=off

配置完成后执行"systemctl restart mysqld",重启mysql即可。

4、Mysql密码忘记处理

如果MySQL安装后,登录密码忘记,可以按照以下步骤来解决。

4.1、修改/etc/my.conf 文件,在mysqld 标签下加入以下参数

[mysqld]skip-grant-tables

配置完成后重启MySQL服务:service mysqld restart

4.2、执行如下命令修改mysql root用户密码

# 使用mysql库mysql> use mysql;# 更新修改root用户密码mysql> update user set authentication_string = password ( "123456" ) where user = "root";

更新完密码之后,去掉/etc/my.cnf中的skip-grant-tables配置,重启mysql服务使用更新后的密码登录MySQL即可。

四、安装Zookeeper

1、节点划分

这里搭建zookeeper版本为3.6.3,搭建zookeeper对应的角色分布如下:

节点IP

节点名称

Zookeeper

192.168.179.4

node1

192.168.179.5

node2

192.168.179.6

node3

192.168.179.7

node4

192.168.179.8

node5

2、安装Zookeeper

2.1、上传zookeeper 并解压, 配置环境变量

将zookeeper安装包上传到node3节点/software目录下并解压:

[root@node3 software]# tar -zxvf ./apache-zookeeper-3.6.3-bin.tar.gz

在node3节点配置环境变量:

#进入vim /etc/profile,在最后加入:export ZOOKEEPER_HOME=/software/apache-zookeeper-3.6.3-bin/export PATH=$PATH:$ZOOKEEPER_HOME/bin#使配置生效source /etc/profile

2.2、在node3 节点配置 zookeeper

进入"$ZOOKEEPER_HOME/conf"修改zoo_sample.cfg为zoo.cfg:

[root@node3 conf]# mv zoo_sample.cfg  zoo.cfg

配置zoo.cfg中内容如下:

tickTime=2000initLimit=10syncLimit=5dataDir=/opt/data/zookeeperclientPort=2181server.1=node3:2888:3888server.2=node4:2888:3888server.3=node5:2888:3888

2.3、将配置好的zookeeper 发送到 node4,node5节点

[root@node3 software]# scp -r apache-zookeeper-3.6.3-bin node4:/software/[root@node3 software]# scp -r apache-zookeeper-3.6.3-bin node5:/software/

2.4、各个节点上创建数据目录,并配置zookeeper环境变量

在node3,node4,node5各个节点上创建zoo.cfg中指定的数据目录"/opt/data/zookeeper"。

mkdir -p /opt/data/zookeeper

在node4,node5节点配置zookeeper环境变量

#进入vim /etc/profile,在最后加入:export ZOOKEEPER_HOME=/software/apache-zookeeper-3.6.3-bin/export PATH=$PATH:$ZOOKEEPER_HOME/bin#使配置生效source /etc/profile

2.5、各个节点创建节点ID

在node3,node4,node5各个节点路径"/opt/data/zookeeper"中添加myid文件分别写入1,2,3:

#在node3的/opt/data/zookeeper中创建myid文件写入1#在node4的/opt/data/zookeeper中创建myid文件写入2#在node5的/opt/data/zookeeper中创建myid文件写入3

2.6、各个节点启动zookeeper, 并检查进程状态

#各个节点启动zookeeper命令zkServer.sh start#检查各个节点zookeeper进程状态zkServer.sh status

五、安装HDFS

1、节点划分

这里安装HDFS版本为3.3.4,搭建HDFS对应的角色在各个节点分布如下:

节点IP

节点名称

NN

DN

ZKFC

JN

RM

NM

192.168.179.4

node1

192.168.179.5

node2

192.168.179.6

node3

192.168.179.7

node4

192.168.179.8

node5

2、安装配置HDFS

2.1、各个节点安装HDFS HA自动切换必须的依赖

yum -y install psmisc

2.2、上传下载好的Hadoop 安装包到 node1节点上,并解压

[root@node1 software]# tar -zxvf ./hadoop-3.3.4.tar.gz

2.3、在node1 节点上配置 Hadoop的环境变量

[root@node1 software]# vim /etc/profileexport HADOOP_HOME=/software/hadoop-3.3.4/export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:#使配置生效source/etc/profile

2.4、配置$HADOOP_HOME/etc/hadoop 下的hadoop-env.sh文件

#导入JAVA_HOMEexport JAVA_HOME=/usr/java/jdk1.8.0_181-amd64/

2.5、配置$HADOOP_HOME/etc/hadoop 下的hdfs-site.xml文件

                    dfs.nameservices        mycluster                        dfs.permissions.enabled        false                        dfs.ha.namenodes.mycluster        nn1,nn2                        dfs.namenode.rpc-address.mycluster.nn1        node1:8020                        dfs.namenode.rpc-address.mycluster.nn2        node2:8020                        dfs.namenode.http-address.mycluster.nn1        node1:50070                        dfs.namenode.http-address.mycluster.nn2        node2:50070                        dfs.namenode.shared.edits.dir        qjournal://node3:8485;node4:8485;node5:8485/mycluster                        dfs.client.failover.proxy.provider.mycluster        org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider                        dfs.ha.fencing.methods        sshfence                dfs.ha.fencing.ssh.private-key-files        /root/.ssh/id_rsa                        dfs.journalnode.edits.dir        /opt/data/journal/node/local/data                        dfs.ha.automatic-failover.enabled        true    

2.6、配置$HADOOP_HOME/ect/hadoop/core-site.xml

                    fs.defaultFS        hdfs://mycluster                        hadoop.tmp.dir        /opt/data/hadoop/                        ha.zookeeper.quorum        node3:2181,node4:2181,node5:2181    

2.7、配置$HADOOP_HOME/etc/hadoop/yarn-site.xml

            yarn.nodemanager.aux-services        mapreduce_shuffle                yarn.nodemanager.env-whitelist        JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME                        yarn.resourcemanager.ha.enabled        true                        yarn.resourcemanager.cluster-id        mycluster                        yarn.resourcemanager.ha.rm-ids        rm1,rm2                        yarn.resourcemanager.hostname.rm1        node1                        yarn.resourcemanager.hostname.rm2        node2                        yarn.resourcemanager.webapp.address.rm1        node1:8088                        yarn.resourcemanager.webapp.address.rm2        node2:8088                        yarn.resourcemanager.zk-address        node3:2181,node4:2181,node5:2181           yarn.nodemanager.vmem-check-enabled    false        

2.8、配置$HADOOP_HOME/etc/hadoop/mapred-site.xml

            mapreduce.framework.name        yarn    

2.9、配置$HADOOP_HOME/etc/hadoop/workers文件

[root@node1 ~]# vim /software/hadoop-3.3.4/etc/hadoop/workersnode3node4node5

2.10、配置$HADOOP_HOME/sbin/start-dfs.sh 和 stop-dfs.sh两个文件中顶部添加以下参数,防止启动错误

HDFS_DATANODE_USER=rootHDFS_DATANODE_SECURE_USER=hdfsHDFS_NAMENODE_USER=rootHDFS_JOURNALNODE_USER=rootHDFS_ZKFC_USER=root

2.11、配置$HADOOP_HOME/sbin/start-yarn.sh stop-yarn.sh 两个文件顶部添加以下参数,防止启动错误

YARN_RESOURCEMANAGER_USER=rootYARN_NODEMANAGER_USER=root

2.12、将配置好的 Hadoop 安装包发送到其他 4****个节点

[root@node1 ~]# scp -r /software/hadoop-3.3.4 node2:/software/[root@node1 ~]# scp -r /software/hadoop-3.3.4 node3:/software/[root@node1 ~]# scp -r /software/hadoop-3.3.4 node4:/software/[root@node1 ~]# scp -r /software/hadoop-3.3.4 node5:/software/

也可以在对应其他节点上解压对应的安装包后,只发送对应的配置文件,这样速度较快。

2.13、在node2 node3 node4 node5 节点上配置HADOOP_HOME

#分别在node2、node3、node4、node5节点上配置HADOOP_HOMEvim /etc/profileexport HADOOP_HOME=/software/hadoop-3.3.4/export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:#最后记得Sourcesource/etc/profile

3、初始化HDFS

#在node3,node4,node5节点上启动zookeeperzkServer.sh start#在node1上格式化zookeeper[root@node1 ~]# hdfs zkfc -formatZK#在每台journalnode中启动所有的journalnode,这里就是node3,node4,node5节点上启动hdfs --daemon start journalnode#在node1中格式化namenode[root@node1 ~]# hdfs namenode -format#在node1中启动namenode,以便同步其他namenode[root@node1 ~]# hdfs --daemon start namenode#高可用模式配置namenode,使用下列命令来同步namenode(在需要同步的namenode中执行,这里就是在node2上执行):[root@node2 software]# hdfs namenode -bootstrapStandby

4、启动及停止

#node1上启动HDFS,启动Yarn[root@node1 sbin]# start-dfs.sh[root@node1 sbin]# start-yarn.sh注意以上也可以使用start-all.sh命令启动Hadoop集群。#停止集群 [root@node1 ~]# stop-dfs.sh [root@node1 ~]# stop-yarn.sh注意:以上也可以使用 stop-all.sh 停止集群。

5、访问WebUI

#访问HDFS : http://node1:50070

六、安装Hive

1、节点划分

这里搭建Hive的版本为3.1.3,搭建Hive的节点划分如下:

节点IP

节点名称

Hive服务器

Hive客户端

MySQL

192.168.179.4

node1

192.168.179.5

node2

★(已搭建)

192.168.179.6

node3

2、安装配置Hive

2.1、将下载好的Hive 安装包上传到node1 节点上,并修改名称

[root@node1 ~]# cd /software/[root@node1 software]# tar -zxvf ./apache-hive-3.1.3-bin.tar.gz[root@node1 software]# mv apache-hive-3.1.3-bin hive-3.1.3

2.2、将解压好的Hive 安装包发送到node3节点上

[root@node1 software]# scp -r /software/hive-3.1.3/ node3:/software/

2.3、配置node1 node3 两台节点的Hive 环境变量

vim /etc/profileexport HIVE_HOME=/software/hive-3.1.3/export PATH=$PATH:$HIVE_HOME/bin#source  生效source/etc/profile

2.4、在node1 节点$HIVE_HOME/conf 下创建hive-site.xml 并配置

   hive.metastore.warehouse.dir  /user/hive/warehouse    javax.jdo.option.ConnectionURL  jdbc:mysql://node2:3306/hive?createDatabaseIfNotExist=true&useSSL=false    javax.jdo.option.ConnectionDriverName  com.mysql.jdbc.Driver    javax.jdo.option.ConnectionUserName  root    javax.jdo.option.ConnectionPassword  123456 

2.5、在node3 节点$HIVE_HOME/conf/ 中创建hive-site.xml并配置

   hive.metastore.warehouse.dir  /user/hive/warehouse    hive.metastore.local  false    hive.metastore.uris  thrift://node1:9083 

2.6、node1node3节点删除 $HIVE_HOME/lib下" guava"包,使用 Hadoop下的包替换

#删除Hive lib目录下“guava-19.0.jar ”包[root@node1 ~]# rm -rf /software/hive-3.1.3/lib/guava-19.0.jar [root@node3 ~]# rm -rf /software/hive-3.1.3/lib/guava-19.0.jar #将Hadoop lib下的“guava”包拷贝到Hive lib目录下[root@node1 ~]# cp /software/hadoop-3.3.4/share/hadoop/common/lib/guava-27.0-jre.jar /software/hive-3.1.3/lib/[root@node3 ~]# cp /software/hadoop-3.3.4/share/hadoop/common/lib/guava-27.0-jre.jar /software/hive-3.1.3/lib/

2.7、将"mysql-connector-java-5.1.47.jar" 驱动包上传到 $HIVE_HOME/lib目录下

这里node1,node3节点都需要传入,将mysql驱动包上传$HIVE_HOME/lib/目录下。

2.8、在node1 节点中初始化Hive

#初始化hive,hive2.x版本后都需要初始化[root@node1 ~]# schematool -dbType mysql -initSchema

3、Hive 操作

在服务端和客户端操作Hive,操作Hive之前首先启动HDFS集群,命令为:start-all.sh,启动HDFS集群后再进行Hive以下操作:

#在node1中登录Hive ,创建表test[root@node1 conf]# hivehive> create table test (id int,name string,age int) row format delimited fields terminated by "\t";#向表test中插入数据hive> insert into test values(1,"zs",18);#在node1启动Hive metastore[root@node1 hadoop]# hive --service metastore &#在node3上登录Hive客户端查看表数据[root@node3 lib]# hivehive> select * from test;OK1zs18

七、安装HBase

1、节点划分

这里选择HBase版本为2.5.1,搭建HBase各个角色分布如下:

节点IP

节点名称

HBase服务

192.168.179.6

node3

RegionServer

192.168.179.7

node4

HMaster,RegionServer

192.168.179.8

node5

RegionServer

2、安装配置HBase

2.1、将下载好的安装包发送到node4 节点上, 并解压, 配置环境变量

#将下载好的HBase安装包上传至node4节点/software下,并解压[root@node4 software]# tar -zxvf ./hbase-2.5.1-bin.tar.gz

当前节点配置HBase环境变量

#配置HBase环境变量[root@node4 software]# vim /etc/profileexport HBASE_HOME=/software/hbase-2.5.1/export PATH=$PATH:$HBASE_HOME/bin#使环境变量生效[root@node4 software]# source /etc/profile

2.2、配置$HBASE_HOME/conf/hbase-env.sh

#配置HBase JDKexport JAVA_HOME=/usr/java/jdk1.8.0_181-amd64/#配置 HBase不使用自带的zookeeperexport HBASE_MANAGES_ZK=false#Hbase中的jar包和HDFS中的jar包有冲突,以下配置设置为true,启动hbase不加载HDFS jar包export HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP="true"

2.3、配置$HBASE_HOME/conf/hbase-site.xml

          hbase.rootdir        hdfs://mycluster/hbase            hbase.cluster.distributed        true            hbase.zookeeper.quorum        node3,node4,node5            hbase.unsafe.stream.capability.enforce        false  

2.4、配置$HBASE_HOME/conf/regionservers ,配置RegionServer 节点

node3node4node5

2.5、配置backup-masters文件

手动创建$HBASE_HOME/conf/backup-masters文件,指定备用的HMaster,需要手动创建文件,这里写入node5,在HBase任意节点都可以启动HMaster,都可以成为备用Master ,可以使用命令:hbase-daemon.sh start master启动。

#创建 $HBASE_HOME/conf/backup-masters 文件,写入node5[root@node4 conf]# vim backup-mastersnode5

2.6、复制hdfs-site.xml $HBASE_HOME/conf/

[root@node4 ~]# cp /software/hadoop-3.3.4/etc/hadoop/hdfs-site.xml /software/hbase-2.5.1/conf/

2.7、将HBase 安装包发送到node3 node5 节点上,并在node3 node5 节点上配置HBase 环境变量

[root@node4 ~]# scp -r /software/hbase-2.5.1 node3:/software/[root@node4 ~]# scp -r /software/hbase-2.5.1 node5:/software/注意:在node3、node5上配置HBase环境变量。vim /etc/profileexport HBASE_HOME=/software/hbase-2.5.1/export PATH=$PATH:$HBASE_HOME/bin#使环境变量生效source/etc/profile

2.8、重启Zookeeper 、重启HDFS 及启动HBase集群

#注意:一定要重启Zookeeper,重启HDFS,在node4节点上启动HBase集群[root@node4 software]# start-hbase.sh #访问WebUI,http://node4:16010。停止集群:在任意一台节点上stop-hbase.sh

3、HBase操作

在Hbase中创建表test,指定"cf1","cf2"两个列族,并向表test中插入几条数据:

#进入hbase[root@node4 ~]# hbase shell#创建表testcreate "test","cf1","cf2"#查看创建的表list#向表test中插入数据put "test","row1","cf1:id","1"put "test","row1","cf1:name","zhangsan"put "test","row1","cf1:age",18#查询表test中rowkey为row1的数据get"test","row1"

八、安装Redis

1、节点划分

这里选择Redis版本为6.2.7版本,Redis安装在node4节点上,节点分布如下:

节点IP

节点名称

Redis服务

192.168.179.7

node4

client

2、安装Redis

2.1、将redis 安装包上传到node4节点,并解压

[root@node4 ~]# cd /software/[root@node4 software]# tar -zxvf ./redis-6.2.7.tar.gz

2.2、node4安装需要的 C插件

[root@node4 ~]# yum -y install gcc tcl

2.3、编译Redis

进入/software/cd /software/redis-6.2.7目录中,编译redis。

[root@node4 ~]# cd /software/redis-6.2.7[root@node4 redis-6.2.7]# make

2.4、创建安装目录安装Redis

#创建安装目录[root@node4 ~]# mkdir -p /software/redis#进入redis编译目录,安装redis[root@node4 ~]# cd /software/redis-6.2.7[root@node4 redis-6.2.7]# make PREFIX=/software/redis install

注意:现在就可以使用redis了,进入/software/redis/bin下,就可以执行redis命令。

2.5、将Redis加入环境变量,加入系统服务,设置开机启动

#将redis-server链接到/usr/local/bin/目录下,后期加入系统服务时避免报错[root@node4 ~]# ln -sf /software/redis-6.2.7/src/redis-server /usr/local/bin/#进入下方目录,配置install_server.sh,将文件中以下内容前面加上#注释掉,原因为一个物理机中可以有多个redis实例(进程),通过port区分,可执行程序就一份在目录,但是内存中未来的多个实例需要各自的配置文件,持久化目录等资源。[root@node4 ~]# cd /software/redis-6.2.7/utils/#_pid_1_exe="$(readlink -f /proc/1/exe)"#if [ "${_pid_1_exe##*/}" = systemd ]#then#        echo "This systems seems to use systemd."#        echo "Please take a look at the provided example service unit files in this #directory, and adapt and install them. Sorry!"#        exit 1#fi#执行如下命令,配置redis Server,一直回车即可[root@node4 utils]# ./install_server.sh#执行完以上安装,在/etc/init.d下会修改redis_6379名称并加入系统服务[root@node4 utils]# cd /etc/init.d/[root@node4 init.d]# mv redis_6379 redisd[root@node4 init.d]# chkconfig --add redisd#检查加入系统状态,3,4,5为开,就是开机自动启动[root@node4 init.d]# chkconfig --list

2.6、配Redis环境变量

# 在node4节点上编辑profile文件,vim /etc/profileexport REDIS_HOME=/software/redisexport PATH=$PATH:$REDIS_HOME/bin#使环境变量生效source /etc/profile

2.7、启动| 停止 Redis服务

后期每次开机启动都会自动启动Redis,也可以使用以下命令手动启动|停止redis

#启动redis[root@node4 init.d]# service redisd start#停止redis[root@node4 init.d]# redis-cli shutdown

3、Redis 操作

#进入redis客户端[root@node4 ~]# redis-cli#切换1号库,并插入key127.0.0.1:6379> select 1127.0.0.1:6379[1]> hset rediskey zhangsan 100#查看所有key并获取key值127.0.0.1:6379[1]> keys *127.0.0.1:6379[1]> hgetall rediskey#删除指定key127.0.0.1:6379[1]> del "rediskey"

九、安装Kafka

1、节点划分

这里选择Kafka版本为3.3.1,对应的搭建节点如下:

节点IP

节点名称

Kafka服务

192.168.179.4

node1

kafka broker

192.168.179.5

node2

kafka broker

192.168.179.6

node3

kafka broker

2、安装配置Kafka

2.1、上传解压

[root@node1 software]# tar -zxvf ./kafka_2.12-3.3.1.tgz

2.2、配置Kafka环境变量

# 在node1节点上编辑profile文件,vim /etc/profileexport KAFKA_HOME=/software/kafka_2.12-3.3.1/export PATH=$PATH:$KAFKA_HOME/bin#使环境变量生效source /etc/profile

2.3、配置Kafka

在node1节点上配置Kafka,进入$KAFKA_HOME/config中修改server.properties,修改内容如下:

broker.id=0     #注意:这里要唯一的Integer类型log.dirs=/kafka-logs    #真实数据存储的位置zookeeper.connect=node3:2181,node4:2181,node5:2181  #zookeeper集群

2.4、将以上配置发送到node2 node3节点上

[root@node1 software]# scp -r /software/kafka_2.12-3.3.1 node2:/software/[root@node1 software]# scp -r /software/kafka_2.12-3.3.1 node3:/software/

发送完成后,在node2、node3节点上配置Kafka的环境变量。

2.5、修改node2,node3 节点上的server.properties 文件

node2、node3节点修改$KAFKA_HOME/config/server.properties文件中的broker.id,node2中修改为1,node3节点修改为2。

2.6、创建Kafka启动脚本

在node1,node2,node3节点$KAFKA_HOME/bin路径中编写Kafka启动脚本"startKafka.sh",内容如下:

nohup /software/kafka_2.12-3.3.1/bin/kafka-server-start.sh /software/kafka_2.12-3.3.1/config/server.properties > /software/kafka_2.12-3.3.1/kafkalog.txt 2>&1 &

node1,node2,node3节点配置完成后修改"startKafka.sh"脚本执行权限:

chmod +x ./startKafka.sh

2.7、启动Kafka集群

在node1,node2,node3三台节点上分别执行startKafka.sh脚本,启动Kafka。

[root@node1 ~]# startKafka.sh[root@node2 ~]# startKafka.sh[root@node3 ~]# startKafka.sh

3、Kafka命令操作

在Kafka 任意节点上操作如下命令测试Kafka。

#创建topic kafka-topics.sh --create --bootstrap-server node1:9092,node2:9092,node3:9092 --topic testtopic  --partitions 3 --replication-factor 3#查看集群中的topickafka-topics.sh  --list --bootstrap-server node1:9092,node2:9092,node3:9092#console控制台向topic 中生产数据kafka-console-producer.sh --bootstrap-server node1:9092,node2:9092,node3:9092 --topic testtopic#console控制台消费topic中的数据kafka-console-consumer.sh --bootstrap-server node1:9092,node2:9092,node3:9092 --topic testtopic注意:以上创建好之后,可以向Kafka topic中写入数据测试Kafka是否正常。#删除topickafka-topics.sh --bootstrap-server node1:9092,node2:9092,node3:9092 --delete --topic testtopic

关键词: