前言

此文档为hadoop对应服务部署组件说明,已经部署操作步骤
服务器对应部署服务说明

ip 主机部署服务 服务端口
ip1 DataNode 9864:DataNode的Web UI端口,用于查看DataNode的状态和统计信息。 9866:DataNode的HTTP/HTTPS端口,用于提供DataNode的REST API服务。 9867:DataNode IPC服务,集群组件间通信
NodeManager 8040:用于Hadoop的ResourceManager通信。 8042:NodeManager的Web UI端口,用于查看NodeManager的状态和统计信息。
ip2 DataNode 9864:DataNode的Web UI端口,用于查看DataNode的状态和统计信息。 9866:DataNode的HTTP/HTTPS端口,用于提供DataNode的REST API服务。 9867:DataNode IPC服务,集群组件间通信
nodemanager 8040:用于Hadoop的ResourceManager通信。 8042:NodeManager的Web UI端口,用于查看NodeManager的状态和统计信息。
ip3 DataNode 9864:DataNode的Web UI端口,用于查看DataNode的状态和统计信息。 9866:DataNode的HTTP/HTTPS端口,用于提供DataNode的REST API服务。 9867:DataNode IPC服务,集群组件间通信
nodemanager 8040:用于Hadoop的ResourceManager通信。 8042:NodeManager的Web UI端口,用于查看NodeManager的状态和统计信息。
ip4 DFSZKFailover 8019:用于Zookeeper Failover Controller,它帮助管理NameNode之间的故障转移。
JournalNode 8480:JournalNode的Web UI端口。 8485:JournalNode的RPC服务端口,用于处理来自客户端的请求和数据传输。
NameNode 9870:HDFS NameNode的Web UI端口‌,查看和管理HDFS NameNode的状态和相关信息。 8020:NameNode的RPC端口,客户端通过这个端口与NameNode通信
DataNode 9864:DataNode的Web UI端口,用于查看DataNode的状态和统计信息。 9866:DataNode的HTTP/HTTPS端口,用于提供DataNode的REST API服务。 9867:DataNode IPC服务,集群组件间通信
NodeManager 8040:用于Hadoop的ResourceManager通信。 8042:NodeManager的Web UI端口,用于查看NodeManager的状态和统计信息。
ResourceManager 8088:ResourceManager的Web UI端口。 8030、8031、8032、8033 :ResourceManager的各种内部通信和服务
ip5 DFSZKFailover 8019:用于Zookeeper Failover Controller,它帮助管理NameNode之间的故障转移。
JournalNode 8480:JournalNode的Web UI端口。 8485:JournalNode的RPC服务端口,用于处理来自客户端的请求和数据传输。
NameNode 9870:HDFS NameNode的Web UI端口‌,查看和管理HDFS NameNode的状态和相关信息。 8020:NameNode的RPC端口,客户端通过这个端口与NameNode通信
DataNode 9864:DataNode的Web UI端口,用于查看DataNode的状态和统计信息。 9866:DataNode的HTTP/HTTPS端口,用于提供DataNode的REST API服务。 9867:DataNode IPC服务,集群组件间通信
NodeManager 8040:用于Hadoop的ResourceManager通信。 8042:NodeManager的Web UI端口,用于查看NodeManager的状态和统计信息。
ResourceManager 8088、8030、8031、8032、8033
ip6 DFSZKFailover 8019:用于Zookeeper Failover Controller,它帮助管理NameNode之间的故障转移。
JournalNode 8480:JournalNode的Web UI端口。 8485:JournalNode的RPC服务端口,用于处理来自客户端的请求和数据传输。
NameNode 9864:DataNode的Web UI端口,用于查看DataNode的状态和统计信息。 9866:DataNode的HTTP/HTTPS端口,用于提供DataNode的REST API服务。 9867:DataNode IPC服务,集群组件间通信
DataNode 8040:用于Hadoop的ResourceManager通信。 8042:NodeManager的Web UI端口,用于查看NodeManager的状态和统计信息。
NodeManager 8019:用于Zookeeper Failover Controller,它帮助管理NameNode之间的故障转移。
ResourceManager 8088:ResourceManager的Web UI端口。 8030、8031、8032、8033 :ResourceManager的各种内部通信和服务
ip7 DataNode 9864:DataNode的Web UI端口,用于查看DataNode的状态和统计信息。 9866:DataNode的HTTP/HTTPS端口,用于提供DataNode的REST API服务。 9867:DataNode IPC服务,集群组件间通信
nodemanager 8040:用于Hadoop的ResourceManager通信。 8042:NodeManager的Web UI端口,用于查看NodeManager的状态和统计信息。

创建用户(如果已创建则跳过该步骤)【所有机器均要执行】

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#添加用户及用户组
adduser app

#设置密码
passwd app

#添加用户至用户组
usermod -aG app app

#设置目录权限
chown -R app:app /data

#切换用户
su app

配置hosts(每台服务器配置)【所有机器均要执行】

1
2
3
4
5
6
7
8
9
10
#编辑hosts
vim /etc/hosts

ip1 computeServer1
ip2 computeServer2
ip3 computeServer3
ip4 storageServer1
ip5 storageServer2
ip6 storageServer3
ip7 storageServer4

配置jdk【所有机器均要执行】

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#编辑环境变量
vim /etc/profile

#设置java环境变量
export JAVA_HOME=/data/jdk1.8.0_231
export JRE_HOME=/data/jdk1.8.0_231/jre
export CLASS_PATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
#这里写错了,应该 PATH= $JAVA_HOME/bin:$JRE_HOME/bin:$PATH 把PATH放后面不然从头读取还是读到之前的变量
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

#生效环境变量
source /etc/profile


安装依赖

程序依赖库安装

yum install -y wget gcc gcc-c++ make tar openssl openssl-devel cmake

配置服务器之间免密登录

#生成ssh-key【所有机器均要执行】

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#生成密钥,需要免密登录的机器都需要执行!
ssh-keygen -t rsa -b 4096

cat /home/app/.ssh/id_rsa.pub
#创建authorized keys 第一台机器执行
vim /home/app/.ssh/authorized_keys

#将其他服务器的id_rsa.pub写入authorized_keys
vim /home/app/.ssh/authorized_keys

#分发到其他服务器上
scp /home/app/.ssh/authorized_keys app@IP:/home/app/.ssh/authorized_keys

# 所有需要免密登录的机器进行权限赋权
chmod 700 /home/app
chmod 700 /home/app/.ssh/
chmod 644 /home/app/.ssh/authorized_keys
chmod 600 /home/app/.ssh/id_rsa /home/app/.ssh/id_rsa.pub

# 用ssh测试服务器之间连通性
ssh app@{目标IP}

安装步骤

上传安装包并分发到各服务器

scp /data/upload_dir/hadoop-3.3.0.tar.gz app@server004:/data/upload_dir/

安装****Hadoop【storageServer1 主机执行】

tar -zxvf hadoop-3.3.0.tar.gz -C /data

1
2
3
4
5
6
vim /etc/profile
export HADOOP_HOME=/data/hadoop-3.3.0
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

source /etc/profile

参考

https://blog.csdn.net/tang5615/article/details/120382513

系统设置【storageServer1 主机执行】

说明程序(节点、集群)配置项内容,若配置与集群规模、硬件相关需说明(例如:64C设备下配置PoolSize大小为40)

修改配置文件

Hadoop-env.sh

1
2
3
4
export JAVA_HOME=/data/jdk1.8.0_231
export HADOOP_HOME=/data/hadoop-3.3.0
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HADOOP_LOG_DIR=$HADOOP_HOME/logs

修改yarn-site.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
<?xml version="1.0"?>
<!--
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License. See accompanying LICENSE file.
-->
<configuration>
<!-- NodeManager使用内存数,默认8G,修改为4G内存 -->
<property>
<description>Amount of physical memory, in MB, that can be allocated
for containers.In other cases, the default is 8192MB.
</description>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>57344</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>57344</value>
</property>

<!-- nodemanager的CPU核数,不按照硬件环境自动设定时默认是8个,修改为4个 -->
<property>
<description>Number of vcores that can be allocated for containers.</description>
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>24</value>
</property>
<!-- 设置每个容器可以申请的最大核心数 -->
<property>
<name>yarn.scheduler.maximum-allocation-vcores</name>
<value>24</value>
</property>

<!-- Site specific YARN configuration properties -->
<!-- 启用 resourcemanager ha -->
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<!-- 声明两台 resourcemanager 的地址 -->
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>cluster1</value>
</property>
<!--指定 resourcemanager 的逻辑列表-->
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2,rm3</value>
</property>
<property>
<name>yarn.resourcemanager.recovery.enabled</name>
<value>true</value>
</property>
<property>
<name>yarn.resourcemanager.store.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>storageServer1</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address.rm1</name>
<value>storageServer1:8088</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>storageServer2</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address.rm2</name>
<value>storageServer2:8088</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm3</name>
<value>storageServer3</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address.rm3</name>
<value>storageServer3:8088</value>
</property>
<!--<property>
<name>hadoop.zk.address</name>
<value>queryServer1:2181,queryServer2:2181,queryServer3:2181</value>
</property>-->
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>queryServer1:2181,queryServer2:2181,queryServer3:2181</value>
</property>
<property>
<name>yarn.resourcemanager.recovery.enabled</name>
<value>true</value>
</property>
<property>
<name>yarn.client.failover-proxy-provider</name>
<value>org.apache.hadoop.yarn.client.RequestHedgingRMFailoverProxyProvider</value>
</property>
<!--
<property>
<name>yarn.nodemanager.aux-services</name>
<value>spark_shuffle,mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.spark_shuffle.class</name>
<value>org.apache.spark.network.yarn.YarnShuffleService</value>
</property>
-->

<!--
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
-->
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>

<property>
<name>yarn.nodemanager.aux-services</name>
<value>spark_shuffle,mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.spark_shuffle.class</name>
<value>org.apache.spark.network.yarn.YarnShuffleService</value>
</property>
<!--开启日志聚合-->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>

<property>
<name>yarn.log.server.url</name>
<value>http://storageServer1:19888/jobhistory/logs</value>
</property>
<property>
<name>mapreduce.jobhistroy.address</name>
<value>storageServer1:10020</value>
</property>
<property>
<name>mapreduce.jobhistroy.webapp.address</name>
<value>storageServer1:19888</value>
</property>

<!--用于指定运算时的类加载目录,使用hadoop classpath 查看 可以看出其是share下面的集合-->
<property>
<name>yarn.application.classpath</name>
<value>
/data/hadoop-3.3.0/etc/hadoop:/data/hadoop-3.3.0/share/hadoop/common/lib/*:/data/hadoop-3.3.0/share/hadoop/common/*:/data/hadoop-3.3.0/share/hadoop/hdfs:/data/hadoop-3.3.0/share/hadoop/hdfs/lib/*:/data/hadoop-3.3.0/share/hadoop/hdfs/*:/data/hadoop-3.3.0/share/hadoop/mapreduce/*:/data/hadoop-3.3.0/share/hadoop/yarn:/data/hadoop-3.3.0/share/hadoop/yarn/lib/*:/data/hadoop-3.3.0/share/hadoop/yarn/*
</value>
</property>
<!--是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认是 true -->
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<!--是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是 true -->
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
</configuration>

修改core-site.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License. See accompanying LICENSE file.
-->

<!-- Put site-specific property overrides in this file. -->

<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://mycluster</value>
</property>
<!--配置HDFS主协议-->
<!--<property>
<name>fs.defaultFS</name>
<value>hdfs://storageServer1:9000</value>
</property> -->


<!--配置存储的地址-->
<property>
<name>hadoop.tmp.dir</name>
<value>/data/hadoop-3.3.0/temp</value>
</property>
<property>
<name>ha.zookeeper.quorum</name>
<value>queryServer1:2181,queryServer2:2181,queryServer3:2181</value>
</property>
<!--webUI展示时的用户-->
<property>
<name>hadoop.http.staticuser.user</name>
<value>app</value>
</property>
<property>
<name>hadoop.proxyuser.app.hosts</name>
<value>*</value>
</property>

<property>
<name>hadoop.proxyuser.app.groups</name>
<value>*</value>
</property>

</configuration>

hdfs-site.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License. See accompanying LICENSE file.
-->

<!-- Put site-specific property overrides in this file. -->

<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///data/hadoop-3.3.0/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///data/hadoop-3.3.0/dfs/data</value>
</property>
<property>
<name>dfs.namenode.edits.dir</name>
<value>/data/hadoop-3.3.0/dfs/edits</value>
</property>
<!-- journal_node在本地磁盘的存放目录-->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/data/hadoop-3.3.0/dfs/journalnode_data</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!--配置命名空间 所有的namenode节点配置在命名空间mycluste底下-->
<property>
<name>dfs.nameservices</name>
<value>mycluster</value>
</property>

<property>
<name>dfs.ha.namenodes.mycluster</name>
<value>nn1,nn2,nn3</value>
</property>
<property>
<name>dfs.namenode.rpc-address.mycluster.nn1</name>
<value>storageServer1:8020</value>
</property>
<property>
<name>dfs.namenode.rpc-address.mycluster.nn2</name>
<value>storageServer2:8020</value>
</property>
<property>
<name>dfs.namenode.rpc-address.mycluster.nn3</name>
<value>storageServer3:8020</value>
</property>
<property>
<name>dfs.namenode.http-address.mycluster.nn1</name>
<value>storageServer1:9870</value>
</property>
<property>
<name>dfs.namenode.http-address.mycluster.nn2</name>
<value>storageServer2:9870</value>
</property>
<property>
<name>dfs.namenode.http-address.mycluster.nn3</name>
<value>storageServer3:9870</value>
</property>
<!-- HA集群中多个NameNode之间的共享存储上的目录。此目录将由活动服务器写入,由备用服务器读取,以保持名称空间的同步。-->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://storageServer1:8485;storageServer2:8485;storageServer3:8485/mycluster</value>
</property>
<!-- 启用 nn 故障自动转移 -->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<!-- 访问代理类:client 用于确定哪个 NameNode 为 Active -->
<property>
<name>dfs.client.failover.proxy.provider.mycluster</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.RequestHedgingProxyProvider</value>
</property>

<property>
<name>dfs.blocksize</name>
<value>134217728</value>
</property>
<!--处于故障状态的时候hadoop要防止脑裂问题,所以在standby机器切换到active后,hadoop还会试图通过内部网络的ssh连过去,并把namenode的相关进程给kill掉,一般是sshfence 就是ssh方式-->
<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence</value>
</property>
<!-- 使用隔离机制时需要 ssh 秘钥登录-->
<!--配置了ssh用的key的位置-->
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/home/app/.ssh/id_rsa</value>
</property>
<!--配置sshfence隔离机制超时时间-->
<property>
<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value>30000</value>
</property>
</configuration>


mapred-site.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License. See accompanying LICENSE file.
-->

<!-- Put site-specific property overrides in this file. -->

<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>storageServer1:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>storageServer1:19888</value>
</property>
<property>
<name>mapreduce.job.tracker</name>
<value>storageServer1:54311</value>
</property>
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.application.classpath</name>
<value>
/data/hadoop-3.3.0/etc/hadoop:/data/hadoop-3.3.0/share/hadoop/common/lib/*:/data/hadoop-3.3.0/share/hadoop/common/*:/data/hadoop-3.3.0/share/hadoop/hdfs:/data/hadoop-3.3.0/share/hadoop/hdfs/lib/*:/data/hadoop-3.3.0/share/hadoop/hdfs/*:/data/hadoop-3.3.0/share/hadoop/mapreduce/*:/data/hadoop-3.3.0/share/hadoop/yarn:/data/hadoop-3.3.0/share/hadoop/yarn/lib/*:/data/hadoop-3.3.0/share/hadoop/yarn/*
</value>
</property>
</configuration>


编辑workers

1
2
3
4
5
6
7
computeServer1
computeServer2
computeServer3
storageServer1
storageServer2
storageServer3
storageServer4

打包hadoop文件夹并分发到各个服务器

tar -zcvf hadoop.tar.gz hadoop scp -r hadoop.tar.gz {用户名}@{目标IP}:`pwd`/

在其他服务器解压hadoop压缩包

tar -zxvf hadoop.tar.gz -C /data

格式化namenode:nd01,nd02,nd03

hadoop namenode -format

系统自启配置

  1. hadoop未配置自启动

  2. 状态查询请使用 hdfs dfsadmin -report

image.png

hadoop一键启停(可直接使用该方案启停全部节点)【storageServer1 主机执行】

1
2
3
4
#启动
/data/hadoop-3.3.0/sbin/start-all.sh
#停止
/data/hadoop-3.3.0/sbin/stop-all.sh

异常场景处理方案

1、报错Class org.apache.spark.network.yarn.YarnShuffleService not found【所有主机执行】

此处为hadoop启动时未找到该className方法,需要手动将spark jar包放入lib文件内

1
2
3
4
5
# 进入share lib
cd /data/hadoop-3.3.0/share/hadoop/yarn/lib

#上传jar包
spark-3.3.1-yarn-shuffle.jar

请至钉钉文档查看附件《spark-3.3.1-yarn-shuffle.jar》

2、Hadoop在启动过程中如果遇到需要重新分配data数据,进行初始化情况:【所有主机均可执行】

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 1、删除/data/hadoop-3.3.0/dfs 路径下的data 、journalnode_data、edits/*、name/*下所有文件
rm -rf /data/hadoop-3.3.0/dfs/data
rm -rf /data/hadoop-3.3.0/dfs/journalnode_data
rm -rf /data/hadoop-3.3.0/dfs/name/*
rm -rf /data/hadoop-3.3.0/dfs/edits/*

# 2、执行namenode重置操作(主机器执行)
hdfs namenode -format

# 3、执行zkfc重置操作(主机器执行)
hdfs zkfc -formatZK

# 4、备namenode机器执行同步配置文件操作
hdfs namenode -bootstrapStandby

# 5、启停
/data/hadoop-3.3.0/sbin/stop-all.sh
/data/hadoop-3.3.0/sbin/start-all.sh

3、将HA节点某个节点提升为ACTIVE【所有主机均可执行】

1
2
3
4
5
6
#查看状态
hdfs haadmin -getServiceState nn1

#ACTIVE
hdfs haadmin -transitionToActive --forcemanual nn1
hdfs haadmin -transitionToActive nn1

http://ip4:8088/cluster

说明安装、 运行期间异常场景及处理方案,最好附截图(例如redis集群失效处理、zookeeper集群失效处理、dolphins schedule集群失效处理)