加入HA后的完全分布式集群搭建

本文详细介绍了如何搭建Hadoop HA高可用集群,包括免密钥SSH配置、环境变量统一配置、Zookeeper安装启动及JournalNode启动等关键步骤。

节点规划表:


新项目开始前先把原来的进行备份

搭建步骤:

1. (Hadoop01Hadoop02相互免秘钥

Setup passphraseless ssh

Now check that you can ssh to the localhost without a passphrase:

  $ ssh localhost

If you cannot ssh to localhost without a passphrase, execute the following commands:

  $ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
  $ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

要想对别人免秘钥,上面三步是前提,必须要做



做完后就可以把公钥给hadoop01分发

在hadoop01中追加

验证免秘钥是否成功

2.这个时候统一配置hadoop02 hadoop03 hadoop04的环境变量:

(1)配置hdfs-site.xml

<!--指定hdfsnameservicemycluster,需要和core-site.xml中的保持一致 -->

<property>

  <name>dfs.nameservices</name>

  <value>mycluster</value>

</property>

<!-- mycluster下面有两个NameNode,分别是nn1nn2 -->

<property>

  <name>dfs.ha.namenodes.mycluster</name>

  <value>nn1,nn2</value>

</property>

<!-- nn1RPC通信地址 -->

<property>

  <name>dfs.namenode.rpc-address.mycluster.nn1</name>

  <value>hadoop01:8020</value>

</property>

<!-- nn2RPC通信地址 -->

<property>

  <name>dfs.namenode.rpc-address.mycluster.nn2</name>

  <value>hadoop02:8020</value>

</property>

<!-- nn1http通信地址 -->

<property>

  <name>dfs.namenode.http-address.mycluster.nn1</name>

  <value>hadoop01:50070</value>

</property>

<!-- nn2http通信地址 -->

<property>

  <name>dfs.namenode.http-address.mycluster.nn2</name>

  <value>hadoop02:50070</value>

</property>

<!-- 指定NameNodeedits元数据在JournalNode上的存放位置 -->

<property>

  <name>dfs.namenode.shared.edits.dir</name>

  <value>qjournal://hadoop01:8485;hadoop02:8485;hadoop03:8485/mycluster</value>

</property>

<!-- 指定JournalNode在本地磁盘存放数据的位置 -->

<property>

  <name>dfs.journalnode.edits.dir</name>

  <value>/var/hadoop/ha/jn</value>

</property>

 

<!-- 配置失败自动切换实现方式 -->

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

</property>

<!-- 使用sshfence隔离机制时需要ssh免登陆 -->

<property>

  <name>dfs.ha.fencing.ssh.private-key-files</name>

  <value>/root/.ssh/id_dsa</value>

</property>

 

<!-- 开启NameNode失败自动切换 -->

<property>

   <name>dfs.ha.automatic-failover.enabled</name>

   <value>true</value>

 </property>

 

 

(2)配置core-site.xml

 

<configuration>

<!-- 指定hdfsnameservicemycluster -->

<property>

<name>fs.defaultFS</name>

  <value>hdfs://mycluster</value>

</property>

<!-- 指定hadoop临时目录 -->

<property>

<name>hadoop.tmp.dir</name>

<value>/var/hadoop/zk</value>

</property>

 

<!-- 指定zookeeper地址 -->

<property>

   <name>ha.zookeeper.quorum</name>

   <value>hadoop02:2181,hadoop03:2181,hadoop04:2181</value>

</property>

</configuration>

 

3)修改完这两个文件然后分发给hadoop02-04


3.hadoop02-04安装并启动zookeeper


(1)将解压后的文件移动


(2)配置环境变量:


(3)配置好后,需要修改zoo_sample.cfg文件,先备份。


(4)配置zoo.cfg文件:

默认的保存目录不安全所以修改:

配置三台zookeeper节点

(5)给zookeepermyid设置不同的数值

(6)把部署好的zookeeper进行对hadoop03-04两个zookeeper节点分发



(7)对hadoop03-04设置myid


(8)hadoop03-hadoop04环境变量配置


重新加载

(9)启动hadoop02zookeeper


(10)再启动hadoop03hadoop04,发现hadoop03leaderhadoop02-04follower



4.启动JNhadoop01-03


使用jps命令查看



可以看到JournalNode进程已启动

5.第一台NN

hdfs namenode format

hadoop-daemon.sh start namenode

另一台NN

hdfs namenode  -bootstrapStandby

hadoop01



hadoop02


6.格式化ZK

hdfs zkfc -formatZK


7.启动集群

hadoop01:


8.浏览器验证 hadoop01:50070




hadoop02:50070




在hadoop01节点创建目录/user/root目录



上传文件,并自定义block块为1MB



9.验证高可用

(1)杀死主NameNode


一刷新hadoop01:50070


再刷新hadoop02:50070


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SunnyRivers

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值