码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2018-04-10 13:23:54      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:完全   simple   roo   keygen   methods   三台   server   profile   har   

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 root@my01:~

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/ root@my01:/opt/

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

14、启动hadoopstart-dfs.sh

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

a) 生成密钥:ssh-keygen

b) 拷贝主节点的公钥到所有节点中去。ssh-copy-id -i id_rsa.pub root@my01

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

标签:完全   simple   roo   keygen   methods   三台   server   profile   har   

原文地址:https://www.cnblogs.com/z-l-j/p/8777952.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!