hadoop高可用的完全分布式部署

Posted z-l-j

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hadoop高可用的完全分布式部署相关的知识,希望对你有一定的参考价值。

1、zookeeper-3.4.6.tar.gz解压(例:root目录下)

2、/root/zookeeper-3.4.6/conf/zoo_simple.cfg修改为zoo.cfg

并修改zookeeper存放文件的目录:dataDir=/tmp/zookeeper

添加:

#其中123zookeeper的服务编号,后面是对应服务器的主机名

server.1=zlj02:2888:3888

server.2=my01:2888:3888

server.3=my02:2888:3888

3、mkdir /tmp/zookeeper(三个zookeeper所在的机器都要)

4、创建并存放各自zookeeper的服务编号:vim /tmp/zookeeper/myid

5、拷贝zookeeper到其他两台机器中:scp -r zookeeper-3.4.6 [email protected]:~

6、配置zookeeper的环境变量(vim ~/.bash_profile)并重新加载配置文件

7、启动zookeeper(三台机器上各自启动(zkServer.sh start))日志:/root/zookeeper.out(启动后可以完全不用再理了,其所占资源很少)

8、配置/root/hadoop-2.5.2/etc/hadoop/hdfs-site.xml

<configuration>

<!--配置nameservicesID,即该集群的名字 -->

<property>

<name>dfs.nameservices</name>

   <value>gzsxt</value>

</property>

<!-- 配置namenodesID,唯一区分每个namenode -->

<property>

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

   <value>nn1,nn2</value>

</property>

 

<!-- 配置两个NameNoderpc协议的地址和端口 -->

<property>

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

   <value>zlj02:8020</value>

</property>

<property>

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

   <value>my01:8020</value>

</property>

<!-- 设置http的地址 -->

<property>

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

   <value>zlj02:50070</value>

</property>

<property>

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

   <value>my01:50070</value>

</property>

 

<!-- 设置journalnade的主机名 -->

<property>

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

  <value>qjournal://zlj02:8485;my01:8485;my02:8485/abc</value>

</property>

<!-- 通过代理类来让客户端连接activeNameNode -->

<property>

  <name>dfs.client.failover.proxy.provider.gzsxt</name>

  <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyPro

vider</value>

</property>

<!--隔离机制:通过远程登录,杀掉NameNode来保证只有一个activeNameNode(保证

已经设置了免密登录) -->

<property>

  <name>dfs.ha.fencing.methods</name>

  <value>sshfence</value>

</property>

<property>

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

  <value>/root/.ssh/id_rsa</value>

</property>

<!-- journalnade保存数据用的目录-->

<property>

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

  <value>/opt/journalnode</value>

</property>

<!--配置NameNode的自动切换的开关 -->

<property>

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

   <value>true</value>

</property>

</configuration>

9、配置/root/hadoop-2.5.2/etc/hadoop/core-site.xml

 

<configuration>

<property>

        <name>fs.defaultFS</name>

        <value>hdfs://gzsxt:9000</value>

    </property>

<property>

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

<value>/opt/hadoop</value>

</property>

<!--配置三台zookeeper主机名 -->

<property>

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

   <value>zlj02:2181,my01:2181,my02:2181</value>

</property>

</configuration>

10、复制/root/hadoop-2.5.2/etc/hadoop下所有的xml配置文件到其他机器中

11、启动所有journalnode:在其中的一台设置了免密登录的机器上敲一下代码即可:hadoop-daemon.sh start journalnode

12、初始化和同步两台NameNode的元数据(生成fsimage文件)

A) 随便一台NameNode机器上执行初始化:hdfs namenode -format(如果原来已经有,最好先删除)

B) 将元数据拷贝到另外一台NameNode下的:scp -r /opt/hadoop/ [email protected]:/opt/

13、在其中一台NameNode下初始化zookeeperhdfs zkfc -formatZK

14、启动hadoopstart-dfs.sh

15、设置两台NameNode的相互免密登录:

a) 生成密钥:ssh-keygen

b) 拷贝主节点的公钥到所有节点中去。ssh-copy-id -i id_rsa.pub [email protected]

以上是关于hadoop高可用的完全分布式部署的主要内容,如果未能解决你的问题,请参考以下文章

Hadoop-apache版本部署以及CDH版本部署

Hadoop分布式HA的安装部署

Hadoop2经典分布式部署模式

Hadoop分布式集群实战

K3S 离线安装部署高可用集群

大厂分布式面试题分享:ZooKeeper集群如何实现高可用部署?