这篇文章主要介绍Hadoop中HA元数据如何备份,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
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
以上是“Hadoop中HA元数据如何备份”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程之家行业资讯频道!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。