Hadoop HA 模式搭建

一 、 Hadoop 集群架构设计

二 、 搭建集群

修改IP地址与hostname以及部署zookeeper、hadoop见上一篇博文《Hadoop 完全分布式搭建》。

三 、修改配置文件

修改nna上的core-site.xml

 1 <configuration>
 2 <!-- 指定hdfs的nameservice为ns1 -->
 3     <property>
 4         <name>fs.defaultFS</name>
 5         <value>hdfs://ns1/</value>
 6     </property>
 7     <!-- 指定hadoop临时目录 -->
 8     <property>
 9         <name>hadoop.tmp.dir</name>
10         <value>/home/zhihua/data</value>
11     </property>
12     
13     <!-- 指定zookeeper地址 -->
14     <property>
15         <name>ha.zookeeper.quorum</name>
16         <value>dn1:2181,dn2:2181,dn3:2181</value>
17     </property>
18     <property>
19                 <name>hadoop.proxyuser.zhihua.hosts</name>
20                 <value>*</value>
21         </property>
22     <property>
23                 <name>hadoop.proxyuser.zhihua.groups</name>
24                 <value>*</value>
25         </property>
26 </configuration>

修改 hdfs-site.xml 

 1 <configuration>
 2 <!--指定hdfs的nameservice为ns1,需要和core-site.xml中的保持一致 -->
 3     <property>
 4         <name>dfs.nameservices</name>
 5         <value>ns1</value>
 6     </property>
 7     <!-- ns1下面有两个NameNode,分别是nna,nns -->
 8     <property>
 9         <name>dfs.ha.namenodes.ns1</name>
10         <value>nna,nns</value>
11     </property>
12     <!-- nna的RPC通信地址 -->
13     <property>
14         <name>dfs.namenode.rpc-address.ns1.nna</name>
15         <value>nna:9000</value>
16     </property>
17     <!-- nna的http通信地址 -->
18     <property>
19         <name>dfs.namenode.http-address.ns1.nna</name>
20         <value>nna:50070</value>
21     </property>
22     <!-- nns的RPC通信地址 -->
23     <property>
24         <name>dfs.namenode.rpc-address.ns1.nns</name>
25         <value>nns:9000</value>
26     </property>
27     <!-- nns的http通信地址 -->
28     <property>
29         <name>dfs.namenode.http-address.ns1.nns</name>
30         <value>nns:50070</value>
31     </property>
32     <!-- 指定NameNode的元数据在JournalNode上的存放位置 -->
33     <property>
34         <name>dfs.namenode.shared.edits.dir</name>
35         <value>qjournal://dn1:8485;dn2:8485;dn3:8485/ns1</value>
36     </property>
37     <!-- 指定JournalNode在本地磁盘存放数据的位置 -->
38     <property>
39         <name>dfs.journalnode.edits.dir</name>
40         <value>/home/zhihua/data/journaldata</value>
41     </property>
42     <!-- 开启NameNode失败自动切换 -->
43     <property>
44         <name>dfs.ha.automatic-failover.enabled</name>
45         <value>true</value>
46     </property>
47     <!-- 配置失败自动切换实现方式 -->
48     <property>
49         <name>dfs.client.failover.proxy.provider.ns1</name>
50         <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
51     </property>
52     <!-- 配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行-->
53     <property>
54         <name>dfs.ha.fencing.methods</name>
55         <value>
56             sshfence
57             shell(/bin/true)
58         </value>
59     </property>
60     
61     <!-- 配置sshfence隔离机制超时时间 -->
62     <property>
63         <name>dfs.ha.fencing.ssh.connect-timeout</name>
64         <value>30000</value>
65     </property>
66     <property>
67                 <name>dfs.webhdfs.enabled</name>
68                 <value>true</value>
69         </property>
70 
71 </configuration>

修改 mapred-site.xml

1 <configuration>
2 <!-- 指定mr框架为yarn方式 -->
3     <property>
4         <name>mapreduce.framework.name</name>
5         <value>yarn</value>
6     </property>
7 </configuration>

修改 yarn-site.xml

 1 <configuration>
 2 
 3 <!-- Site specific YARN configuration properties -->
 4 <!-- 开启RM高可用 -->
 5         <property>
 6            <name>yarn.resourcemanager.ha.enabled</name>
 7            <value>true</value>
 8         </property>
 9         <!-- 指定RM的cluster id -->
10         <property>
11            <name>yarn.resourcemanager.cluster-id</name>
12            <value>cluster_id</value>
13         </property>
14         <!-- 指定RM的名字 -->
15         <property>
16            <name>yarn.resourcemanager.ha.rm-ids</name>
17            <value>rm1,rm2</value>
18         </property>
19         <!-- 分别指定RM的地址 -->
20         <property>
21            <name>yarn.resourcemanager.hostname.rm1</name>
22            <value>nna</value>
23         </property>
24         <property>
25            <name>yarn.resourcemanager.hostname.rm2</name>
26            <value>nns</value>
27         </property>
28         <property>
29         <name>yarn.resourcemanager.webapp.address.rm1</name>
30         <value>nna:8088</value>
31         </property>
32         <property>
33         <name>yarn.resourcemanager.webapp.address.rm2</name>
34         <value>nns:8088</value>
35         </property>
36         <!-- 指定zk集群地址 -->
37         <property>
38            <name>yarn.resourcemanager.zk-address</name>
39            <value>dn1:2181,dn2:2181,dn3:2181</value>
40         </property>
41         <property>
42            <name>yarn.nodemanager.aux-services</name>
43            <value>mapreduce_shuffle</value>
44         </property>
45 </configuration>

分发配置文件

1 [zhihua@nna /soft/hadoop/etc]$scp -r hadoop zhihua@nns:/soft/hadoop/etc/
2 [zhihua@nna /soft/hadoop/etc]$scp -r hadoop zhihua@dn1:/soft/hadoop/etc/
3 [zhihua@nna /soft/hadoop/etc]$scp -r hadoop zhihua@dn2:/soft/hadoop/etc/
4 [zhihua@nna /soft/hadoop/etc]$scp -r hadoop zhihua@dn3:/soft/hadoop/etc/

三 、启动集群

3.1 格式化 Hadoop 集群

1 [zhihua@nna /soft/hadoop/etc]$hadoop namenode -format 

3.2 复制 Hadoop 临时目录到nns上

1 [zhihua@nna /home/zhihua]$scp -r data zhihua@nns:/home/zhihua/

3.3 启动zookeeper

1 [zhihua@dn1 /soft/zk/bin]$./zkServer.sh start 
2 [zhihua@dn2 /soft/zk/bin]$./zkServer.sh  start 
3 [zhihua@dn3 /soft/zk/bin]$./zkServer.sh  start 

3.4 启动 JournalNode 

1 [zhihua@nna /home/zhihua]$hadoop-daemons.sh start journalnode 

3.5 启动 HDFS 与 YARN 

1 [zhihua@nna /home/zhihua]$start-dfs.sh 
2 [zhihua@nna /home/zhihua]$start-yarn.sh 

3.6 启动 NNS上的ResourceManager

1 [zhihua@nns /soft/hadoop/etc/hadoop]$yarn-daemon.sh start resourcemanager

四 、 测试集群是否部署成功

检查nna上面的进程

检查nns 上面的进程

检查dn1-dn3上的进程

webUI检查集群是否正常

 

猜你喜欢

转载自www.cnblogs.com/zhihua-he/p/10822496.html
今日推荐