3.部署 hadoop 的高可用(HA)(须分发)

3.1.解压相关包到要求的位置

xxx 代表你的相关位置

1
tar -zxvf /xxx/XXX.tar.gz -C /xxx/xxx/xxx

3.2 设置环境变量(须分发)

1
Vim	/etc/profile

复制到 profile 的最底部

1
2
3
4
5
6
7
8
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk18
export PATH=$PATH:$JAVA_HOME/bin

#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop313
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

![配置profile]

3.3 配置 hadoop

cd 到你解压的 Hadoop 的目录下

1
cd /xxx/xxx/hadoop

3.3.1 编辑 core-site.xml

1
vim etc/hadoop/core-site.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<configuration>
<!-- 配置默认的文件系统为HDFS,并指定HDFS集群的名称为"mycluster" -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://mycluster</value>
</property>

<!-- 指定Hadoop的临时目录位置 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop313/tmp</value>
</property>

<!-- 配置ZooKeeper的Quorum,用于Hadoop高可用性设置,包含三个ZooKeeper节点 -->
<property>
<name>ha.zookeeper.quorum</name>
<value>master:2181,slave1:2181,slave2:2181</value>
</property>
</configuration>

3.3.2 编辑 hdfs-site.xml

1
vim etc/Hadoop  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
<configuration>
<!-- 配置HDFS的名称服务,该集群名称为"mycluster" -->
<property>
<name>dfs.nameservices</name>
<value>mycluster</value>
</property>

<!-- 配置HDFS高可用性(HA)集群中NameNode的名称 -->
<property>
<name>dfs.ha.namenodes.mycluster</name>
<value>nn1,nn2</value>
</property>

<!-- 配置NameNode nn1的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.mycluster.nn1</name>
<value>master:8020</value>
</property>

<!-- 配置NameNode nn2的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.mycluster.nn2</name>
<value>slave2:8020</value>
</property>

<!-- 配置NameNode nn1的HTTP通信地址 -->
<property>
<name>dfs.namenode.http-address.mycluster.nn1</name>
<value>master:9870</value>
</property>

<!-- 配置NameNode nn2的HTTP通信地址 -->
<property>
<name>dfs.namenode.http-address.mycluster.nn2</name>
<value>slave2:9870</value>
</property>

<!-- 配置共享编辑日志目录,用于JournalNode集群的Quorum Journal Manager (QJM) -->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://master:8485;slave1:8485;slave2:8485/mycluster</value>
</property>

<!-- 配置HDFS客户端的故障转移代理提供者 -->
<property>
<name>dfs.client.failover.proxy.provider.mycluster</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>

<!-- 配置高可用性NameNode的隔离方法,这里使用sshfence -->
<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence</value>
</property>

<!-- 配置用于SSH隔离的私钥文件路径 -->
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/root/.ssh/id_rsa</value>
</property>

<!-- 配置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.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
</configuration>

3.3.3 编辑 mapreduce-site.xml

1
vim etc/hadoop/mapreduce-site.xml
1
2
3
4
5
6
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>

3.3.4 编辑 yarn-site.xml

1
vim etc/hadoop/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
<configuration>
<!-- 启用YARN ResourceManager的高可用性(HA) -->
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>

<!-- 配置YARN ResourceManager集群的ID -->
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>clusterl</value>
</property>

<!-- 列出所有的ResourceManager实例ID -->
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rml,rm2</value>
</property>

<!-- 配置ResourceManager实例rm1的主机名 -->
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>slave1</value>
</property>

<!-- 配置ResourceManager实例rm2的主机名 -->
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>slavel</value>
</property>

<!-- 配置ResourceManager实例rml的Web应用地址 -->
<property>
<name>yarn.resourcemanager.webapp.address.rml</name>
<value>master:8088</value>
</property>

<!-- 配置ResourceManager实例rm2的Web应用地址 -->
<property>
<name>yarn.resourcemanager.webapp.address.rm2</name>
<value>slave1:8088</value>
</property>

<!-- 配置ZooKeeper的地址,用于协调YARN ResourceManager的高可用性 -->
<property>
<name>hadoop.zk.address</name>
<value>master:2181,slave1:2181,slave2:2181</value>
</property>
</configuration>

3.3.5 编辑 workers

1
vim etc/hadoop/workers

和之前的 hosts 一致

1
2
3
master
slave1
slave2

5.2 初始化 hadoop

(1)启动 各个节点 zookeeper

1
zkSever.sh start

(2)启动 各个节点 journalnode

1
hdfs --daemon start journalnode

(3)格式化 主节点 hadoop

1
hdfs namenode -format (主)

(4)启动 主节点 namenode

1
hdfs --daemon start namenode

(5)#测试 namenode 的热备机 即在 slave2 中启动 bootstrapStandby

1
hdfs namenode -bootstrapStandby

(6) 在 slave2 启动 备用 namenode

1
hdfs --daemon start namenode

如果执行完没有报错 那么 hadoop(HA)就搭建成功了

4.部署 hive

4.1 准备好相关的压缩包并解压

xxx 代表你的相关位置

1
tar -zxvf /xxx/XXX.tar.gz -C /xxx/xxx/xxx

4.2 设置环境变量

1
vim	/etc/profile

将我的路径改为你自己的

1
2
3
#HIVE
export HIVE_HOME=/opt/module/hive312
export PATH=$HIVE_HOME/bin:$PATH