hi168大数据离线项目环境搭建
## **1. 服务器准备**
##### 1.1 创建集群应用节点
集群服务器使用“我的应用“中的Ubuntu22.04集群模版创建三个节点应用,并且进入“我的应用”中去修改一下节点名称(node1对应master,node2对应hadoop1,node3对应hadoop3)。
![image.png](https://i-blog.csdnimg.cn/img_convert/bb42c354d254a32d39f024d2d15c0b97.png)
刷新一下页面,在桌面上的三个节点名称会自动会更新,然后分别打开三个节点进入终端,进行后续的操作。
##### 1.2 更新软件源
三个节点分别编辑一下软件源的配置文件/etc/apt/sources.list,将软件源更新为阿里云。
打开配置文件
vim /etc/apt/sources.list
按shift+:进入底行模式,将默认软件源替换成阿里云,保存退出
:%s/archive.ubuntu.com/mirrors.aliyun.com/g
更新软件源
apt update
##### 1.3 修改host主机名
三个节点分别执行如下命令去设置主机名。
hostnamectl hostname master
hostnamectl hostname hadoop1
hostnamectl hostname hadoop2
设置完毕后执行exit命令再重新连接一下,主机名就自动更新过来了。
##### 1.4 配置/etc/hosts主机和ip映射
三个节点分别根据ifconfig获得的实际ip,在配置文件/etc/hosts中添加主机和ip映射。
三个节点都要修改添加映射
root@master:~# vim /etc/hosts
root@hadoop1:~# vim /etc/hosts
root@hadoop2:~# vim /etc/hosts
![image.png](https://i-blog.csdnimg.cn/img_convert/26a2ddf2edd9168b27db8a47f960734a.png)
##### 1.5 安装中文包
(1)三个节点均安装中文简体包
apt install language-pack-zh-hans
(2)配置.bashrc中的环境变量
编辑.bashrc文件
vim ~/.bashrc
添加中文环境变量
export LANG=“zh_CN.UTF-8”
export LANGUAGE=“zh_CN:zh:en_US:en”
添加cd命令,每次打开节点终端可以切换到root家目录
cd;
保存退出后,使配置文件生效
source ~/.bashrc
## **2. SSH免密登录配置**
三个节点master、hadoop1、hadoop2之间配置SSH免密登录。
##### 2.1 生成公钥和私钥
(1)master上生成公钥和私钥
root@master:~# ssh-keygen -t rsa
然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)。
(2)hadoop1上生成公钥和私钥
root@hadoop1:~# ssh-keygen -t rsa
(3)hadoop2上生成公钥和私钥
root@hadoop2:~# ssh-keygen -t rsa
##### 2.2 公钥拷贝到要免密登录的目标节点
(1)将master公钥拷贝到要免密登录的目标节点上
root@master:~# ssh-copy-id master
root@master:~# ssh-copy-id hadoop1
root@master:~# ssh-copy-id hadoop2
(2)将hadoop1公钥拷贝到要免密登录的目标节点上
root@hadoop1:~# ssh-copy-id master
root@hadoop1:~# ssh-copy-id hadoop1
root@hadoop1:~# ssh-copy-id hadoop2
(3)将hadoop2公钥拷贝到要免密登录的目标节点上
root@hadoop2:~# ssh-copy-id master
root@hadoop2:~# ssh-copy-id hadoop1
root@hadoop2:~# ssh-copy-id hadoop2
##### 2.3 master上测试一下免密登录
root@master:~# ssh master
root@master:~# ssh hadoop1
root@master:~# ssh hadoop2
## **3. JDK准备**
##### 3.1 jdk安装包上传到master
![image.png](https://i-blog.csdnimg.cn/img_convert/6bedbb6fdc06e3708f8f799634ac84ee.png)
##### 3.2 在三个节点的/opt目录下均创建module目录,用于放在安装的项目组件
root@master:~# mkdir -p /opt/module/
root@hadoop1:~# mkdir -p /opt/module/
root@hadoop2:~# mkdir -p /opt/module/
##### 3.3 jdk安装包解压到/opt/module/目录下并改名
解压至/opt/module目录
root@master:~# tar -zxvf amazon-corretto-11.0.24.8.1-linux-x64.tar.gz -C /opt/module/
改名为jdk
root@master:~# mv /opt/module/amazon-corretto-11.0.24.8.1-linux-x64 /opt/module/jdk
##### 3.4 在.bashrc中添加JAVA_HOME环境变量
root@master:~# vim ~/.bashrc
添加JAVA_HOME环境变量
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk
export PATH=
P
A
T
H
:
PATH:
PATH:JAVA_HOME/bin
保存退出后source一下.bashrc
root@master:~# source ~/.bashrc
##### 3.5 测试Java是否配置成功
root@master:~# java -version
![image.png](https://i-blog.csdnimg.cn/img_convert/60765e65336a5773ca3d1b42c4fa537a.png)
##### 3.6 分发JDK和配置文件.bashrc
分发jdk
root@master:~# scp -r /opt/module/jdk hadoop1:/opt/module
root@master:~# scp -r /opt/module/jdk hadoop2:/opt/module
分发.bashrc
root@master:~# scp ~/.bashrc hadoop1:/root
root@master:~# scp ~/.bashrc hadoop2:/root
hadoop1和hadoop2生效配置文件
root@hadoop1:~# source ~/.bashrc
root@hadoop2:~# source ~/.bashrc
# **2. 集群组件安装**
##### 2.1 Hadoop安装
(1)hadoop安装包上传到master
![image.png](https://i-blog.csdnimg.cn/img_convert/91935017d95c64b55b8ad192e35a5734.png)
(2)hadoop安装包解压到/opt/module/目录下并改名
解压至/opt/module目录
root@master:~# tar -zxvf hadoop-3.3.6.tar.gz -C /opt/module/
改名为hadoop
root@master:~# mv /opt/module/hadoop-3.3.6 /opt/module/hadoop
(3)在.bashrc中添加HADOOP_HOME环境变量
root@master:~# vim ~/.bashrc
添加HADOOP_HOME环境变量
#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop
export PATH=
P
A
T
H
:
PATH:
PATH:HADOOP_HOME/bin
export PATH=
P
A
T
H
:
PATH:
PATH:HADOOP_HOME/sbin
保存退出后source一下.bashrc
root@master:~# source ~/.bashrc
(4)查看Hadoop版本
root@master:~# hadoop version
![image.png](https://i-blog.csdnimg.cn/img_convert/59cdfe8af141c2a829f9abecbc150b51.png)
(5)修改核心配置文件core-site.xml
root@master:~# cd /opt/module/hadoop/etc/hadoop/
root@master:/opt/module/hadoop/etc/hadoop# vim core-site.xml
内容如下:
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
fs.defaultFS hdfs://master:8020
<!-- 指定hadoop数据的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop/data</value>
</property>
<!-- 配置HDFS网页登录使用的静态用户为root -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>root</value>
</property>
<!-- 配置该root(superUser)允许通过代理访问的主机节点 -->
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<!-- 配置该root(superUser)允许通过代理用户所属组 -->
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
<!-- 配置该root(superUser)允许通过代理的用户-->
<property>
<name>hadoop.proxyuser.root.users</name>
<value>*</value>
</property>
```
(6)修改HDFS配置文件hdfs-site.xml
root@master:/opt/module/hadoop/etc/hadoop# vim hdfs-site.xml
内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- nn web端访问地址-->
<property>
<name>dfs.namenode.http-address</name>
<value>master:9870</value>
</property>
<!-- 2nn web端访问地址-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop2:9868</value>
</property>
<!-- HDFS副本的数量3 -->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
</configuration>
(7)修改YARN配置文件yarn-site.xml
root@master:/opt/module/hadoop/etc/hadoop# vim yarn-site.xml
内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- 指定MR走shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定ResourceManager的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop1</value>
</property>
<!--yarn单个容器允许分配的最大最小内存 -->
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>512</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>4096</value>
</property>
<!-- yarn容器允许管理的物理内存大小 -->
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>4096</value>
</property>
<!-- 关闭yarn对物理内存和虚拟内存的限制检查 -->
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>true</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
<!-- 开启日志聚集功能 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 设置日志聚集服务器地址 -->
<property>
<name>yarn.log.server.url</name>
<value>http://master:19888/jobhistory/logs</value>
</property>
<!-- 设置日志保留时间为7天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
</configuration>
(8)修改MapReduce配置文件mapred-site.xml
root@master:/opt/module/hadoop/etc/hadoop# vim mapred-site.xml
内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- 指定MapReduce程序运行在Yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- 历史服务器端地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<!-- 历史服务器web端地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
</configuration>
(9)修改配置文件workers
root@master:/opt/module/hadoop/etc/hadoop# vim workers
内容如下:
master
hadoop1
hadoop2
(10)在相关env配置文件中添加环境变量
hadoop-env.sh中添加配置:
root@master:/opt/module/hadoop/etc/hadoop# vim hadoop-env.sh
# Many of the options here are built from the perspective that users
# may want to provide OVERWRITING values on the command line.
# For example:
#
export JAVA_HOME=/opt/module/jdk
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_JOURNALNODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
yarn-env.sh中添加配置:
root@master:/opt/module/hadoop/etc/hadoop# vim yarn-env.sh
###
# YARN Services parameters
###
# Directory containing service examples
# export YARN_SERVICE_EXAMPLES_DIR = $HADOOP_YARN_HOME/share/hadoop/yarn/yarn-service-examples
# export YARN_CONTAINER_RUNTIME_DOCKER_RUN_OVERRIDE_DISABLE=true
export JAVA_HOME=/opt/module/jdk
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
export YARN_PROXYSERVER_USER=root
mapred-env.sh中添加配置:
root@master:/opt/module/hadoop/etc/hadoop# vim mapred-env.sh
# Specify the log4j settings for the JobHistoryServer
# Java property: hadoop.root.logger
#export HADOOP_JHS_LOGGER=INFO,RFA
export JAVA_HOME=/opt/module/jdk
(11)在.bashrc中添加HDFS和YARN的root权限环境变量
由于运行Hadoop集群默认是基于普通用户权限,当前是root用户,需要在配置文件.bashrc中设置相关的环境变量。
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_JOURNALNODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
export YARN_PROXYSERVER_USER=root
(12)分发hadoop和配置文件.bashrc
# 分发hadoop
root@master:~# scp -r /opt/module/hadoop hadoop1:/opt/module
root@master:~# scp -r /opt/module/hadoop hadoop2:/opt/module
# 分发.bashrc
root@master:~# scp ~/.bashrc hadoop1:/root
root@master:~# scp ~/.bashrc hadoop2:/root
# hadoop1和hadoop2生效配置文件
root@hadoop1:~# source ~/.bashrc
root@hadoop2:~# source ~/.bashrc
(13)启动集群
如果集群是第一次启动,需要在节点格式化NameNode(注意格式化之前,一定要先停止上次启动的所有namenode和datanode进程,然后再删除data和log数据)
root@master:~# hdfs namenode -format
启动HDFS:
root@master:~# start-dfs.sh
在配置了ResourceManager的节点(hadoop1)启动YARN:
root@hadoop1:~# start-yarn.sh
查看启动成功的进程:
(14)添加HTTP服务端口查看Web管理
master节点配置端口和查看:
hadoop1节点配置端口和查看:
hadoop2节点配置端口和查看:
(15)hadoop群起脚本
root@master:~# vim bin/hd.sh
内容如下:
#! /bin/bash
#hd.sh start/stop
#1、判断参数是否传入
if [ $# -lt 1 ]
then
echo "必须传入start/stop..."
exit
fi
#2、根据参数启动/停止
case $1 in
"start")
echo " =================== 启动 hadoop集群 ==================="
echo " --------------- 启动 hdfs ---------------"
ssh master "/opt/module/hadoop/sbin/start-dfs.sh"
echo " --------------- 启动 yarn ---------------"
ssh hadoop1 "/opt/module/hadoop/sbin/start-yarn.sh"
echo " --------------- 启动 historyserver ---------------"
ssh master "/opt/module/hadoop/bin/mapred --daemon start historyserver"
;;
"stop")
echo " =================== 关闭 hadoop集群 ==================="
echo " --------------- 关闭 historyserver ---------------"
ssh master "/opt/module/hadoop/bin/mapred --daemon stop historyserver"
echo " --------------- 关闭 yarn ---------------"
ssh hadoop1 "/opt/module/hadoop/sbin/stop-yarn.sh"
echo " --------------- 关闭 hdfs ---------------"
ssh master "/opt/module/hadoop/sbin/stop-dfs.sh"
;;
*)
echo "输入参数错误..."
;;
esac
增加脚本执行权限:
root@master:~# chmod +x bin/hd.sh
在配置文件.bashrc中添加脚本路径:
root@master:~# vim ~/.bashrc
# 添加脚本路径
export PATH=$PATH:/root/bin
# 保存退出后source一下.bashrc
root@master:~# source ~/.bashrc
启动hadoop集群(hdfs、yarn、historyServer):
root@master:~# hd.sh start
停止hadoop集群:
root@master:~# hd.sh stop
2.2 Zookeeper安装
(1)zookeeper安装包上传到master
(2)zookeeper安装包解压到/opt/module/目录下并改名
# 解压至/opt/module目录
root@master:~# tar -zxvf apache-zookeeper-3.7.1-bin.tar.gz -C /opt/module/
# 改名为zookeeper
root@master:~# mv /opt/module/apache-zookeeper-3.7.1-bin /opt/module/zookeeper
(3)在.bashrc中添加ZK_HOME环境变量
root@master:~# vim ~/.bashrc
# 添加ZK_HOME环境变量
#ZK_HOME
export ZK_HOME=/opt/module/zookeeper
export PATH=$PATH:$ZK_HOME/bin
# 保存退出后source一下.bashrc
root@master:~# source ~/.bashrc
(4)配置服务器编号
在/opt/module/zookeeper/目录下创建zkData:
root@master:~# cd /opt/module/zookeeper/
root@master:/opt/module/zookeeper# mkdir zkData
在/opt/module/zookeeper/zkData目录下创建一个myid的文件:
root@master:/opt/module/zookeeper/zkData# vim myid
添加myid文件,注意一定要在Linux里面创建,在notepad++里面很可能乱码。
在文件中添加与server对应的编号:
1
(5)配置zoo.cfg文件
重命名/opt/module/zookeeper/conf目录下的zoo_sample.cfg为zoo.cfg:
root@master:/opt/module/zookeeper/conf# mv zoo_sample.cfg zoo.cfg
打开zoo.cfg文件:
root@master:/opt/module/zookeeper/conf# vim zoo.cfg
修改数据存储路径配置:
dataDir=/opt/module/zookeeper/zkData
添加如下配置:
#######################cluster##########################
server.1=master:2888:3888
server.2=hadoop1:2888:3888
server.3=hadoop2:2888:3888
(6)分发zookeeper和配置文件.bashrc
# 分发zookeeper
root@master:~# scp -r /opt/module/zookeeper hadoop1:/opt/module
root@master:~# scp -r /opt/module/zookeeper hadoop2:/opt/module
# 分发.bashrc
root@master:~# scp ~/.bashrc hadoop1:/root
root@master:~# scp ~/.bashrc hadoop2:/root
# hadoop1和hadoop2生效配置文件
root@hadoop1:~# source ~/.bashrc
root@hadoop2:~# source ~/.bashrc
分别修改hadoop1、hadoop2上的myid文件中内容为2、3
(7)zoo.cfg配置参数解读
server.A=B:C:D。
A是一个数字,表示这个是第几号服务器;
集群模式下配置一个文件myid,这个文件在dataDir目录下,这个文件里面有一个数据就是A的值,Zookeeper启动时读取此文件,拿到里面的数据与zoo.cfg里面的配置信息比较从而判断到底是哪个server。
B是这个服务器的地址;
C是这个服务器Follower与集群中的Leader服务器交换信息的端口;
D是万一集群中的Leader服务器挂了,需要一个端口来重新进行选举,选出一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口。
(8)启动zookeeper和查看状态
root@master:~# zkServer.sh start
root@hadoop1:~# zkServer.sh start
root@hadoop2:~# zkServer.sh start
root@master:~# zkServer.sh status
JMX enabled by default
Using config: /opt/module/zookeeper/bin/../conf/zoo.cfg
Mode: follower
root@hadoop1:~# zkServer.sh status
JMX enabled by default
Using config: /opt/module/zookeeper/bin/../conf/zoo.cfg
Mode: leader
root@hadoop2:~# zkServer.sh status
JMX enabled by default
Using config: /opt/module/zookeeper/bin/../conf/zoo.cfg
Mode: follower
(9)ZK集群启动停止脚本
root@master:~# vim bin/zk.sh
内容如下:
#! /bin/bash
#zk.sh start/stop/status
#1、判断参数是否传入
if [ $# -lt 1 ]
then
echo "必须传入start/stop/status..."
exit
fi
#2、根据参数匹配启动/停止/查看状态
case $1 in
"start"){
for i in master hadoop1 hadoop2
do
echo ---------- zookeeper $i 启动 ------------
ssh $i "/opt/module/zookeeper/bin/zkServer.sh start"
done
};;
"stop"){
for i in master hadoop1 hadoop2
do
echo ---------- zookeeper $i 停止 ------------
ssh $i "/opt/module/zookeeper/bin/zkServer.sh stop"
done
};;
"status"){
for i in master hadoop1 hadoop2
do
echo ---------- zookeeper $i 状态 ------------
ssh $i "/opt/module/zookeeper/bin/zkServer.sh status"
done
};;
esac
增加脚本执行权限:
root@master:~# chmod +x bin/zk.sh
启动ZK集群:
root@master:~# zk.sh start
查看ZK集群状态:
root@master:~# zk.sh status
停止ZK集群:
root@master:~# zk.sh stop
2.3 Kafka安装
(1)kafka安装包上传到master
(2)kafka安装包解压到/opt/module/目录下并改名
# 解压至/opt/module目录
root@master:~# tar -zxvf kafka_2.12-3.3.1.tgz -C /opt/module/
# 改名为kafka
root@master:~# mv /opt/module/kafka_2.12-3.3.1 /opt/module/kafka
(3)在.bashrc中添加KAFKA_HOME环境变量
root@master:~# vim ~/.bashrc
# 添加KAFKA_HOME环境变量
#KAFKA_HOME
export KAFKA_HOME=/opt/module/kafka
export PATH=$PATH:$KAFKA_HOME/bin
# 保存退出后source一下.bashrc
root@master:~# source ~/.bashrc
(4)进入到/opt/module/kafka目录,修改配置文件
root@master:~# cd /opt/module/kafka/config/
root@master:/opt/module/kafka/config# vim server.properties
输入内容如下:
#broker的全局唯一编号,不能重复,只能是数字。
broker.id=0
#broker对外暴露的IP和端口 (每个节点单独配置)
advertised.listeners=PLAINTEXT://master:9092
#处理网络请求的线程数量
num.network.threads=3
#用来处理磁盘IO的线程数量
num.io.threads=8
#发送套接字的缓冲区大小
socket.send.buffer.bytes=102400
#接收套接字的缓冲区大小
socket.receive.buffer.bytes=102400
#请求套接字的缓冲区大小
socket.request.max.bytes=104857600
#kafka运行日志(数据)存放的路径,路径不需要提前创建,kafka自动帮你创建,可以配置多个磁盘路径,路径与路径之间可以用","分隔
log.dirs=/opt/module/kafka/datas
#topic在当前broker上的分区个数
num.partitions=1
#用来恢复和清理data下数据的线程数量
num.recovery.threads.per.data.dir=1
# 每个topic创建时的副本数,默认时1个副本
offsets.topic.replication.factor=1
#segment文件保留的最长时间,超时将被删除
log.retention.hours=168
#每个segment文件的大小,默认最大1G
log.segment.bytes=1073741824
# 检查过期数据的时间,默认5分钟检查一次是否数据过期
log.retention.check.interval.ms=300000
#配置连接Zookeeper集群地址(在zk根目录下创建/kafka,方便管理)
zookeeper.connect=master:2181,hadoop1:2181,hadoop2:2181/kafka
(5)分发kafka和配置文件.bashrc
# 分发kafka
root@master:~# scp -r /opt/module/kafka hadoop1:/opt/module
root@master:~# scp -r /opt/module/kafka hadoop2:/opt/module
# 分发.bashrc
root@master:~# scp ~/.bashrc hadoop1:/root
root@master:~# scp ~/.bashrc hadoop2:/root
# hadoop1和hadoop2生效配置文件
root@hadoop1:~# source ~/.bashrc
root@hadoop2:~# source ~/.bashrc
(6)分别在hadoop1和hadoop2上修改配置文件/opt/module/kafka/config/server.properties中的broker.id及advertised.listeners
hadoop1:
# The id of the broker. This must be set to a unique integer for each broker.
broker.id=1
#broker对外暴露的IP和端口 (每个节点单独配置)
advertised.listeners=PLAINTEXT://hadoop1:9092
hadoop2:
# The id of the broker. This must be set to a unique integer for each broker.
broker.id=1
#broker对外暴露的IP和端口 (每个节点单独配置)
advertised.listeners=PLAINTEXT://hadoop2:9092
注:broker.id不得重复,整个集群中唯一。
(7)启动集群
先启动ZK集群:
root@master:~# zk.sh start
依次在master、hadoop1、hadoop2节点上启动Kafka:
root@master:~# kafka-server-start.sh -daemon config/server.properties
root@hadoop1:~# kafka-server-start.sh -daemon config/server.properties
root@hadoop2:~# kafka-server-start.sh -daemon config/server.properties
节点上依次查看进程:
root@master:~# jps
root@hadoop1:~# jps
root@hadoop2:~# jps
--------- master ----------
3768 QuorumPeerMain
4251 Kafka
4349 Jps
--------- hadoop1 ----------
4769 Kafka
4292 QuorumPeerMain
4878 Jps
--------- hadoop2 ----------
3298 Jps
3206 Kafka
2719 QuorumPeerMain
(8)关闭集群
root@master:~# kafka-server-stop.sh
root@hadoop1:~# kafka-server-stop.sh
root@hadoop2:~# kafka-server-stop.sh
(9)集群启停脚本
root@master:~# vim bin/kf.sh
内容如下:
#! /bin/bash
#kf.sh start/stop
#1、判断参数是否传入
if [ $# -lt 1 ]
then
echo "必须传入start/stop..."
exit
fi
#2、根据参数匹配启动/停止
case $1 in
"start"){
for i in master hadoop1 hadoop2
do
echo " --------启动 $i Kafka--------"
ssh $i "/opt/module/kafka/bin/kafka-server-start.sh -daemon /opt/module/kafka/config/server.properties"
done
};;
"stop"){
for i in master hadoop1 hadoop2
do
echo " --------停止 $i Kafka--------"
ssh $i "/opt/module/kafka/bin/kafka-server-stop.sh "
done
};;
esac
增加脚本执行权限:
root@master:~# chmod +x bin/kf.sh
启动kafka集群:
root@master:~# kf.sh start
停止kafka集群:
root@master:~# kf.sh stop
2.4 Flume安装
(1)flume安装包上传到master
(2)flume安装包解压到/opt/module/目录下并改名
# 解压至/opt/module目录
root@master:~# tar -zxvf apache-flume-1.10.1-bin.tar.gz -C /opt/module/
# 改名为flume
root@master:~# mv /opt/module/apache-flume-1.10.1-bin /opt/module/flume
(3)在.bashrc中添加FLUME_HOME环境变量
root@master:~# vim ~/.bashrc
# 添加FLUME_HOME环境变量
#FLUME_HOME
export FLUME_HOME=/opt/module/flume
export PATH=$PATH:$FLUME_HOME/bin
# 保存退出后source一下.bashrc
root@master:~# source ~/.bashrc
(4)修改conf目录下的log4j2.xml配置文件,配置日志文件路径
root@master:~# cd /opt/module/flume/conf/
root@master:/opt/module/flume/conf# vim log4j2.xml
内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="ERROR">
<Properties>
# 指定日志路径
<Property name="LOG_DIR">/opt/module/flume/log</Property>
</Properties>
<Appenders>
<Console name="Console" target="SYSTEM_ERR">
<PatternLayout pattern="%d (%t) [%p - %l] %m%n" />
</Console>
<RollingFile name="LogFile" fileName="${LOG_DIR}/flume.log" filePattern="${LOG_DIR}/archive/flume.log.%d{yyyyMMdd}-%i">
<PatternLayout pattern="%d{dd MMM yyyy HH:mm:ss,SSS} %-5p [%t] (%C.%M:%L) %equals{%x}{[]}{} - %m%n" />
<Policies>
<!-- Roll every night at midnight or when the file reaches 100MB -->
<SizeBasedTriggeringPolicy size="100 MB"/>
<CronTriggeringPolicy schedule="0 0 0 * * ?"/>
</Policies>
<DefaultRolloverStrategy min="1" max="20">
<Delete basePath="${LOG_DIR}/archive">
<!-- Nested conditions: the inner condition is only evaluated on files for which the outer conditions are true. -->
<IfFileName glob="flume.log.*">
<!-- Only allow 1 GB of files to accumulate -->
<IfAccumulatedFileSize exceeds="1 GB"/>
</IfFileName>
</Delete>
</DefaultRolloverStrategy>
</RollingFile>
</Appenders>
<Loggers>
<Logger name="org.apache.flume.lifecycle" level="info"/>
<Logger name="org.jboss" level="WARN"/>
<Logger name="org.apache.avro.ipc.netty.NettyTransceiver" level="WARN"/>
<Logger name="org.apache.hadoop" level="INFO"/>
<Logger name="org.apache.hadoop.hive" level="ERROR"/>
# 引入控制台输出,方便学习查看日志
<Root level="INFO">
<AppenderRef ref="LogFile" />
<AppenderRef ref="Console" />
</Root>
</Loggers>
</Configuration>
(5)分发flume和配置文件.bashrc
# 分发flume
root@master:~# scp -r /opt/module/flume hadoop1:/opt/module
root@master:~# scp -r /opt/module/flume hadoop2:/opt/module
# 分发.bashrc
root@master:~# scp ~/.bashrc hadoop1:/root
root@master:~# scp ~/.bashrc hadoop2:/root
# hadoop1和hadoop2生效配置文件
root@hadoop1:~# source ~/.bashrc
root@hadoop2:~# source ~/.bashrc
2.5 MySQL安装
(1)mysql安装包上传到master
(2)mysql安装包解压并安装
# 新建mysql目录
root@master:~# mkdir mysql
# 解压mysql安装包至mysql目录
root@master:~# tar -xvf mysql-server_8.0.31-1ubuntu22.04_amd64.deb-bundle.tar -C ./mysql
# 进入到mysql目录执行安装命令
root@master:~/mysql# dpkg -i ./*
# 如果执行这个命令出现有依赖在当前系统中不存在,可以使用如下指令进行修复
root@master:~/mysql# apt install -f
安装过程中会弹出三个界面,前两个是设置mysql数据库的root账号的密码与确认root的密码,可以自己设置你需要的密码(一定要记住这个密码,不然一会登不上了)。最后一个界面直接默认选择第一个选项就可以。
(3)安装完毕后检查mysql的包是否已经全部安装
root@master:~# dpkg -l | grep mysql
(4)启动服务
# 先试用命令检查mysql是否已经启动(一般在安装完成后会默认启动)
root@master:~# systemctl status mysql
# 如果mysql未启动,使用下面命令启动
root@master:~# systemctl start mysql
# 如下表示启动成功
(5)设置root密码和连接权限
# 连接mysql
root@master:~# mysql -uroot -p
# 设置root用户的密码为123456
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by '123456';
mysql> FLUSH privileges;
# 设置客户端连接mysql的权限
mysql> use mysql;
mysql> update user set host = '%' where user ='root';
mysql> flush privileges;
:~# scp ~/.bashrc hadoop2:/root
hadoop1和hadoop2生效配置文件
root@hadoop1:~# source ~/.bashrc
root@hadoop2:~# source ~/.bashrc
##### 2.5 MySQL安装
(1)mysql安装包上传到master
[外链图片转存中...(img-4RWwEnBt-1734949068606)]
(2)mysql安装包解压并安装
新建mysql目录
root@master:~# mkdir mysql
解压mysql安装包至mysql目录
root@master:~# tar -xvf mysql-server_8.0.31-1ubuntu22.04_amd64.deb-bundle.tar -C ./mysql
进入到mysql目录执行安装命令
root@master:~/mysql# dpkg -i ./*
如果执行这个命令出现有依赖在当前系统中不存在,可以使用如下指令进行修复
root@master:~/mysql# apt install -f
安装过程中会弹出三个界面,前两个是设置mysql数据库的root账号的密码与确认root的密码,可以自己设置你需要的密码(一定要记住这个密码,不然一会登不上了)。最后一个界面直接默认选择第一个选项就可以。
(3)安装完毕后检查mysql的包是否已经全部安装
root@master:~# dpkg -l | grep mysql
[外链图片转存中...(img-HGOPQVRt-1734949068607)]
(4)启动服务
先试用命令检查mysql是否已经启动(一般在安装完成后会默认启动)
root@master:~# systemctl status mysql
如果mysql未启动,使用下面命令启动
root@master:~# systemctl start mysql
如下表示启动成功
[外链图片转存中...(img-LWAJhDc9-1734949068607)]
(5)设置root密码和连接权限
连接mysql
root@master:~# mysql -uroot -p
设置root用户的密码为123456
mysql> ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password by ‘123456’;
mysql> FLUSH privileges;
设置客户端连接mysql的权限
mysql> use mysql;
mysql> update user set host = ‘%’ where user =‘root’;
mysql> flush privileges;