当前位置: 首页 > news >正文

实操Hadoop大数据高可用集群搭建(hadoop3.1.3+zookeeper3.5.7+hbase3.1.3+kafka2.12)

前言

纯实操,无理论,本文是给公司搭建测试环境时记录的,已经按照这一套搭了四五遍大数据集群了,目前使用还未发现问题。
有问题麻烦指出,万分感谢!
PS:Centos7.9、Rocky9.1可用

集群配置

iphostname系统CPU内存系统盘数据盘备注
192.168.22.221hadoop1Centos7.9416250G
192.168.22.222hadoop2Centos7.9416250G
192.168.22.223hadoop3Centos7.9416250G

规划集群

hadoop1hadoop2hadoop3备注
NameNode
NameNodehadoop
JournalNodeJournalNodeJournalNode
DataNodeDataNodeDataNode
ResourceManagerResourceManager
NodeManagerNodeManagerNodeManager
JobHistoryServer
DFSZKFailoverControllerDFSZKFailoverControllerDFSZKFailoverController
QuorumPeerMainQuorumPeerMainQuorumPeerMainzookeeper
KafkaKafkaKafkakafka
HMatserHMatserHBase
HRegionServerHRegionServerHRegionServer
Flink

工具配置

yum install -y epel-release
yum install -y net-tools 
yum install -y vim
yum install -y rsync#关闭防火墙 和 自启动
systemctl stop firewalld
systemctl disable firewalld.service

修改Centos主机名称

vim /etc/hostname
#输入主机名称vim /etc/hosts
192.168.22.221 hadoop1
192.168.22.222 hadoop2
192.168.22.223 hadoop3

PS:可先配置脚本方便分发,见底部脚本大全

创建用户

#创建程序用户 区分root
useradd hadoop
passwd hadoop#修改/etc/sudoers文件,在%wheel这行下面添加一行,如下所示:
## Allow root to run any commands anywhere
root    ALL=(ALL)     ALL## Allows people in group wheel to run all commands
%wheel  ALL=(ALL)       ALL
hadoop   ALL=(ALL)     NOPASSWD:ALL#创建文件夹以安装程序
mkdir /opt/module
mkdir /opt/software#分配用户组
chown hadoop:hadoop /opt/module
chown hadoop:hadoop /opt/software

SHH免密登录

#/home/hadoop/.ssh
ssh-keygen -t rsa#将公钥拷贝到免密登录的目标机器上
ssh-copy-id hadoop1
ssh-copy-id hadoop2
ssh-copy-id hadoop3

JDK安装

PS:环境变量可翻到对应目录,一次配齐。

###解压缩
tar -zxvf /opt/software/jdk-8u212-linux-x64.tar.gz -C /opt/module/#配置变量
sudo vim /etc/profile.d/my_env.sh#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin#配置生效
source /etc/profile#检验安装
java -version

zookeeper配置

#解压到指定目录
tar -zxvf /opt/software/apache-zookeeper-3.5.7-bin.tar.gz -C /opt/module/#修改名称
mv /opt/module/apache-zookeeper-3.5.7-bin /opt/module/zookeeper-3.5.7#将/opt/module/zookeeper-3.5.7/conf 这个路径下的 zoo_sample.cfg 修改为 zoo.cfg;
mv zoo_sample.cfg zoo.cfg#打开 zoo.cfg 文件,修改 dataDir 路径:
vim zoo.cfgdataDir=/opt/module/zookeeper-3.5.7/zkData#增加如下配置
#######################cluster##########################
server.1=hadoop1:2888:3888
server.2=hadoop2:2888:3888
server.3=hadoop3:2888:3888#创建zkData
mkdir zkData#在/opt/module/zookeeper-3.5.7/zkData 目录下创建一个 myid 的文件
#在文件中添加与 server 对应的编号(注意:上下不要有空行,左右不要有空格)
vi /opt/module/zookeeper-3.5.7/zkData/myid1#分发配置好的zookeeper
xsync zookeeper-3.5.7#修改对应的myid
#比如hadoop2 为2、hadoop3 为3#脚本启动 Zookeeper
bin/zkServer.sh start#查看状态
bin/zkServer.sh status#启动客户端
bin/zkCli.sh#未关闭防火墙需要
#开放端口2888/3888(add为添加,remove为移除)
xcall sudo firewall-cmd --zone=public --permanent --add-port=2181/tcp
xcall sudo firewall-cmd --zone=public --permanent --add-port=2888/tcp
xcall sudo firewall-cmd --zone=public --permanent --add-port=3888/tcp# 并重载入添加的端口:
xcall sudo firewall-cmd --reload# 再次查询端口开放情况,确定2888和3888开放
xcall sudo firewall-cmd --zone=public --list-ports

hadoop配置

安装与配置环境

###解压缩
tar -zxvf /opt/software/hadoop-3.1.3.tar.gz -C /opt/module/#重命名
mv hadoop-3.1.3 hadoop#配置变量
sudo vim /etc/profile.d/my_env.sh#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin#配置生效
source /etc/profile#查看版本
hadoop version#未关闭防火墙需要开放端口
xcall sudo firewall-cmd --zone=public --permanent --add-port=8020/tcp
xcall sudo firewall-cmd --zone=public --permanent --add-port=9870/tcp
xcall sudo firewall-cmd --zone=public --permanent --add-port=8485/tcp
xcall sudo firewall-cmd --zone=public --permanent --add-port=8088/tcp
xcall sudo firewall-cmd --zone=public --permanent --add-port=8032/tcp
xcall sudo firewall-cmd --zone=public --permanent --add-port=8030/tcp
xcall sudo firewall-cmd --zone=public --permanent --add-port=8031/tcp
xcall sudo firewall-cmd --zone=public --permanent --add-port=19888/tcp
xcall sudo firewall-cmd --zone=public --permanent --add-port=10020/tcp# 并重载入添加的端口:
xcall sudo firewall-cmd --reload# 再次查询端口开放情况,确定2888和3888开放
xcall sudo firewall-cmd --zone=public --list-ports

/etc/hadoop 配置文件

1、core-site.xml
<configuration><!-- 把多个 NameNode 的地址组装成一个集群 mycluster --><property><name>fs.defaultFS</name><value>hdfs://mycluster</value></property><!-- 指定 hadoop 运行时产生文件的存储目录 --><property><name>hadoop.tmp.dir</name><value>/home/hadoop/data</value></property><!-- 配置HDFS网页登录使用的静态用户为hadoop --><property><name>hadoop.http.staticuser.user</name><value>hadoop</value></property><!-- 指定 zkfc 要连接的 zkServer 地址 --><property><name>ha.zookeeper.quorum</name><value>hadoop1:2181,hadoop2:2181,hadoop3:2181</value></property>
</configuration>
2、hdfs-site.xml
<configuration><!-- NameNode 数据存储目录 --><property><name>dfs.namenode.name.dir</name><value>file://${hadoop.tmp.dir}/name</value></property><!-- DataNode 数据存储目录 --><property><name>dfs.datanode.data.dir</name><value>file://${hadoop.tmp.dir}/data</value></property><!-- JournalNode 数据存储目录 --><property><name>dfs.journalnode.edits.dir</name><value>${hadoop.tmp.dir}/jn</value></property><!-- 完全分布式集群名称 --><property><name>dfs.nameservices</name><value>mycluster</value></property><!-- 集群中 NameNode 节点都有哪些 --><property><name>dfs.ha.namenodes.mycluster</name><value>nn1,nn2</value></property><!-- NameNode 的 RPC 通信地址 --><property><name>dfs.namenode.rpc-address.mycluster.nn1</name><value>hadoop1:8020</value></property><property><name>dfs.namenode.rpc-address.mycluster.nn2</name><value>hadoop3:8020</value></property><!-- NameNode 的 http 通信地址 --><property><name>dfs.namenode.http-address.mycluster.nn1</name><value>hadoop1:9870</value></property><property><name>dfs.namenode.http-address.mycluster.nn2</name><value>hadoop3:9870</value></property><!-- 指定 NameNode 元数据在 JournalNode 上的存放位置 --><property><name>dfs.namenode.shared.edits.dir</name><value>qjournal://hadoop1:8485;hadoop2:8485;hadoop3:8485/mycluster</value></property><!-- 访问代理类:client 用于确定哪个 NameNode 为 Active --><property><name>dfs.client.failover.proxy.provider.mycluster</name><value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value></property><!-- 配置隔离机制,即同一时刻只能有一台服务器对外响应 --><property><name>dfs.ha.fencing.methods</name><value>sshfence</value><value>shell(true)</value></property><!-- 使用隔离机制时需要 ssh 秘钥登录--><property><name>dfs.ha.fencing.ssh.private-key-files</name><value>/home/hadoop/.ssh/id_rsa</value></property><!-- 启用 nn 故障自动转移 --><property><name>dfs.ha.automatic-failover.enabled</name><value>true</value></property></configuration>
3、yarn-site.xml
<?xml version="1.0"?>
<configuration><!-- Site specific YARN configuration properties --><!-- 指定MR走shuffle --><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><!-- 启用 resourcemanager ha --><property><name>yarn.resourcemanager.ha.enabled</name><value>true</value></property><!-- 声明两台 resourcemanager 的地址 --><property><name>yarn.resourcemanager.cluster-id</name><value>cluster-yarn1</value></property><!--指定 resourcemanager 的逻辑列表--><property><name>yarn.resourcemanager.ha.rm-ids</name><value>rm2,rm3</value></property><!-- ========== rm1 的配置 ========== --><!-- ========== rm2 的配置 ========== --><!-- 指定 rm2 的主机名 --><property><name>yarn.resourcemanager.hostname.rm2</name><value>hadoop2</value></property><property><name>yarn.resourcemanager.webapp.address.rm2</name><value>hadoop2:8088</value></property><property><name>yarn.resourcemanager.address.rm2</name><value>hadoop2:8032</value></property><property><name>yarn.resourcemanager.scheduler.address.rm2</name><value>hadoop2:8030</value></property><property><name>yarn.resourcemanager.resource-tracker.address.rm2</name><value>hadoop2:8031</value></property><!-- ========== rm3 的配置 ========== --><!-- 指定 rm1 的主机名 --><property><name>yarn.resourcemanager.hostname.rm3</name><value>hadoop3</value></property><!-- 指定 rm1 的 web 端地址 --><property><name>yarn.resourcemanager.webapp.address.rm3</name><value>hadoop3:8088</value></property><!-- 指定 rm1 的内部通信地址 --><property><name>yarn.resourcemanager.address.rm3</name><value>hadoop3:8032</value></property><!-- 指定 AM 向 rm1 申请资源的地址 --><property><name>yarn.resourcemanager.scheduler.address.rm3</name><value>hadoop3:8030</value></property><!-- 指定供 NM 连接的地址 --><property><name>yarn.resourcemanager.resource-tracker.address.rm3</name><value>hadoop3:8031</value></property><!-- 指定 zookeeper 集群的地址 --><property><name>yarn.resourcemanager.zk-address</name><value>hadoop1:2181,hadoop2:2181,hadoop3:2181</value></property><!-- 启用自动恢复 --><property><name>yarn.resourcemanager.recovery.enabled</name><value>true</value></property><!-- 指定 resourcemanager 的状态信息存储在 zookeeper 集群 --><property><name>yarn.resourcemanager.store.class</name><value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value></property><!-- 环境变量的继承 --><property><name>yarn.nodemanager.env-whitelist</name><value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value></property><!-- 开启日志聚集功能 --><property><name>yarn.log-aggregation-enable</name><value>true</value></property><!-- 设置日志聚集服务器地址 --><property><name>yarn.log.server.url</name><value>http://hadoop1:19888/jobhistory/logs</value></property><!-- 设置日志保留时间为7天 --><property><name>yarn.log-aggregation.retain-seconds</name><value>604800</value></property><!-- 选择调度器,默认容量 --><property><description>The class to use as the resource scheduler.</description><name>yarn.resourcemanager.scheduler.class</name><value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value></property><!-- ResourceManager处理调度器请求的线程数量,默认50;如果提交的任务数大于50,可以增加该值,但是不能超过3台 * 4线程 = 12线程(去除其他应用程序实际不能超过8) --><property><description>Number of threads to handle scheduler interface.</description><name>yarn.resourcemanager.scheduler.client.thread-count</name><value>8</value></property><!-- 是否让yarn自动检测硬件进行配置,默认是false,如果该节点有很多其他应用程序,建议手动配置。如果该节点没有其他应用程序,可以采用自动 --><property><description>Enable auto-detection of node capabilities such asmemory and CPU.</description><name>yarn.nodemanager.resource.detect-hardware-capabilities</name><value>false</value></property><!-- 是否将虚拟核数当作CPU核数,默认是false,采用物理CPU核数 --><property><description>Flag to determine if logical processors(such ashyperthreads) should be counted as cores. Only applicable on Linuxwhen yarn.nodemanager.resource.cpu-vcores is set to -1 andyarn.nodemanager.resource.detect-hardware-capabilities is true.</description><name>yarn.nodemanager.resource.count-logical-processors-as-cores</name><value>false</value></property><!-- 虚拟核数和物理核数乘数,默认是1.0 --><property><description>Multiplier to determine how to convert phyiscal cores tovcores. This value is used if yarn.nodemanager.resource.cpu-vcoresis set to -1(which implies auto-calculate vcores) andyarn.nodemanager.resource.detect-hardware-capabilities is set to true. The number of vcores will becalculated as number of CPUs * multiplier.</description><name>yarn.nodemanager.resource.pcores-vcores-multiplier</name><value>1.0</value></property><!-- NodeManager使用内存数,默认8G,修改为4G内存 --><property><description>Amount of physical memory, in MB, that can be allocatedfor containers. If set to -1 andyarn.nodemanager.resource.detect-hardware-capabilities is true, it isautomatically calculated(in case of Windows and Linux).In other cases, the default is 8192MB.</description><name>yarn.nodemanager.resource.memory-mb</name><value>4096</value></property><!-- nodemanager的CPU核数,不按照硬件环境自动设定时默认是8个,修改为4个 --><property><description>Number of vcores that can be allocatedfor containers. This is used by the RM scheduler when allocatingresources for containers. This is not used to limit the number ofCPUs used by YARN containers. If it is set to -1 andyarn.nodemanager.resource.detect-hardware-capabilities is true, it isautomatically determined from the hardware in case of Windows and Linux.In other cases, number of vcores is 8 by default.</description><name>yarn.nodemanager.resource.cpu-vcores</name><value>4</value></property><!-- 容器最小内存,默认1G --><property><description>The minimum allocation for every container request at the RM in MBs. Memory requests lower thanthis will be set to the value of this property. Additionally, a node manager that is configured to have lessmemory than this value will be shut down by the resource manager.</description><name>yarn.scheduler.minimum-allocation-mb</name><value>1024</value></property><!-- 容器最大内存,默认8G,修改为2G --><property><description>The maximum allocation for every container request at the RM in MBs. Memory requests higher thanthis will throw an InvalidResourceRequestException.</description><name>yarn.scheduler.maximum-allocation-mb</name><value>2048</value></property><!-- 容器最小CPU核数,默认1个 --><property><description>The minimum allocation for every container request at the RM in terms of virtual CPU cores.Requests lower than this will be set to the value of this property. Additionally, a node manager that isconfigured to have fewer virtual cores than this value will be shut down by the resource manager.</description><name>yarn.scheduler.minimum-allocation-vcores</name><value>1</value></property><!-- 容器最大CPU核数,默认4个,修改为2个 --><property><description>The maximum allocation for every container request at the RM in terms of virtual CPU cores.Requests higher than this will throw anInvalidResourceRequestException.</description><name>yarn.scheduler.maximum-allocation-vcores</name><value>2</value></property><!-- 虚拟内存检查,默认打开,修改为关闭 --><property><description>Whether virtual memory limits will be enforced forcontainers.</description><name>yarn.nodemanager.vmem-check-enabled</name><value>false</value></property><!-- 虚拟内存和物理内存设置比例,默认2.1 --><property><description>Ratio between virtual memory to physical memory when setting memory limits for containers.Container allocations are expressed in terms of physical memory, and virtual memory usage is allowed toexceed this allocation by this ratio.</description><name>yarn.nodemanager.vmem-pmem-ratio</name><value>2.1</value></property></configuration>
4、mapred-site.xml
<configuration><!-- 指定MapReduce程序运行在Yarn上 --><property><name>mapreduce.framework.name</name><value>yarn</value></property><!-- 历史服务器端地址 --><property><name>mapreduce.jobhistory.address</name><value>hadoop1:10020</value></property><!-- 历史服务器web端地址 --><property><name>mapreduce.jobhistory.webapp.address</name><value>hadoop1:19888</value></property>
</configuration>
5、workers
hadoop1
hadoop2
hadoop3

初始化运行

#分发配置!!!
xsync /opt/module/hadoop/etc/hadoop#启动journalnode,用来初始化namenode
xcall hdfs --daemon start journalnode#初始化hdfs
hdfs namenode -format#单节点先启动namenode
hdfs --daemon start namenode#其余Namenode中执行,同步Namenode
hdfs namenode -bootstrapStandby#初始化zkfc
hdfs zkfc -formatZK#脚本群起
hadoop.sh start

访问ui界面端口为9870确认Namenode已启动。

kafka配置

安装

#解压安装包
tar -zxvf /opt/software/kafka_2.12-3.0.0.tgz -C /opt/module#重命名
mv kafka_2.12-3.0.0/ kafka#进入到/opt/module/kafka目录,修改配置文件
cd config/
vim server.properties#broker 的全局唯一编号,不能重复,只能是数字。 
broker.id=0 
#处理网络请求的线程数量 
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=hadoop1:2181,hadoop2:2181,hadoop3:2181/kafka#分发安装包
xsync kafka/#分别在 hadoop2 hadoop3 上修改配置文件/opt/module/kafka/config/server.properties 中的 broker.id=1、broker.id=2注:broker.id不得重复,整个集群中唯一。#配置环境变量
sudo vim /etc/profile.d/my_env.sh#KAFKA_HOME 
export KAFKA_HOME=/opt/module/kafka
export PATH=$PATH:$KAFKA_HOME/bin#刷新一下环境变量。
source /etc/profile
#分发环境变量文件到其他节点,并 source。
sudo /home/hadoop/bin/xsync /etc/profile.d/my_env.sh#未关闭防火墙需要开放端口
xcall sudo firewall-cmd --zone=public --permanent --add-port=9092/tcp# 并重载入添加的端口:
xcall sudo firewall-cmd --reload# 再次查询端口开放情况,确定2888和3888开放
xcall sudo firewall-cmd --zone=public --list-ports

启动

#先启动 Zookeeper集群,然后启动Kafka。
zk.sh start#群起集群
kf.sh start

HBase配置

安装

#解压tar包
tar -zxvf /opt/software/hbase-2.4.11-bin.tar.gz -C /opt/module#重命名
mv hbase-2.4.11 hbase#未关闭防火墙需要开放端口
xcall sudo firewall-cmd --zone=public --permanent --add-port=16000/tcp
xcall sudo firewall-cmd --zone=public --permanent --add-port=16010/tcp
xcall sudo firewall-cmd --zone=public --permanent --add-port=16020/tcp
xcall sudo firewall-cmd --zone=public --permanent --add-port=16030/tcp# 并重载入添加的端口:
xcall sudo firewall-cmd --reload# 再次查询端口开放情况,确定2888和3888开放
xcall sudo firewall-cmd --zone=public --list-ports

配置环境

hbase-env.sh

export HBASE_MANAGES_ZK=false

hbase-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration><property><name>hbase.zookeeper.quorum</name><value>hadoop1,hadoop2,hadoop3:2181</value><description>The directory shared by RegionServers.</description></property><!-- <property>--><!-- <name>hbase.zookeeper.property.dataDir</name>--><!-- <value>/export/zookeeper</value>--><!-- <description> 记得修改 ZK 的配置文件 --><!-- ZK 的信息不能保存到临时文件夹--><!-- </description>--><!-- </property>--><property><name>hbase.rootdir</name><value>hdfs://hadoop1:8020/hbase</value><description>The directory shared by RegionServers.</description></property><property><name>hbase.cluster.distributed</name><value>true</value></property>
</configuration>
regionservers

hadoop1
hadoop2
hadoop3

backup-masters(新建高可用HMaster备用节点文件)

插入高可用节点,不要有多余符号,直接写host

hadoop3

解决 HBase 和 Hadoop 的 log4j 兼容性问题,修改 HBase 的 jar 包,使用 Hadoop 的 jar 包

mv /opt/module/hbase/lib/client-facing-thirdparty/slf4j-reload4j-1.7.33.jar /opt/module/hbase/lib/client-facing-thirdparty/slf4j-reload4j-1.7.33.jar.bak

启动

#配置环境变量
sudo vim /etc/profile.d/my_env.sh#HBASE_HOME
export HBASE_HOME=/opt/module/hbase
export PATH=$PATH:$HBASE_HOME/bin#生效配置
source /etc/profile.d/my_env.sh#分发my_env.sh
xsync /etc/profile.d/my_env.sh#群起命令
start-hbase.sh

访问:http://hadoop1:16010查看ui界面

flink

脚本大全

1、xsync

#!/bin/bash#1. 判断参数个数
if [ $# -lt 1 ]
thenecho Not Enough Arguement!exit;
fi#2. 遍历集群所有机器
for host in hadoop1 hadoop2 hadoop3
doecho ====================  $host  ====================#3. 遍历所有目录,挨个发送for file in $@do#4. 判断文件是否存在if [ -e $file ]then#5. 获取父目录pdir=$(cd -P $(dirname $file); pwd)#6. 获取当前文件的名称fname=$(basename $file)ssh $host "mkdir -p $pdir"rsync -av $pdir/$fname $host:$pdirelseecho $file does not exists!fidone
done

2、xcall

#!/bin/bash# 获取控制台指令cmd=$*# 判断指令是否为空
if [ ! -n "$cmd" ]
thenecho "command can not be null !"exit
fi# 获取当前登录用户
user=`whoami`# 在从机执行指令,这里需要根据你具体的集群情况配置,host与具体主机名一致,同上
for host in hadoop1 hadoop2 hadoop3
doecho "================current host is $host================="echo "--> excute command \"$cmd\""ssh $user@$host $cmd
done

3、hadoop.sh

#!/bin/bashif [ $# -lt 1 ]
thenecho "No Args Input..."exit ;
ficase $1 in
"start")echo " =================== 启动 hadoop集群 ==================="echo " --------------- 启动 hdfs ---------------"ssh hadoop1 "/opt/module/hadoop/sbin/start-dfs.sh"echo " --------------- 启动 yarn ---------------"ssh hadoop2 "/opt/module/hadoop/sbin/start-yarn.sh"echo " --------------- 启动 historyserver ---------------"ssh hadoop1 "/opt/module/hadoop/bin/mapred --daemon start historyserver"
;;
"stop")echo " =================== 关闭 hadoop集群 ==================="echo " --------------- 关闭 historyserver ---------------"ssh hadoop1 "/opt/module/hadoop/bin/mapred --daemon stop historyserver"echo " --------------- 关闭 yarn ---------------"ssh hadoop2 "/opt/module/hadoop/sbin/stop-yarn.sh"echo " --------------- 关闭 hdfs ---------------"ssh hadoop1 "/opt/module/hadoop/sbin/stop-dfs.sh"
;;
*)echo "Input Args Error..."
;;
esac

4、zk.sh

#!/bin/bash
case $1 in
"start"){for i in hadoop1 hadoop2 hadoop3doecho ---------- zookeeper $i 启动 ------------ssh $i "/opt/module/zookeeper-3.5.7/bin/zkServer.sh start"done
};;
"stop"){for i in hadoop1 hadoop2 hadoop3doecho ---------- zookeeper $i 停止 ------------ssh $i "/opt/module/zookeeper-3.5.7/bin/zkServer.sh stop"done
};;
"status"){for i in hadoop1 hadoop2 hadoop3doecho ---------- zookeeper $i 状态 ------------ssh $i "/opt/module/zookeeper-3.5.7/bin/zkServer.sh status"done
};;
esac

5、kf.sh

#! /bin/bash case $1 in 
"start"){ for i in hadoop1 hadoop2 hadoop3doecho " --------启动 $i Kafka-------" ssh $i "/opt/module/kafka/bin/kafka-server-start.sh -daemon /opt/module/kafka/config/server.properties" done
};; 
"stop"){ for i in hadoop1 hadoop2 hadoop3doecho " --------停止 $i Kafka-------" ssh $i "/opt/module/kafka/bin/kafka-server-stop.sh "done
};;
esac

环境变量

my_env.sh

#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin#HADOOP_HOME
export HADOOP_HOME=/opt/ha/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbinexport PAHT=$PATH:/home/hadoop/bin#KAFKA_HOME
export KAFKA_HOME=/opt/module/kafka
export PATH=$PATH:$KAFKA_HOME/bin#HBASE_HOME
export HBASE_HOME=/opt/module/hbase
export PATH=$PATH:$HBASE_HOME/bin

相关文章:

实操Hadoop大数据高可用集群搭建(hadoop3.1.3+zookeeper3.5.7+hbase3.1.3+kafka2.12)

前言 纯实操&#xff0c;无理论&#xff0c;本文是给公司搭建测试环境时记录的&#xff0c;已经按照这一套搭了四五遍大数据集群了&#xff0c;目前使用还未发现问题。 有问题麻烦指出&#xff0c;万分感谢&#xff01; PS&#xff1a;Centos7.9、Rocky9.1可用 集群配置 iph…...

如何在 Ubuntu 上安装和使用 Nginx?

ginx&#xff08;发音为“engine-x”&#xff09;是一种流行的 Web 服务器软件&#xff0c;以其高性能和可靠性而闻名。它是许多流行网站使用的开源软件&#xff0c;包括 Netflix、GitHub 和 WordPress。Nginx 可以用作 Web 服务器、负载均衡器、反向代理和 HTTP 缓存等。 它以…...

seatunnel win idea 本地调试

调试FakeSource&#xff0c;LocalFile # Set the basic configuration of the task to be performed env {execution.parallelism 1job.mode "BATCH" }# Create a source to connect to Mongodb source {# This is a example source plugin **only for test and d…...

链路追踪Skywalking快速入门

目录 1 Skywalking概述1.1 微服务系统监控三要素1.2 什么是链路追踪1.2.1 链路追踪1.2.2 OpenTracing1、数据模型&#xff1a;2、核心接口语义 1.3 常见APM系统1.4 Skywalking介绍1、SkyWalking 核心功能&#xff1a;2、SkyWalking 特点&#xff1a;3、Skywalking架构图&#x…...

全开源影视APP源码带后台 苍穹影视APP源码 免受权带安装教程

苍穹影视 V20 全新后台七彩视界免受权开源源码此版本为天穹公益版开源无解密安装教程 全新后台很是都雅,源码全开源无加密。 PC 端对接教程&#xff1a; 建议在浮图下操作 正常安装前后端 然后安装米酷 cms 根据教程安装即可 米酷 cms 对接部门已被我改动&#xff0c;只要在安装…...

Qt+C++自建网页浏览器-Chrome blink最新内核基础上搭建-改进版本

程序示例精选 QtC自建网页浏览器-Chrome blink最新内核基础上搭建-改进版本 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对<<QtC自建网页浏览器-Chrome blink最新内核基础上搭建-改进版…...

这场科技巨变,有生之年有希望

见到一文&#xff0c;遂分享欲爆棚&#xff0c;总结如下。 具有人类水平的人工智能大约什么时候可以出现&#xff1f; 人类水平的人工智能&#xff0c;指的是&#xff0c;不需要借助人类&#xff0c;机器能够比人类更好地完成每项任务。 针对这个问题&#xff0c;有家机构在201…...

zemax优化功能

1、三种优化方法 zemax的三种优化方法中&#xff0c;局部优化会找到局部的极小值点&#xff0c;全局优化会找到整体的最小值点。 锤形优化适用于先用全局优化找到大概值后&#xff0c;进一步完善光学系统 对于评价函数单调或者局部最小值就是全局最小值的情况&#xff0c;使…...

Centos8关闭IPV6

编辑 /etc/sysctl.conf 文件。 vi /etc/sysctl.conf 放置以下条目以禁用所有适配器的 IPv6。 net.ipv6.conf.all.disable_ipv6 1 net.ipv6.conf.default.disable_ipv6 1 您可以使用以下条目为特定网络接口禁用 IPv6。 &#xff08;假设网卡名称是enp0s3&#xff09;。 n…...

华为OD七日集训第4期 - 按算法分类,由易到难,循序渐进,玩转OD

目录 一、适合人群二、本期训练时间三、如何参加四、7日集训第4期五、精心挑选21道高频100分经典题目&#xff0c;作为入门。第1天、数据结构第2天、滑动窗口第3天、贪心算法第4天、二分查找第5天、分治递归第6天、深度优先搜索dfs算法第7天、宽度优选算法&#xff0c;回溯法 六…...

flutter 抓包工具charles

本来的代码是忽略证书 ///忽略https证书校验&#xff0c;也就是能请求https的地址了(_dio?.httpClientAdapter as DefaultHttpClientAdapter).onHttpClientCreate (HttpClient client) {client.badCertificateCallback (X509Certificate cert, String host, int port) > tr…...

——二叉树

二叉树种类 二叉树有两种主要的形式&#xff1a;满二叉树和完全二叉树。 满二叉树 如果一棵二叉树只有度为0的结点和度为2的结点&#xff0c;并且度为0的结点在同一层上&#xff0c;则这棵二叉树为满二叉树。 完全二叉树 在完全二叉树中&#xff0c;除了最底层节点可能没…...

【linux命令讲解大全】103.Linux目录堆栈命令 dirs 的使用方法和选项详解

文章目录 dirs概要主要用途选项参数返回值例子注意 从零学 python dirs 显示目录堆栈。 概要 dirs [-clpv] [N] [-N] 主要用途 显示目录堆栈。 清空目录堆栈。 选项 -c&#xff1a;清空目录堆栈。-l&#xff1a;堆栈内以~开头的目录在显示时展开。-p&#xff1a;将目录堆…...

vue3项目应用font awesome6

element-plus框架的图标icon种类较少&#xff0c;一般无法涵盖所有业务情况 这时候引入font awesome6免费版&#xff0c;图标库非常丰富&#xff0c;一般可以满足所有业务场景 官网&#xff1a;https://fa6.dashgame.com/Font Awesome 6&#xff0c;一套始终绝佳的图标字体库…...

【JavaScript】JS语法入门到实战

文章目录 一、初识JavaScript1. 什么是JavaScript&#xff1f;2. JavaScript 和 HTML 和 CSS 之间的关系3. JavaScript的运行过程4. JavaScript的组成 二、JavaScript的书写形式三、变量1. 输入输出2. 变量的使用3. 数据类型 四、运算符五、分支和循环语句1. 分支语句2. 循环语…...

【Linux】工具Gdb调试轻度使用(C++)

目录 一、Gdb背景 二、Gdb基本命令 【2.1】list | l 【2.2】break | b 【2.5】delete | d 【2.6】disable 【2.7】enable 【2.3】info 【2.4】info locals 【2.6】run | r 【2.7】next | n 【2.8】step | s 【2.9】 continue | c 【2.10】bt 【2.11】finish 三…...

linux xhost命令

xhost命令 XHOST 用于管理允许访问系统上 X Server 的主机和用户列表&#xff0c;这些主机和用户都可以从其他主机和同一系统上的其他用户访问。 通常&#xff0c;远程访问将被禁用&#xff0c;因为它会带来安全风险。 但是&#xff0c;如果我们需要在远程计算机上运行 GUI &…...

linux在线源码阅读网站

下面的网站可以在线阅读linux源码&#xff0c;提供了类似github上分析工具&#xff0c;自动具备符号关联的作用&#xff0c;可以方便的供用户分析代码。除了可以分析linux源码外&#xff0c;该网站还可以分析一些其它源码&#xff0c;例如qt等 这个网站有许多功能&#xff0c;…...

css中只使用vue的变量

参考&#xff1a;https://blog.csdn.net/FellAsleep/article/details/130617163 1、必须作用在用一个div上 2、变量必须有双横杠“–” <spanclass"bb" :style"spanStyle">11</span>data() {return {spanStyle: {"--color": #bfa /…...

华为云云耀云服务器L实例评测 | 由于自己原因导致MySQL数据库被攻击 【更新中。。。】

目录 引出起因&#xff08;si因&#xff09;解决报错诶嘿&#xff0c;连上了 不出意外&#xff0c;就出意外了打开数据库what&#xff1f;&#xff1f;&#xff1f; 找华为云求助教训&#xff1a;备份教训&#xff1a;密码 解决1.改密码2.新建一个MySQL&#xff0c;密码设置复杂…...

如何查询成绩或工资

为什么每次查询成绩或者工资的时候都觉得麻烦又耗时呢&#xff1f;在过去&#xff0c;我们可能需要去学校或公司的相关部门&#xff0c;填写繁琐的表格&#xff0c;然后等待工作人员进行查询和处理。这不仅浪费了我们宝贵的时间&#xff0c;还可能出现查询结果不准确或者遗漏的…...

FPGA原理与结构——时钟IP核的使用与测试

一、前言 本文介绍xilinx的时钟IP核 Clocking Wizard v6.0的具体使用与测试过程&#xff0c;在学习一个IP核的使用之前&#xff0c;首先需要对于IP核的具体参数和原理有一个基本的了解&#xff0c;具体可以参考&#xff1a; FPGA原理与结构——时钟IP核原理学习https://blog.c…...

手搓消息队列【RabbitMQ版】

什么是消息队列&#xff1f; 阻塞队列&#xff08;Blocking Queue&#xff09;-> 生产者消费者模型 &#xff08;是在一个进程内&#xff09;所谓的消息队列&#xff0c;就是把阻塞队列这样的数据结构&#xff0c;单独提取成了一个程序&#xff0c;进行独立部署~ --------&…...

Oracle VM VirtualBox 安装 Ubuntu Linux

Virtual Box VirtualBox是一个强大的、面向个人用户或者企业用户的虚拟机产品&#xff0c;其支持x86以及AMD64/Intel64的计算架构&#xff0c;功能特性丰富、性能强劲&#xff0c;支持GPL开源协议&#xff0c;其官方网址是www.virtualbox.org&#xff0c;由Oracle开源&#xf…...

3D WEB轻量化引擎HOOPS Commuicator技术概览(一):数据导入与加载

HOOPS Communicator是一款功能强大的SDK&#xff0c;适用于基于Web的高级工程应用程序&#xff0c;代表HOOPS Web平台的Web开发组件。使用HOOPS Communicator&#xff0c;您可以构建一个在 Web浏览器中提供3D模型的Web应用程序。 HOOPS Communicator可以本地加载多种模型格式。…...

.net 7 隐藏swagger的api

1.写一个隐藏接口特性表示 using Microsoft.AspNetCore.Mvc.ApiExplorer; using Microsoft.OpenApi.Models; using Swashbuckle.AspNetCore.SwaggerGen;using System.Web.Http.Description;namespace JiaTongInterface.Filter {public class SwaggerApi : Swashbuckle.AspNet…...

Maven插件的作用

插件-maven-compiler-plugin <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <sourc…...

C++(三)——运算符重载

运算符重载 重定义或重载大部分 C 内置的运算符就能使用自定义类型的运算符。重载的运算符是带有特殊名称的函数&#xff0c;函数名是由关键字 operator 和其后要重载的运算符符号构成的。与其他函数一样&#xff0c;重载运算符有一个返回类型和一个参数列表。不能为了重载而重…...

【Springcloud】elk分布式日志

【Springcloud】elk分布式日志 【一】基本介绍【二】Elasticsearch【1】简介【2】下载【3】安装【4】启动 【三】Logstash【1】简介【2】下载【3】安装【4】启动 【四】Kibana【1】简介【2】下载【3】安装【4】启动 【五】切换中文【六】日志收集 【一】基本介绍 &#xff08;…...

华为mate60麒麟9000s的架构体系

...

北京礼品网站建设/网络营销的六大功能

入门三问&#xff1a; 组的概念是什么&#xff1f;为什么引入它&#xff1f;有什么用&#xff1f; 答&#xff1a;通过组可以更加方便的管理用户&#xff0c;组的概念应用于各行行业&#xff0c;例如企业会使用部门、职能或地理区域的分类方式来管理成员&#xff0c;映射在Li…...

wordpress需要哪些插件/无锡网络推广平台

实用过创维酷开智能电视“电视派”功能的用户&#xff0c;大部分都可能会觉得很好用。不过&#xff0c;也有部分网友表示&#xff0c;在实际使用中碰到过&#xff0c;电视派控制设备连接wifi总是失败的现象。那么&#xff0c;出现这样的情况&#xff0c;我们用户又该如何处理呢…...

网站制作:网推宝|百度/互联网营销推广

使用plugin生成groovy脚本&#xff0c;或者参考已有的groovy脚本。 文章来自&#xff1a;http://www.ciandcd.com文中的代码来自可以从github下载&#xff1a; https://github.com/ciandcd 1. 使用插件来写groovy脚本 常用的功能&#xff0c;可以安装对应的插件&#xff0c;然后…...

b2b免费信息平台/青岛官网seo

题目链接&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid1106Problem Description输入一行数字&#xff0c;如果我们把这行数字中的‘5’都看成空格&#xff0c;那么就得到一行用空格分割的若干非负整数&#xff08;可能有些整数以‘0’开头&#xff0c;这些头部的‘0…...

做网站用什么cms/如何制作一个网址

点击左上方蓝字关注我们7月27日&#xff0c;百度与中国计算机学会&#xff08;以下简称CCF&#xff09;联合成立的“CCF-百度松果基金”&#xff08;以下简称松果基金&#xff09;在京举行签约仪式&#xff0c;双方将联手面向海内外高校及科研院所的青年学者&#xff0c;搭建产…...

青岛开发区网站制作/兰州网络优化seo

思路1&#xff1a;就是让利用v-if的重新渲染机制 1.首先考虑的就是手动刷了&#xff0c;给组件加个v-if”someShow“; 2.在父组件添加如下方法; // 这是组件上写法 &#xff1a;<my-component v-if"someShow"></my-component>// 下边写在父组件的met…...