文档章节

hadoop2.0 namenode ha配置

_hadooper
 _hadooper
发布于 2014/10/23 23:49
字数 1261
阅读 7219
收藏 0

从2010年开始接触hadoop,到2012年的这段时间内一直从事hadoop相关项目的研发,2012年后,由于一些原因,在技术上的积累慢慢淡忘。今天再次拿起hadoop,看了一下2.4源码,提供的API更多了,ha也有相应的解决方案。yarn后期应该也会发展的更加完美。废话不多说,先测试一些hadoop hdfs的ha。


hdfs的ha,主要的问题是active和standby的元数据信息同步问题,之前的解决方案有avatar等一系列。共享存储可以采用NFS,bookkeeper等相关存储。在这里我们采用Journal来实现共享存储,主要是因为配置简单。


虚拟机准备:三台,列表如下:


机器名

功能

IP

master1

namenode(active),JournalNode,zookeeper

192.168.6.171

master2

namenode,JournalNode,zookeeper

192.168.6.172

datanode1

datanode,JournalNode,zookeeper

192.168.6.173


软件版本:hadoop 2.4.1   zookeeper3.4.6


下载hadoop2.4.1后,解压,解压zookeeper


第一步先配置zookeeper集群

将zookeeper解压后的文件夹下的conf下的zoo_sample.cfg重命名为zoo.cfg

修改配置

dataDir=/cw/zookeeper/  我这里修改为/cw/zookeeper/  确保该文件夹存在


在该文件尾部添加集群配置

server.1=192.168.6.171:2888:3888

server.2=192.168.6.172:2888:3888

server.3=192.168.6.173:2888:3888


将修改后的zookeeper文件夹分发到其他两台机器上


scp -r zookeeper-3.4.6 root@192.168.6.172:/cw/


scp -r zookeeper-3.4.6 root@192.168.6.173:/cw/


配置每台机器的pid

在192.168.6.171机器上执行

 echo "1" >> /cw/zookeeper/myid

在192.168.6.172机器上执行

 echo "2" >> /cw/zookeeper/myid

在192.168.6.173机器上执行

 echo "3" >> /cw/zookeeper/myid


启动zookeeper,每台分别执行

./zkServer.sh start


都启动完成后,可以通过查看日志确认是否启动OK,或者执行 ./zkServer.sh status来查看每一个节点的状态。


---------------------------------------------------华立分割  hadoop开始----------------------------------------------------------------------------配置hadoop的相关参数


hadoop-env.sh主要配置java_home的路径

core-site.xml配置内容如下


<configuration>

      <property>

        <name>fs.defaultFS</name>

        <value>hdfs://myhadoop</value>

myhadoop是namespace的id

    </property>

    <property>

        <name>io.file.buffer.size</name>

        <value>131072</value>

    </property>

    <property>

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

        <value>192.168.6.171,192.168.6.172,192.168.6.173</value>

    </property>

</configuration>


修改hdfs-site.xml

<configuration>

<property>

  <name>dfs.nameservices</name>

  <value>myhadoop</value>对应之前的namespace

  <description>

    Comma-separated list of nameservices.

    as same as fs.defaultFS in core-site.xml.

  </description>

</property>


<property>

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

  <value>nn1,nn2</value>每一个nn的id编号

  <description>

    The prefix for a given nameservice, contains a comma-separated

    list of namenodes for a given nameservice (eg EXAMPLENAMESERVICE).

  </description>

</property>


<property>

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

  <value>192.168.6.171:8020</value>

  <description>

    RPC address for nomenode1 of hadoop-test

  </description>

</property>


<property>

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

  <value>192.168.6.172:8020</value>

  <description>

    RPC address for nomenode2 of hadoop-test

  </description>

</property>


<property>

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

  <value>192.168.6.171:50070</value>

  <description>

    The address and the base port where the dfs namenode1 web ui will listen on.

  </description>

</property>


<property>

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

  <value>192.168.6.172:50070</value>

  <description>

    The address and the base port where the dfs namenode2 web ui will listen on.

  </description>

</property>



<property>

  <name>dfs.namenode.servicerpc-address.myhadoop.n1</name>

  <value>192.168.6.171:53310</value>

</property>

<property>

  <name>dfs.namenode.servicerpc-address.myhadoop.n2</name>

  <value>192.168.6.172:53310</value>

</property>



下部分为对应的文件存储目录配置

<property>

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

  <value>file:///cw/hadoop/name</value>

  <description>Determines where on the local filesystem the DFS name node

      should store the name table(fsimage). If this is a comma-delimited list

      of directories then the name table is replicated in all of the

      directories, for redundancy. </description>

</property>


<property>

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

  <value>qjournal://192.168.6.171:8485;192.168.6.172:8485;192.168.6.173:8485/hadoop-journal</value>

  <description>A directory on shared storage between the multiple namenodes

  in an HA cluster. This directory will be written by the active and read

  by the standby in order to keep the namespaces synchronized. This directory

  does not need to be listed in dfs.namenode.edits.dir above. It should be

  left empty in a non-HA cluster.

  </description>

</property>


<property>

  <name>dfs.datanode.data.dir</name>

  <value>file:///cw/hadoop/data</value>

  <description>Determines where on the local filesystem an DFS data node

  should store its blocks. If this is a comma-delimited

  list of directories, then data will be stored in all named

  directories, typically on different devices.

  Directories that do not exist are ignored.

  </description>

</property>


<property>

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

  <value>true</value>

  <description>

    Whether automatic failover is enabled. See the HDFS High

    Availability documentation for details on automatic HA

    configuration.

  </description>

</property>


<property>

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

  <value>/cw/hadoop/journal/</value>

</property>


<property>

  <name>dfs.client.failover.proxy.provider.myhadoop</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/yarn/.ssh/id_rsa</value>

  <description>the location stored ssh key</description>

</property>

 

<property>

  <name>dfs.ha.fencing.ssh.connect-timeout</name>

  <value>1000</value>

</property>

 

<property>

  <name>dfs.namenode.handler.count</name>

  <value>8</value>

</property>


</configuration>

以上所涉及的文件夹需要手工建立,如不存在会出现异常。


以后配置完成后,将配置好的hadoop分发到所有集群节点。同时每一个节点建立需要的文件夹。


下面开始格式化zk节点,执行:./hdfs zkfc -formatZK


执行完毕后,启动ZookeeperFailoverController,用来监控主备节点的状态。


./hadoop-daemon.sh start zkfc  一般在主备节点启动就可以


下一步启动共享存储系统JournalNode
在各个JN节点上启动:hadoop-daemon.sh start journalnode


下一步,在主NN上执行./hdfs namenode -format格式化文件系统


执行完毕后启动主NN./hadoop-daemon.sh start namenode



在备用NN节点先同步NN的元数据信息,执行./hdfs namenode -bootstrapStandby

同步完成后,启动备用NN ./hadoop-daemon.sh start namenode


由于zk已经自动选择了一个节点作为主节点,这里不要手工设置。如想手工设置主备NN可以执行

./hdfs haadmin -transitionToActive nn1


启动所有的datanode


分别打开192.168.6.171:50070和192.168.6.172:50070



可以执行相关的hdfs shell命令来验证集群是否正常工作。

下面来kill掉主节点的NN

kill -9 135415


可以看到已经成功切换。

© 著作权归作者所有

_hadooper
粉丝 11
博文 14
码字总数 10349
作品 0
南京
技术主管
私信 提问
加载中

评论(7)

_hadooper
_hadooper 博主

引用来自“艾灸hadoop”的评论

已经安装 很牛叉

引用来自“_hadooper”的评论

高级程序员,你好

引用来自“艾灸hadoop”的评论

能把配置解释说明一下就好了
艾灸hadoop
艾灸hadoop

引用来自“艾灸hadoop”的评论

已经安装 很牛叉

引用来自“_hadooper”的评论

高级程序员,你好
能把配置解释说明一下就好了
_hadooper
_hadooper 博主

引用来自“青花瓷”的评论

楼主很吊的样子。
还行
_hadooper
_hadooper 博主

引用来自“艾灸hadoop”的评论

已经安装 很牛叉
高级程序员,你好
艾灸hadoop
艾灸hadoop
已经安装 很牛叉
青花瓷
青花瓷
楼主很吊的样子。
_hadooper
_hadooper 博主
沙发
大数据教程(11.1)HA机制以及设计思路的分析

上一章介绍了一些hadoop的实战分析案例,本章将介绍hadoop的高可用以及初步认识hive。 一、Hadoop的HA机制 前言:正式引入HA机制是从hadoop2.0开始,之前的版本中没有HA机制;HA的运作机制:...

em_aaron
01/01
43
0
Hadoop 1.x与Hadoop 2.x的区别

最近看了某大神的博客,非常详细地描述了关于Hadoop 1.x与Hadoop 2.x的区别和改进,博客原文链接如下: http://www.cnblogs.com/edisonchou/p/4470682.html 看了博客之后,自己简单总结概述了...

edwardGe
2018/07/03
49
0
Hadoop基础之HA(高可用)

1.Hadoop2.0产生背景 早期的hadoop版本,NN(namenode)是HDFS集群的单点故障点,每一个集群只有一个NN,如果这个机器或进程不可用,整个集群就无法 使用。为了解决这个问题,出现了一堆针对HDF...

landy8530
2017/11/25
0
0
一脸懵逼学习Hadoop分布式集群HA模式部署(七台机器跑集群)

1)集群规划: 主机名    IP 安装的软件   运行的进程 master 192.168.199.130 jdk、hadoop   NameNode、DFSZKFailoverController(zkfc) slaver1 192.168.199.131 jdk、hadoop   Name......

别叫小伙
2017/10/16
0
0
Hadoop 2.0 Federation

原文:http://www.linuxidc.com/Linux/2014-05/101179.htm 1 概述 在Hadoop1.0的架构中,HDFS的所有的元数据都放在一个namenode中,只有一个namespace(名字空间)。这样随着HDFS的数据越来越多...

柴火
2014/09/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

java通过ServerSocket与Socket实现通信

首先说一下ServerSocket与Socket. 1.ServerSocket ServerSocket是用来监听客户端Socket连接的类,如果没有连接会一直处于等待状态. ServetSocket有三个构造方法: (1) ServerSocket(int port);...

Blueeeeeee
今天
6
0
用 Sphinx 搭建博客时,如何自定义插件?

之前有不少同学看过我的个人博客(http://python-online.cn),也根据我写的教程完成了自己个人站点的搭建。 点此:使用 Python 30分钟 教你快速搭建一个博客 为防有的同学不清楚 Sphinx ,这...

王炳明
昨天
5
0
黑客之道-40本书籍助你快速入门黑客技术免费下载

场景 黑客是一个中文词语,皆源自英文hacker,随着灰鸽子的出现,灰鸽子成为了很多假借黑客名义控制他人电脑的黑客技术,于是出现了“骇客”与"黑客"分家。2012年电影频道节目中心出品的电影...

badaoliumang
昨天
15
0
很遗憾,没有一篇文章能讲清楚线程的生命周期!

(手机横屏看源码更方便) 注:java源码分析部分如无特殊说明均基于 java8 版本。 简介 大家都知道线程是有生命周期,但是彤哥可以认真负责地告诉你网上几乎没有一篇文章讲得是完全正确的。 ...

彤哥读源码
昨天
16
0
jquery--DOM操作基础

本文转载于:专业的前端网站➭jquery--DOM操作基础 元素的访问 元素属性操作 获取:attr(name);$("#my").attr("src"); 设置:attr(name,value);$("#myImg").attr("src","images/1.jpg"); ......

前端老手
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部