攻略
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 |
这里准备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,下面进行节点的其他配置。
启动每台节点,在对应的节点路径"/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
在每台节点上修改/etc/hostname,配置对应的主机名称,参照节点IP与节点名称对照表分别为:node1、node2、node3、node4、node5。配置完成后 需要重启各个节点,才能正常显示各个主机名。
执行如下命令确定各个节点上的防火墙开启情况,需要将各个节点上的防火墙关闭:
#检查防火墙状态firewall-cmd --state#临时关闭防火墙(重新开机后又会自动启动)systemctl stop firewalld 或者systemctl stop firewalld.service#设置开机不启动防火墙systemctl disable firewalld
SELinux就是Security-Enhanced Linux的简称,安全加强的linux。传统的linux权限是对文件和目录的owner, group和other的rwx进行控制,而SELinux采用的是委任式访问控制,也就是控制一个进程对具体文件系统上面的文件和目录的访问,SELinux规定了很多的规则,来决定哪个进程可以访问哪些文件和目录。虽然SELinux很好用,但是在多数情况我们还是将其关闭,因为在不了解其机制的情况下使用SELinux会导致软件安装或者应用部署失败。
在每台节点/etc/selinux/config中将SELINUX=enforcing改成SELINUX=disabled即可。
后续为了方便在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
Linux系统默认显示不支持中文,可以通过配置支持显示中文。每台节点具体操作参照如下步骤。
#查看当前系统语言echo $LANG#显示结果如下,说明默认支持显示英文en_US.UTF-8#临时修改系统语言为中文,重启节点后恢复英文LANG="zh_CN.UTF-8"#如果想要永久修改系统默认语言为中文,需要创建/修改/etc/locale.conf文件,写入以下内容,设置完成后需要重启各节点。LANG="zh_CN.UTF-8"
后续基于Linux各个节点搭建HDFS时,需要各节点的时间同步,可以通过设置各个节点自动更新时间来保证各个节点时间一致,具体按照以下操作来执行。
yum -y install ntprm -rf /etc/localtimeln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime/usr/sbin/ntpdate -u pool.ntp.org
设置定时任务,每10分钟同步一次,配置/etc/crontab文件,实现自动执行任务。建议直接crontab -e 来写入定时任务。使用crontab -l 查看当前用户定时任务。
#各个节点执行 crontab -e 写入以下内容*/10 * * * * /usr/sbin/ntpdate -u pool.ntp.org >/dev/null2>&1#重启定时任务 service crond restart#查看日期date
每个节点都有自己的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... ...
后续搭建HDFS集群时需要Linux各个节点之间免密,节点两两免秘钥的根本原理如下:假设A节点需要免秘钥登录B节点,只要B节点上有A节点的公钥,那么A节点就可以免密登录当前B节点。具体操作步骤如下。
需要在每台节点上安装ssh客户端,否则,不能使用ssh命令(最小化安装Liunx,默认没有安装ssh客户端),这里在Centos7系统中默认已经安装,此步骤可以省略:
yum -y install openssh-clients
在每台节点执行如下命令,在每台节点的"~"目录下,创建.ssh目录,注意,不要手动创建这个目录,因为有权限问题。
cd~ssh localhost#这里会需要输入节点密码#exit
在每台节点上执行如下命令,给当前节点创建公钥和私钥:
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文件中
将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向各个几点发送文件时需要输入密码,经过以上步骤,节点两两免密完成。
按照以下步骤在各个节点上安装JDK8。
rpm -ivh /software/jdk-8u181-linux-x64.rpm
以上命令执行完成后,会在每台节点的/user/java下安装jdk8。
在每台节点上配置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"使配置生效。
在Linux集群中我们选择一台节点进行MySQL安装,这里选择在node2节点上安装MySQL。
节点IP | 节点名称 | mysql |
---|---|---|
192.168.179.5 | node2 | ★ |
在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
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即可。
如果MySQL安装后,登录密码忘记,可以按照以下步骤来解决。
[mysqld]skip-grant-tables
配置完成后重启MySQL服务:service mysqld restart
# 使用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版本为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 | ★ |
将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
进入"$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
[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/
在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
在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
#各个节点启动zookeeper命令zkServer.sh start#检查各个节点zookeeper进程状态zkServer.sh status
这里安装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 | ★ | ★ | ★ |
yum -y install psmisc
[root@node1 software]# tar -zxvf ./hadoop-3.3.4.tar.gz
[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
#导入JAVA_HOMEexport JAVA_HOME=/usr/java/jdk1.8.0_181-amd64/
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
fs.defaultFS hdfs://mycluster hadoop.tmp.dir /opt/data/hadoop/ ha.zookeeper.quorum node3:2181,node4:2181,node5:2181
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
mapreduce.framework.name yarn
[root@node1 ~]# vim /software/hadoop-3.3.4/etc/hadoop/workersnode3node4node5
HDFS_DATANODE_USER=rootHDFS_DATANODE_SECURE_USER=hdfsHDFS_NAMENODE_USER=rootHDFS_JOURNALNODE_USER=rootHDFS_ZKFC_USER=root
YARN_RESOURCEMANAGER_USER=rootYARN_NODEMANAGER_USER=root
[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/
也可以在对应其他节点上解压对应的安装包后,只发送对应的配置文件,这样速度较快。
#分别在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
#在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
#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 停止集群。
#访问HDFS : http://node1:50070
这里搭建Hive的版本为3.1.3,搭建Hive的节点划分如下:
节点IP | 节点名称 | Hive服务器 | Hive客户端 | MySQL |
---|---|---|---|---|
192.168.179.4 | node1 | ★ | ||
192.168.179.5 | node2 | ★(已搭建) | ||
192.168.179.6 | node3 | ★ |
[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
[root@node1 software]# scp -r /software/hive-3.1.3/ node3:/software/
vim /etc/profileexport HIVE_HOME=/software/hive-3.1.3/export PATH=$PATH:$HIVE_HOME/bin#source 生效source/etc/profile
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
hive.metastore.warehouse.dir /user/hive/warehouse hive.metastore.local false hive.metastore.uris thrift://node1:9083
#删除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/
这里node1,node3节点都需要传入,将mysql驱动包上传$HIVE_HOME/lib/目录下。
#初始化hive,hive2.x版本后都需要初始化[root@node1 ~]# schematool -dbType mysql -initSchema
在服务端和客户端操作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版本为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 |
#将下载好的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
#配置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"
hbase.rootdir hdfs://mycluster/hbase hbase.cluster.distributed true hbase.zookeeper.quorum node3,node4,node5 hbase.unsafe.stream.capability.enforce false
node3node4node5
手动创建$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
[root@node4 ~]# cp /software/hadoop-3.3.4/etc/hadoop/hdfs-site.xml /software/hbase-2.5.1/conf/
[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
#注意:一定要重启Zookeeper,重启HDFS,在node4节点上启动HBase集群[root@node4 software]# start-hbase.sh #访问WebUI,http://node4:16010。停止集群:在任意一台节点上stop-hbase.sh
在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版本为6.2.7版本,Redis安装在node4节点上,节点分布如下:
节点IP | 节点名称 | Redis服务 |
---|---|---|
192.168.179.7 | node4 | client |
[root@node4 ~]# cd /software/[root@node4 software]# tar -zxvf ./redis-6.2.7.tar.gz
[root@node4 ~]# yum -y install gcc tcl
进入/software/cd /software/redis-6.2.7目录中,编译redis。
[root@node4 ~]# cd /software/redis-6.2.7[root@node4 redis-6.2.7]# make
#创建安装目录[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命令。
#将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
# 在node4节点上编辑profile文件,vim /etc/profileexport REDIS_HOME=/software/redisexport PATH=$PATH:$REDIS_HOME/bin#使环境变量生效source /etc/profile
后期每次开机启动都会自动启动Redis,也可以使用以下命令手动启动|停止redis
#启动redis[root@node4 init.d]# service redisd start#停止redis[root@node4 init.d]# redis-cli shutdown
#进入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版本为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 |
[root@node1 software]# tar -zxvf ./kafka_2.12-3.3.1.tgz
# 在node1节点上编辑profile文件,vim /etc/profileexport KAFKA_HOME=/software/kafka_2.12-3.3.1/export PATH=$PATH:$KAFKA_HOME/bin#使环境变量生效source /etc/profile
在node1节点上配置Kafka,进入$KAFKA_HOME/config中修改server.properties,修改内容如下:
broker.id=0 #注意:这里要唯一的Integer类型log.dirs=/kafka-logs #真实数据存储的位置zookeeper.connect=node3:2181,node4:2181,node5:2181 #zookeeper集群
[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的环境变量。
node2、node3节点修改$KAFKA_HOME/config/server.properties文件中的broker.id,node2中修改为1,node3节点修改为2。
在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
在node1,node2,node3三台节点上分别执行startKafka.sh脚本,启动Kafka。
[root@node1 ~]# startKafka.sh[root@node2 ~]# startKafka.sh[root@node3 ~]# startKafka.sh
在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
关键词:
攻略
装备
商城