HA: High Available(高可用集群)

本次安装的hadoop2.5.2是64bit的,如果需要请在我之前的博文中

规划节点数:(仅考虑HDFS 的HA)

HDFS的节点分配:

两个NN 且分布在两台主机

三个DN节点

三个JN节点

两个ZKFC节点(必须和NN放在一台主机上)

三个Zookeeper

Mapreduce的节点:

一个ResourceManager(替代1.x时的JobTracker)

三个DATAManager(替代1.x时的TaskTracker)和DN节点数相同

主机名 NN DN ZK ZKFC JN RM DM
Node0 1 1 1 1
Node1 1 1 1 1 1 1
Node2 1 1 1 1
Node3 1 1 1

具体步骤:

一、# ln -sf /root/hadoop-2.5.2 /home/hadoop2.5.2

二、修改配置文件(hadoop2.5.2/etc/hadoop)

  1. # vim hadoop-env.sh   //修改JAVA_HOME

  1. # vim slaves           //配置DN的主机

node1  //DN1节点的主机

node2  //DN2节点的主机

node3  //DN3节点的主机

注意:因为hadoop2.x没有了SecondNode了,因此不要配master文件

  1. # vim hdfs-site.xml

<configuration>

<!--首先给搭建的集群设置一个服务(名字)ID唯一标识,主要是给ZK区别的,因为zk管理不止Hadoop集群 -->

<property>

<name>dfs.nameservices</name>

<value>mycluster</value>

</property>

<!--给NN们设置名字,ID唯一标识-->

<property>

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

<value>nn1,nn2</value>

</property>

<!--根据RPC协议,设置NN的主机:端口号-->

<property>

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

<value>node0:8020</value>

</property>

<property>

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

<value>node1:8020</value>

</property>

<!--根据HTTP协议,设置NN的主机:端口号-->

<property>

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

<value>node0:50070</value>

</property>

<property>

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

<value>node1:50070</value>

</property>

<!--设置JN的主机和端口号,注意最后要添加集群服务的名字-->

<property>

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

<value>qjournal://node1:8485;node2:8485;node3:8485/mycluster</value>

</property>

<!--添加一个Class类,用于客户端连接NN(active)-->

<property>

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

<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>

</property>

<!--设置ssh免密码登录,注意私钥的名字要匹配-->

<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_dsa</value>

</property>

<!--设置JN的工作目录,否则,默认是当前系统的/tmp,系统重启后,数据消失-->

<property>

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

<value>/opt/jn/data</value>

</property>

<!--以下操作设置,当NN(active)宕机了,自动切换NN(standby)-->

<property>

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

<value>true</value>

</property>

</configuration>

  1. # vim core-site.xml

<configuration>

<!--首先配置NN的入口-->

<property>

<name>fs.defaultFS</name>

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

</property>

<!--设置zookeeper的节点(主机和端口号)-->

<property>

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

<value>node0:2181,node1:2181,node2:2181</value>

</property>

<!--设置hadoop所有文件目录的根位置,默认是系统/tmp,重启失效-->

<property>

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

<value>/opt/hadoop2/</value>

</property>

</configuration>

  1. 安装zookeeper  【zookeeper-3.4.6】

#ln -sf /root/zookeeper-3.4.6   /home/zk

以下操作均在/home/zk下:

配置目录在,zk/conf/

#cp   zoo_sample.cfg    zoo.cfg //先将配置文件复制一份,重命名

# vim  zoo.cfg

1.dataDir=/opt/zookeeper   //修改默认值,默认放在/tmp ,

 2.文件最后添加以下几行

server.1=node0:2888:3888   //zookeeper所在节点的主机名
server.2=mode1:2888:3888
server.3=node2:2888:3888

修改完成后,创建/opt/zookeeper目录,并创建,编辑文件名为myid的文件

填充内容为server.1=node0:2888:3888 server后面的数字,不同节点对应不同数字,

如第二个zookeeper即node1上的节点对应的数字即为2

将/opt/zookeeper目录拷贝其他节点上

[root@node0 bin]# scp -r zookeeperroot@node1:/opt/

# scp -r zookeeper root@node2:/opt/

在将zookeeper整个软件工作目录拷到其他节点上去

[root@node0 ~]# scp -r zookeeper-3.4.6root@node1:~

# scp -r zookeeper-3.4.6 root@node2:~

别忘记做软连接

# ln -sf /root/zookeeper-3.4.6  /home/zk

配置Zookeeper的环境变量,写入/etc/profile,并将其他节点一并改写

# scp /etc/profile root@node1:/etc/profile

启动zookeeper

先关闭系统防火墙:# systemctl stop firewalld.service

或者# vim /etc/selinux/config  //重启

每个节点都要启动:# zkServer.sh start

检测:

[root@node0 zookeeper-3.4.6]# jps

5403 Jps

5305 QuorumPeerMain

以上完成zookeeper的安装部署

下面要启动集群:

启动之前,将其他节点安装Hadoop2.5.2,并将之前的配置文件覆盖到每个节点,保持每个节点的配置文件相同

# scp  ./*   root@node1:/home/hadoop2.5.2/etc/hadoop

# scp  ./*   root@node2:/home/hadoop2.5.2/etc/hadoop

# scp  ./*   root@node3:/home/hadoop2.5.2/etc/hadoop

目录切换到/home/hadoop2.5.2/sbin

  1. 首先启动JN :(在JN的节点上启动,即node1,node2,node3)

[root@node1 sbin]# ./hadoop-daemon.sh start journalnode

[root@node2 sbin]# ./hadoop-daemon.sh start journalnode

[root@node3 sbin]# ./hadoop-daemon.sh start journalnode

2.在任意一个NN的节点主机上(node0或者node1),格式化HDFS,目录切换到/home/hadoop2.5.2/bin

[root@node0 bin]# ./hdfs namenode –format

3.检查各个节点是JN是否正常,jps或者去当前格式化NN节点的主机下的/home/hadoop2.5.2/logs  查看JN日志

4.拷贝当前格式化NN节点的元数据文件(opt/hadoop2/dfs/name/current/*)

官方有推荐命令:

  1. 首先启动当前NN(格式化好的):bin]#./hadoop-daemon.sh start namenode

  2. 检查:jps  ,检查/opt/hadoop2/dfs/name/current有没有生成元数据文件

[root@node0current]# ll

总用量 16

-rw-r--r--.1 root root 351 6月   4 20:42fsp_w_picpath_0000000000000000000

-rw-r--r--.1 root root  62 6月   4 20:42 fsp_w_picpath_0000000000000000000.md5

-rw-r--r--.1 root root   2 6月   4 20:42 seen_txid

-rw-r--r--. 1 root root 205 6月   4 20:42 VERSION

5.官方文档推荐使用:在没有格式化的NN节点的主机上执行:bin]#./node –bootstrapStandby

这个命令就是将NN(已经格式化)生成元数据内容拷贝到NN(未格式化)的主机上在没有格式化的NN主机上检查有没有拷贝成功opt/hadoop2/dfs/name/current/*

然而,我自己编译的源码,没这玩意……

不过别担心,手动移动是一样有效的,[root@node0 opt]# scp -r hadoop2 root@node1:/opt

6.停止所有HDFS的节点的服务:zookeeper不要停      bin]#./stop-dfs.sh

7.在其中一个NN节点,格式化zkfs   bin]# hdfs   zkfc   -formatZK

8.一次性启动所有dfs节点:sbin]#./start-dfs.sh

出现下图及说明安装无误:

用浏览器访问node0节点和node1节点,至于谁做active谁做standby完全取决于谁先拿到竞争锁

浏览器访问测试:(别忘更改自己的hosts文件,否则请用ip地址)

node0:50070    //NN1

node1:50070     // NN2

上床文件测试一下:

[root@node0 bin]# ./hdfs dfs -mkdir -p/usr/file     //HDFS创建目录

[root@node0 bin]# ./hdfs   dfs   -put /root/zookeeper-3.4.6.tar.gz  /usr/file  //上传文件

这里说明:Hadoop1.x  默认block大小是64M  Hadoop2.x默认block大小是128M

============================================================================

下面配置MapReduce

  1. 1.      vim mapred-site.xml

<configuration>

<property>

<name>mapreduce.framework.name</name>

<value>yarn</value>

</property>

</configuration>

  1. 2.      vim yarn-size.xml

<configuration>

<!--这里配置ResourceManager的节点主机 -->

<property>

<name>yarn.resourcemanager.hostname</name>

<value>node0</value>

</property>

<property>

<name>yarn.nodemanager.aux-services</name>

<value>mapreduce_shuffle</value>

</property>

<property>

<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>

<value>org.apache.hadoop.mapred.ShuffleHandler</value>

</property>

</configuration>

将这些配置文件一并拷贝到其他节点主机上

[root@node0 etc]# scp -r hadooproot@node1:/home/hadoop2.5.2/etc

[root@node0 etc]# scp -r hadooproot@node2:/home/hadoop2.5.2/etc

[root@node0 etc]# scp -r hadooproot@node3:/home/hadoop2.5.2/etc

重启 hadoop

[root@node0 sbin]# ./start-all.sh

浏览器访问 node0:8080

转载于:https://blog.51cto.com/icola/1786159

搭建高可用的分布式hadoop2.5.2集群  HDFS HA相关推荐

  1. 搭建高吞吐量 Kafka 分布式发布订阅消息 集群

    搭建高吞吐量 Kafka 分布式发布订阅消息 集群 简介 Kafka 是一种高吞吐的分布式发布订阅消息系统,能够替代传统的消息队列用于解耦合数据处理,缓存未处理消息等,同时具有更高的吞吐率,支持分区. ...

  2. 使用sqlserver搭建高可用双机热备的Quartz集群部署

    一般拿 Timer 和 Quartz 相比较的,简直就是对 Quartz 的侮辱,两者的功能根本就不在一个层级上,如本篇介绍的Quartz强大的集群机制,可以采用基于sqlserver,mysql的集 ...

  3. 使用sqlserver搭建高可用双机热备的Quartz集群部署【附源码】

    一般拿Timer和Quartz相比较的,简直就是对Quartz的侮辱,两者的功能根本就不在一个层级上,如本篇介绍的Quartz强大的集群机制,可以采用基于 sqlserver,mysql的集群方案,当 ...

  4. 使用Amazon CDK部署基于Amazon Fargate的高可用、易扩展的Airflow集群

    前言 Apache Airflow(以下简称为Airflow) 是一项由Airbnb在 2014 年推出的开源项目,其目的是为了管理日益复杂的数据管理工具.脚本和分析工具,提供一个构建批处理工作流的方 ...

  5. Redis高可用——主从复制、哨兵模式、集群

    文章目录 一.Redis高可用 1.什么是高可用 2.Redis的高可用技术 二.Redis主从复制 1.Redis主从复制的作用 2.主从复制的流程 三.主从复制的搭建 实验准备 1.所有主机安装R ...

  6. redis系列之——高可用(主从、哨兵、集群)

    Redis系列目录 redis系列之--分布式锁 redis系列之--缓存穿透.缓存击穿.缓存雪崩 redis系列之--Redis为什么这么快? redis系列之--数据持久化(RDB和AOF) re ...

  7. 【重磅】微信开源PhxSQL:高可用、强一致的MySQL集群

    [重磅]微信开源PhxSQL:高可用.强一致的MySQL集群 开源地址: https://github.com/tencent-wechat/phxsql 点击阅读原文可自动跳转到github地址 P ...

  8. 搭建redis高可用:主从、哨兵、集群

    搭建主从 version: "3"networks:redis-replication:driver: bridgeipam:config:- subnet: 172.25.0.0 ...

  9. paxos整合mysql_微信开源PhxSQL:高可用、强一致的MySQL集群(转载)

    作者: 陈俊超(junechen@tencent.com),微信后台高级工程师,主要负责微信后台核心模块的分布式架构设计和开发.早期负责微信附近的人,摇一摇,朋友圈,群聊等基础架构.现专注于PhxSQ ...

最新文章

  1. Packet Tracer 5.0配置cisco路由器详细说明
  2. android 5 sdk版本下载地址,android5 sdk 下载地址大全
  3. centos6.5_x64远程链接输入正确的账号密码无法登陆
  4. 自适应表格连续字符换行及单行溢出点点点显示
  5. 使用phpunit新建项目
  6. 4 手把手,整合 RabbitMQ Spring 家族
  7. 【Vue2.0】—默认插槽、具名插槽、作用域插槽(二十四)
  8. image加载图片 ui unity_【Unity游戏客户端框架搭建】四、资源管理之理论篇
  9. 数据库并发中的串行化
  10. 速度提升3000倍,微软FastNeRF首次实现200FPS高保真神经渲染
  11. Go语言中正则表达式的使用
  12. SQL:从入门到“精通”
  13. 23种设计模式之适配器模式(Adapter模式)
  14. File Systems Unfit as Distributed Storage Backends 开发十年Ceph的经验:文件系统不适合作为分布式存储后端
  15. linux skyeye,用skyeye运行uClinux内核
  16. Linux align函数,linux内核中ALIGN解析(示例代码)
  17. Topology拓扑_8:TopoGeometry构造函数
  18. React高阶组件(HOC)
  19. 177本名著浓缩成了 177句话 、
  20. 433~458(flex+携程网移动端首页)

热门文章

  1. 我是主考官:给一位应届毕业生的回信
  2. Re:[转]Microsoft .Net Remoting系列专题
  3. linux下的powerline安装教程
  4. HDU 5387 Clock(分数类+模拟)
  5. 析构函数为虚函数的必要性
  6. 【原创】Kakfa api包源代码分析
  7. 助力春运 重庆机场今晨新增一架飞机入列
  8. 维密天使糖糖传授自拍秘籍,最满意自拍来自OPPO R11s
  9. Macaca-iOS入门那些事2
  10. 【Android】Service生命周期回顾