Hadoop HA元数据备份

本文详细介绍了Hadoop高可用性(HA)配置过程,包括使用NFS进行数据节点配置的方法,以及如何通过配置Zookeeper集群实现HA。此外,还提供了具体的步骤来配置HDFS的QJM机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

NFS方式
一、Server 端配置 (root@hz-search-zookeeper-01)
su - hbase -c "mkdir /home/hbase/hadoop_nfs && chmod 777 /home/hbase/hadoop_nfs"
echo '/home/hbase/hadoop_nfs 172.37.0.202(rw)' >> /etc/exports
   service nfs restart
二、Client 端配置 (hadoop namenode)
su - hbase -c "mkdir -p /home/hbase/hadoop_nfs/name"
/etc/init.d/nfslock start
mount -t nfs 172.37.0.201:/home/hbase/hadoop_nfs/ /home/hbase/hadoop_nfs/name
echo 'mount -t nfs 172.37.0.201:/home/hbase/hadoop_nfs/ /home/hbase/hadoop_nfs/name' >> /etc/rc.d/rc.local
三、配置dfs.name.dir为两份,并重启 hadoop 使其生效
<property>
<name>dfs.name.dir</name>
<value>/home/admin/name/,/home/admin/hadoop_nfs/name</value>
</property> 

QJM方式

http://hadoop.apache.org/docs/r2.4.0/hadoop-project-dist/hadoop-hdfs/HDFSHighAvailabilityWithQJM.html

配置ZK集群,参照我的另一篇博文ZooKeeper集群安装配置
hdfs-site.xml
追加namenode服务名称
<property>
  <name>dfs.nameservices</name>
  <value>mycluster</value>
</property>
追加namenode服务的节点,一个nameservice最多两个节点
<property>
  <name>dfs.ha.namenodes.mycluster</name>
  <value>nn1,nn2</value>
</property>
<property>
  <name>dfs.namenode.rpc-address.mycluster.nn1</name>
  <value>172.37.0.202:8020</value>
</property>
<property>
  <name>dfs.namenode.rpc-address.mycluster.nn2</name>
  <value>172.37.0.201:8020</value>
</property>
<property>
  <name>dfs.namenode.http-address.mycluster.nn1</name>
  <value>172.37.0.202:50070</value>
</property>
<property>
  <name>dfs.namenode.http-address.mycluster.nn2</name>
  <value>172.37.0.201:50070</value>
</property>
<property>
  <name>dfs.namenode.shared.edits.dir</name>
  <value>qjournal://172.37.0.201:8485;172.37.0.202:8485;172.37.0.203:8485/mycluster</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>
<property>
  <name>dfs.ha.fencing.ssh.private-key-files</name>
  <value>/home/root/.ssh/id_rsa</value>
</property>
<property>
   <name>dfs.ha.automatic-failover.enabled</name>
   <value>true</value>
 </property>

core-site.xml
<property>
  <name>fs.defaultFS</name>
  <value>hdfs://mycluster</value>
</property>
<property>
  <name>dfs.journalnode.edits.dir</name>
  <value>/path/to/journal/node/local/data</value>
</property>
<property>
   <name>ha.zookeeper.quorum</name>
   <value>172.37.0.201:2181,172.37.0.202:2181,172.37.0.203:2181</value>
 </property>
    
在ZK上初期化HA,在一个namenode节点上执行就可以了
$ hdfs zkfc -formatZK
在每个节点上都得执行下面的命令, 启动journalnode
hadoop-daemon.sh start journalnode
   [root@slave2  logs]# jps
    12821 JournalNode
在各个节点运行
 hadoop namenode -format
运行start-dfs.sh
start-yarn.sh
察看状态:namenode
16753 QuorumPeerMain
18743 ResourceManager
18634 DFSZKFailoverController
18014 JournalNode
18234 NameNode
15797 Bootstrap
19571 Jps
18333 DataNode
18850 NodeManager

Datanode
1715 DataNode
1869 NodeManager
1556 JournalNode
1142 QuorumPeerMain
2179 Jps

搭建好以后,jps查看相关进程,用kill -9 删除active的nn,通过hdfs haadmin -DFSHAAdmin -getServiceState nn1可以查看以前standby的NN已经active,执行查看等操作也都正常。想要在启动kill掉的namenode,用sbin/hadoop- daemon.sh start namenode

重新设置Hadoop HA
在namenode机器上停止
Stop-dfs.sh
Stop-yarn.sh

所有机器上停止ZK
zkServer.sh  stop

删除所有机器zk的临时文件
rm -rf /tmp/hadoop-root/zookeeper/version-2

删除所有机器JournalNode临时文件
rm -rf /home/hadoop/hadoop-root/journal/node/local/data/*
删除所有机器namenode,datanode文件
rm -rf /home/hadoop/hadoop-root/dfs/name/*
rm -rf /home/hadoop/hadoop-root/dfs/data/*
启动所有机器的ZK
zkServer.sh start
在ZK上初期化HA,在一个namenode节点上执行就可以了
 hdfs zkfc -formatZK
在每个节点上都得执行下面的命令, 启动journalnode
hadoop-daemon.sh start journalnode
在namenode节点上运行
 hadoop namenode -format
启动hadoop
start-dfs.sh
start-yarn.sh

查看节点状态
http://172.37.0.201:50070/dfshealth.jsp
http://172.37.0.202:50070/dfshealth.jsp



转载于:https://my.oschina.net/junfrank/blog/286357

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值