hi168大数据离线项目环境搭建

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

查看启动成功的进程:

image.png

(14)添加HTTP服务端口查看Web管理

master节点配置端口和查看:

image.png

24-hdfs.png

25-historyserver.png

hadoop1节点配置端口和查看:

21-hadoop1-yarn端口.png

27-yarn.png

hadoop2节点配置端口和查看:

22-hadoop2-SecondaryNameNode端口.png

28-SecondaryNameNode.png

(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

image.png

(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

image.png

(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

image.png

(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

image.png

(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

image.png

(4)启动服务

# 先试用命令检查mysql是否已经启动(一般在安装完成后会默认启动)
root@master:~# systemctl status mysql

# 如果mysql未启动,使用下面命令启动
root@master:~# systemctl start mysql

# 如下表示启动成功

image.png

(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;




本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/942909.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

分布式专题(10)之ShardingSphere分库分表实战指南

一、ShardingSphere产品介绍 Apache ShardingSphere 是一款分布式的数据库生态系统&#xff0c; 可以将任意数据库转换为分布式数据库&#xff0c;并通过数据分片、弹性伸缩、加密等能力对原有数据库进行增强。Apache ShardingSphere 设计哲学为 Database Plus&#xff0c;旨在…

大模型-Ollama使用相关的笔记

大模型-Ollama使用相关的笔记 解决Ollama外网访问问题&#xff08;配置ollama跨域访问&#xff09;Postman请求样例 解决Ollama外网访问问题&#xff08;配置ollama跨域访问&#xff09; 安装Ollama完毕后&#xff0c; /etc/systemd/system/ollama.service进行如下修改&#…

Python:模拟(包含例题:饮料换购 图像模糊 螺旋矩阵)

模拟题&#xff1a;直接按照题目含义模拟即可&#xff0c;一般不涉及算法 注意&#xff1a; 1.读懂题&#xff1a;理清楚题目流程 2.代码和步骤一一对应&#xff1a;变量名&#xff0c;函数名&#xff0c;函数功能 3.提取重复的部分&#xff0c;写成对应的函数&#xff08;…

【数据库初阶】数据库基础知识

&#x1f389;博主首页&#xff1a; 有趣的中国人 &#x1f389;专栏首页&#xff1a; 数据库初阶 &#x1f389;其它专栏&#xff1a; C初阶 | C进阶 | 初阶数据结构 亲爱的小伙伴们&#xff0c;大家好&#xff01;在这篇文章中&#xff0c;我们将深入浅出地为大家讲解 数据库…

汽车IVI中控开发入门及进阶(四十):FDK AAC音频编解码软件库

概述: FDK AAC是一个用于编码和解码高级音频编码格式音频的开源软件库,由Fraunhofer IIS开发,并作为Android的一部分包含在内。它支持多种音频对象类型,包括MPEG-2和MPEG-4 AAC LC、HE-AAC、HE-AACv2以及AAC-LD和AAC-ELD,用于实时通信。编码库支持高达96 kHz的采样率和多…

Python爬虫:速卖通aliexpress商品详情获取指南

在数字化时代&#xff0c;数据已成为企业竞争的关键资源。对于电商行业而言&#xff0c;获取竞争对手的商品信息是洞察市场动态、优化自身产品策略的重要手段。速卖通&#xff08;AliExpress&#xff09;作为全球知名的跨境电商平台&#xff0c;其商品信息的获取自然成为了许多…

要查询 `user` 表中 `we_chat_open_id` 列不为空的用户数量

要查询 user 表中 we_chat_open_id 列不为空的用户数量&#xff0c;你可以使用以下 SQL 查询语句&#xff1a; SELECT COUNT(*) FROM user WHERE we_chat_open_id IS NOT NULL AND we_chat_open_id ! ;解释&#xff1a; SELECT COUNT(*): 表示要计算符合条件的行数。FROM us…

学习思考:一日三问(学习篇)之匹配VLAN

学习思考&#xff1a;一日三问&#xff08;学习篇&#xff09;之匹配VLAN 一、学了什么&#xff08;是什么&#xff09;1.1 理解LAN与"V"的LAN1.2 理解"V"的LAN怎么还原成LAN1.3 理解二层交换机眼中的"V"的LAN 二、为何会产生需求&#xff08;为…

mac中idea菜单工具栏没有git图标了

1.右击菜单工具栏 2.选中VCS&#xff0c;点击添加 3.搜索你要的工具&#xff0c;选中点击确定就添加了 4.回到上面一个界面&#xff0c;选中你要放到工具栏的工具&#xff0c;点击应用就好了 5.修改图标&#xff0c;快捷键或者右击选中编辑图标 6.选择你要的图标就好了

深度学习中batch_size

Batch size调整和epoch/iteration的关系 训练数据集总共有1000个样本。若batch_size10&#xff0c;那么训练完全体样本集需要100次迭代&#xff0c;1次epoch。 训练样本10000条&#xff0c;batchsize设置为20&#xff0c;将所有的训练样本在同一个模型中训练5遍&#xff0c;则…

Vue使用Tinymce 编辑器

目录 一、下载并重新组织tinymce结构二、使用三、遇到的坑 一、下载并重新组织tinymce结构 下载 npm install tinymce^7 or yarn add tinymce^7重构目录 在node_moudles里找到tinymce文件夹&#xff0c;把里面文件拷贝一份放到public下&#xff0c;如下&#xff1a; -- pub…

【每日学点鸿蒙知识】蓝牙Key、页面元素层级工具、私仓搭建、锁屏显示横幅、app安装到真机

1、HarmonyOS 蓝牙key模块&#xff1f; 蓝牙key模块setCharacteristicChangeNotification后无法在BLECharacteristicChange订阅事件中监听到特征值变化 步骤&#xff1a; 调用setCharacteristicChangeNotification接口&#xff0c;使characteristic的notify属性为true调用wri…

如何记录日常笔记

如何使用Obsidian来记录日常的笔记吗&#xff1f;比如会议记录、读书笔记。 我认为&#xff0c;首先需要做好的就是建立一个单独的分类&#xff0c;比如设置会议记录的文件夹、读书笔记的文件夹&#xff0c;这样各个笔记相互不干扰。 而做日常记录&#xff0c;和我们进行卡片…

`we_chat_union_id IS NOT NULL` 和 `we_chat_union_id != ‘‘` 这两个条件之间的区别

文章目录 1、什么是空字符串&#xff1f;2、两个引号之间加上空格 好的&#xff0c;我们来详细解释一下 we_chat_union_id IS NOT NULL 和 we_chat_union_id ! 这两个条件之间的区别&#xff0c;以及它们在 SQL 查询中的作用&#xff1a; 1. we_chat_union_id IS NOT NULL 含…

NS3学习——tcpVegas算法代码详解(2)

NS3学习——tcpVegas算法代码详解&#xff08;1&#xff09;-CSDN博客 目录 4.TcpVegas类中成员函数 (5) CongestionStateSet函数 (6) IncreaseWindow函数 1.检查是否启用 Vgas 2.判断是否完成了一个“Vegas 周期” 2.1--if&#xff1a;判断RTT样本数量是否足够 2.2--e…

【蓝桥杯——物联网设计与开发】拓展模块3 - 温度传感器模块

目录 一、温度传感器模块 &#xff08;1&#xff09;资源介绍 &#x1f505;原理图 &#x1f505;STS30-DIS-B &#x1f319;引脚分配 &#x1f319;通信 &#x1f319;时钟拉伸&#xff08;Clock Stretching&#xff09; &#x1f319;单次触发模式 &#x1f319;温度数据转…

项目2路由交换

背景 某学校为满足日常教学生活需求&#xff0c;推动数字校园的建设&#xff0c;学校有办公楼和学生宿舍楼和服务器集群三块区域&#xff0c;请合理规划IP地址和VLAN&#xff0c;实现企业内部能够互联互通现要求外网能通过公网地址访问服务器集群&#xff0c;学生和老师能正常…

计算机网络概要与习题

第1章 概论 1、计算机网络 2、互联网 3、计算机网络体系结构 分层模型 OSI/RM 7层模型 TCP/IP 5层模型 协议、PDU、SDU、SAP等术语 数据封装&#xff08;计算&#xff09; 第2章 数据通信基础 1、数据通信系统组成 2、主要性能指标 数据传输速率 码元速率 时延 …

使用VsCode编译调试Neo4j源码

文章目录 使用VsCode编译调试Neo4j源码1 简介2 步骤1 下载源码2 依赖3 构建Neo4j4 运行5 安装VsCode扩展6 **调试** 使用VsCode编译调试Neo4j源码 1 简介 Neo4j作为领先的图数据库&#xff0c;在存储、查询上都非常值得分析学习。通过调试、日志等方法跟踪代码工作流有助于理…

HTML-CSS(day01)

W3C标准&#xff1a; W3C&#xff08; World Wide Web Consortium&#xff0c;万维网联盟&#xff09; W3C是万维网联盟&#xff0c;这个组成是用来定义标准的。他们规定了一个网页是由三部分组成&#xff0c;分别是&#xff1a; 三个组成部分&#xff1a;&#xff08;1&…