大数据Flink进阶(九):集群基础环境搭建
2023-03-30 21:26:57 来源:腾讯云

集群基础环境搭建

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

大数据Flink进阶(九):集群基础环境搭建

2023-03-30

夜间经济逐渐火热 成为多地促消费发力点

2023-03-30

形容秋天的词语2字(形容秋天的词语) 观天下

2023-03-30

连续5天!南昌公交开通清明专线 天天观焦点

2023-03-30

中国中车:2022年净利同比增13.11% 拟10派2元

2023-03-30

全球最资讯丨银行板块涨0.59% 常熟银行涨4.08%居首

2023-03-30

日本采购疫苗逾三成未用 数量计算依据被质疑_每日快看

2023-03-30

天际汽车,缺钱续命

2023-03-30

让老人意外伤害不再忧!2023年“银发无忧”启动,投保指南看这里→_天天快讯

2023-03-30

全球实时:御兽王者第二部全部电视剧_御兽王者第二部

2023-03-30

焦点热门:同款药品价格贵50-60元? 老百姓大药房频被投诉药价贵

2023-03-30

天天要闻:微软尝试将广告植入新必应 后者日活跃用户超过1亿

2023-03-30

中新网评:“清朗”长治,共建网上美好精神家园-环球今亮点

2023-03-30

面包车防身刀藏在哪里(面包车防身刀藏在后备箱或汽车后排座椅上) 世界今热点

2023-03-30

报道:阿里巴巴首席财务官:每个业务都可以在准备就绪时进行独立融资和IPO

2023-03-30

铜川火车站,见证了铜川的兴衰,为铜川打开了认知世界的通道! 天天观点

2023-03-30

环球新动态:温岭高橙镇_温岭高橙

2023-03-30

全球观焦点:不惧鹰派美联储纪要!FXStreet首席分析师:黄金呈坚定看涨立场 金价恐再大涨逾20美元

2023-03-30

让越野简单一些未尝不可 试驾全新路虎·卫士130 HSE

2023-03-29

ST商城:股票被实施退市风险警示及继续被实施其他风险警示,实施后简称为*ST商城,3月30日停牌

2023-03-29

全球热讯:人工智能的转折点已到,现在该按一个暂停键吗

2023-03-29

世界关注:楼层板图片(楼层板)

2023-03-29

全球微速讯:惊人的3D枪射击战场官网在哪下载 最新官方下载安装地址

2023-03-29

产调是什么样子的_产调是什么-今日热搜

2023-03-29

“新徽菜·名徽厨”专项职业技能竞赛系列活动在肥举办_环球聚焦

2023-03-29

德阳市罗江区总工会开展已解困脱困职工动态监测培训

2023-03-29

博鳌对话|易纲:继续加大对民企支持力度 环球观速讯

2023-03-29

库里:我们的竞争精神无人能比 在过去的十年里都是如此|视点

2023-03-29

高雄台胞刘德文恢复送台湾老兵骨灰回大陆安葬,国台办表示敬意和感谢

2023-03-29

每日热点:高光谱综合观测卫星首批影像成果发布

2023-03-29

足协:今年总共收到131份投诉 计划下半年提前启动明年准入

2023-03-29

不切实际的幻想

2023-03-29

天天要闻:【世界时快讯】便宜好用的平板电脑盘点 亚马逊Kindle Fire HD需1600元

2023-03-29

英汉经济企业管理词汇_关于英汉经济企业管理词汇的简介

2023-03-29

世界资讯:最新!2023广州买房条件一览!

2023-03-29

雄安新区板块3月28日跌0.36%,丝路视觉领跌,主力资金净流出8.56亿元|环球报资讯

2023-03-29

环球速读:时域和频域的关系图_时域和频域的关系

2023-03-29

乔治:我和亚历山大不是宿敌 为他高兴&没人预料到他会这么棒

2023-03-28

天天日报丨沙特阿美246.05亿元战略入股荣盛石化 多维度合作探索可持续发展

2023-03-28

那些被穷养长大的孩子们,后来怎么样了 环球焦点

2023-03-28

中方突然宣布出手,大批解放军前往南海,中方态度让人害怕!_世界速看料

2023-03-28

中国信通院启动大模型技术及应用基准工作

2023-03-28

Google Messages很快将在聊天中显示联系人图片

2023-03-28

【世界播资讯】

2023-03-28

今日银的市场价查询(3月28日)_微速讯

2023-03-28

2023年农村合作医疗报销比例是多少?来了解一下-环球新动态

2023-03-28

全球新资讯:苹果watchOS 9.4正式版发布 支持直接删除内置App

2023-03-28

海口日报评论 | 社区物业党建联建 共同缔造幸福家园

2023-03-28

20岁的皇家马德里中场卡马文加在法国对阵爱尔兰的...

2023-03-28

沈阳农业大学农学院举行“地球一小时”活动

2023-03-28

看点:上网本什么品牌好_上网本什么牌子好

2023-03-28

英汉对照·奇趣大世界_关于英汉对照·奇趣大世界的简介-天天速递

2023-03-27

万城控股:2022年实现收入5.71亿元_重点聚焦

2023-03-27

樊文花受邀出席抖音生活服务综合行业峰会 作为唯一丽人代表分享发言

2023-03-27

美国航空因波音787延迟交付而暂停部分航线|世界播资讯

2023-03-27

龙虎榜 | 拓维信息今日再度涨停,深股通买入1.97亿元并卖出7689万元-全球视讯

2023-03-27

深度“悦己”成女性消费趋势 4亿女性控制着10亿人民币支出-世界新资讯

2023-03-27

焦点快看:合肥运河新城首个“地下生命线”即将完工

2023-03-27

《速度与激情10》登杂志封面 ,5月19日真正的“Family侠”就要上映 观察

2023-03-27

骨盆骨折 并发症_骨盆骨折的并发症一般有哪些|环球消息

2023-03-27

全球新消息丨琼海博鳌:美田园 潮生活 酷科技

2023-03-27

关注:中信建投:长期看好AI发展,持续推荐电信运营商和云计算等板块

2023-03-27

鹏华丰恒债券型证券投资基金调整大额申购、转换转入和定期定额投资业务的公告

2023-03-27

八百挟持了谁要求晴明_八百挟持了谁

2023-03-27

肯豆真空出街!大秀美腿,身材逐渐卡戴珊化,布克肠子悔青!

2023-03-26

环球信息:打造科研创新平台 大湾区科技创新赛道按下“加速键”

2023-03-26

福星股份13.4亿元定增事项收到深交所审核问询函

2023-03-26

消息!八佰什么时候上映

2023-03-26

蚂蚁庄园支付宝问答:小鸡宝宝考考你古时七夕节的习俗之一乞巧最初指的是什么

2023-03-26

世界今日讯!带患癌母亲唱游全国小伙回应质疑:我不是富二代,会带着母亲继续走下去

2023-03-26

欧洲银行业不断承压,德意志银行处于市场关注的风口浪尖

2023-03-26

滚动:球阀的作用

2023-03-26

世界看热讯:russian怎么发音_russian读音

2023-03-26

排卵期出血可以泡脚吗_排卵期出血可以同房吗-天天资讯

2023-03-26

每日资讯:祝贺!刘虹打破女子35公里竞走亚洲纪录

2023-03-25

炫舞调皮猴论坛_炫舞调皮猴|快播报

2023-03-25

国庆中秋在同一天有哪些年

2023-03-25

全球快资讯:贵州桐梓:律师参与“接访+简易听证”,有效化解申诉人“心结”

2023-03-25

环球百事通!七国集团同意欧盟对俄出口柴油限价方案

2023-03-25

焦点热文:星火成炬 | “书写”中国

2023-03-25

佳能为什么叫eos 头条

2023-03-25

新农村呼唤青春力量-今日要闻

2023-03-25

猫咪这5种行为是在对你深情告白,你有收到来自它的爱吗? 每日速讯

2023-03-25

观察:Xiaomi Defies Estimates Despite a 67% Fall in Q4 Profit amid Smartphone Sales Plunge

2023-03-25

汉口站和武汉站的区别(汉口站)

2023-03-25

当前滚动:美味的英文单词怎么写

2023-03-24

氯气中毒的临床表现_氯气中毒会有哪些症状表现

2023-03-24

华夏幸福: 华夏幸福基业股份有限公司关于控股股东集中竞价被动减持股份进展公告

2023-03-24

西安中宝达小区在哪个街道办事处

2023-03-24

新丰田雷凌上市,与雪铁龙C6没可比性,但比长安逸达多了品牌光环

2023-03-24

【豫财经】5.9亿定增加码产能建设,千味央厨为何还要杀入茶饮赛道? 世界观点

2023-03-24

今日观点!美术色彩中三原色是指什么

2023-03-24

无锡城乡居民医保门诊费用如何报销_聚看点

2023-03-24

世界观热点:民国五年袁大头银元价格(2023年03月24日)

2023-03-24

EA重生工作室FPS新作以《黑暗力量》系列为灵感 采用虚幻5开发

2023-03-24

世界微动态丨传Customers Bancorp(CUBI.US)考虑收购硅谷银行全部或部分资产

2023-03-24

观看直播购物需理性 切勿盲目跟风

2023-03-24

地球和月亮之间的距离是多少_地球和月亮之间的距离多少千米

2023-03-24

xxbb是什么意思

2023-03-24

上海今年首批宅地联动价公示!为什么多个地块纷纷涨价?今年的新房价格还稳吗?-天天速递

2023-03-24