前面介绍过使用NFS+zookeeper来解决namenode单点失败问题,因为NFS可能也会存在单点问题,所以hadoop提供了一种叫做JournalNode技术,这项技术可以在JournalNode节点间共享数据

我们来介绍这一种技术:JournalNode+ zookeeper

Hadoop 版本:2.2.0

OS 版本: Centos6.4

Jdk 版本: jdk1.6.0_32

环境配置

机器名

Ip地址

功能

Hadoop1

192.168.124.135

NameNode, DataNode,

ResourceManager, NodeManager

Zookeeper

Zkfc

JournalNode

Hadoop2

192.168.124.136

NameNode

DataNode, NodeManager

Zookeeper

Zkfc

JournalNode

Hadoop3

192.168.124.137

DataNode, NodeManager

Zookeeper

Zkfc

JournalNode

在这里就不介绍安装zookeeper,直接使用前面nfs+zookeeper安装好的zookeeper

JournalNode也不需要安装,通过配置就可以。

直接配置hadooper

vi etc/hadoop/hadoop-env.sh 修改jdk位置
export JAVA_HOME=/home/hadoop/jdk1.6.0_32

vi etc/hadoop/mapred-env.sh修改jdk位置

export JAVA_HOME=/home/hadoop/jdk1.6.0_32

vi etc/hadoop/yarn-env.sh修改jdk位置

export JAVA_HOME=/home/hadoop/jdk1.6.0_32

vi etc/hadoop/core-site.xml

<configuration>

<property>

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

<value>/home/hadoop/repo3/tmp</value>

<description>A base for other temporary
directories.</description>

</property>

<property>

<name>fs.defaultFS</name>

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

</property>

<property>

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

<value>/home/hadoop/repo3/journal</value>

</property>

<property>

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

<value>hadoop1:2181,hadoop2:2181,hadoop3:2181</value>

</property>

</configuration>

vi etc/hadoop/hdfs-site.xml

<configuration>

<property>

<name>dfs.replication</name>

<value>2</value>

</property>

<property>

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

<value>/home/hadoop/repo3/name</value>

</property>

<property>

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

<value>/home/hadoop/repo3/data</value>

</property>

<property>

<name>dfs.nameservices</name>

<value>mycluster</value>

</property>

<property>

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

<value>hadoop1,hadoop2</value>

</property>

<property>

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

<value>hadoop1:9000</value>

</property>

<property>

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

<value>hadoop1:50070</value>

</property>

<property>

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

<value>hadoop2:9000</value>

</property>

<property>

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

<value>hadoop2:50070</value>

</property>

<property>

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

<value>qjournal://hadoop1:8485;hadoop2:8485;hadoop3: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/hadoop/.ssh/id_rsa</value>

</property>

<property>

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

<value>true</value>

</property>

</configuration>

vi etc/hadoop/yarn-site.xml

<configuration>

<property>

<description>the valid service name</description>

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

<value>mapreduce_shuffle</value>

</property>

<property>

<description>The hostname of the RM.</description>

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

<value>hadoop1</value>

</property>

</configuration>

vi etc/hadoop/mapred-site.xml

<configuration>

<property>

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

<value>yarn</value>

</property>

</configuration>

vi etc/hadoop/slaves

hadoop1

hadoop2

hadoop3

运行hadoop

启动zookeeper,在hadoop1 ,hadoop2, hadoop3上运行

cd /home/hadoop/zookeeper-3.4.5/bin

./zkServer.sh  start

格式化namenode和failovercontroler

failovercontroler也需要格式化: bin/hdfs zkfc -formatZK

在hadoop1节点上运行: bin/hdfs namenode -format -clusterid mycluster

在hadoop2节点上的namenode信息需要与hadoop1节点同步,不能通过简单的格式化做到,hadoop2节点上的namenode需要向hadoop1的namenode发送数据请求。因此我们还需要启动hadoop1上的namenode.

在hadoop1上运行: bin/hdfs namenode

在hadoop3上运行:bin/hdfs namenode  -bootstrapStandby

最后关闭hadoop1上的namenode,然后启动整个hadoop集群。

启动hadoop集群

cd /home/hadoop/hadoop-2.2.0

sbin/start-all.sh

从图上可以看出,先启动namenode,再启动datanode, 再启动journalnode, 再启动ZK failover controller, 再启动resourcemanger, 最后启动nodemanager。

使用jps查看启动的进程

在hadoop1上运行jps

在hadoop2上运行jps

在hadoop3上运行jps

查看namenode的状态

bin/hdfs haadmin -getServiceState hadoop1

bin/hdfs haadmin -getServiceState hadoop2

从图上可以看出hadoop2上的namenode处于active状态,而hadoop1上的namenode处于standby状态

这些信息也可以通过Hadoop的web界面得到。

在浏览器里输入:http://hadoop1:50070

在浏览器里输入:http://hadoop2:50070

这里就不介绍failover后,有兴趣的可以看看nfs+zookeeper相关的内容

Hadoop2的HA安装(high availability):JournalNode+ zookeeper的更多相关文章

  1. Hadoop2的HA安装(high availability):nfs+zookeeper

    前面介绍过hadoop的简单安装和FA安装,在这里将介绍几种hadoop2中HA(高可用性)安装,HA技术使hadoop不再存在单点namenode的故障. 先来第一种:nfs+zookeeper H ...

  2. Hadoop2.6 Ha 安装

    Hadoop 2.6安装文档 版本说明:hadoop 2.6  linux-64位 Zookeeper3.4.6 jdk 1.7.0_75 1.       Ssh无密码 ssh-keygen vim ...

  3. hadoop2.7.1 HA安装部署(转)

    hadoop集群规划 目标:创建2个NameNode,做高可用,一个NameNode挂掉,另一个能够启动:一个运行Yarn,3台DataNode,3台Zookeeper集群,做高可用. 在 hadoo ...

  4. Apache Hadoop2.x 边安装边入门

    完整PDF版本:<Apache Hadoop2.x边安装边入门> 目录 第一部分:Linux环境安装 第一步.配置Vmware NAT网络 一. Vmware网络模式介绍 二. NAT模式 ...

  5. 2-Zookeeper、HA安装

    1.Zookeeper安装 1.解压 zookeeper 到安装目录中/opt/app/zookeeper 中. 2.在安装目录下创建data和logs两个目录用于存储数据和日志: cd /opt/a ...

  6. 基于原生态Hadoop2.6 HA集群环境的搭建

    hadoop2.6  HA平台搭建   一.条件准备 软件条件: Ubuntu14.04 64位操作系统, jdk1.7 64位,Hadoop 2.6.0,  zookeeper 3.4.6 硬件条件 ...

  7. hadoop-2.4.1集群搭建及zookeeper管理

    准备 1.1修改主机名,设置IP与主机名的映射 [root@xuegod74 ~]# vim /etc/hosts 192.168.1.73 xuegod73 192.168.1.74 xuegod7 ...

  8. hadoop2.8 ha 集群搭建

    简介: 最近在看hadoop的一些知识,下面搭建一个ha (高可用)的hadoop完整分布式集群: hadoop的单机,伪分布式,分布式安装 hadoop2.8 集群 1 (伪分布式搭建 hadoop ...

  9. FW 构建OpenStack的高可用性(HA,High Availability)

    原文地址:http://blog.csdn.net/hilyoo/article/details/7704280 1.CAP理论 1) CAP 理论给出了3个基本要素: 一致性 ( Consisten ...

随机推荐

  1. POJ1125 Stockbroker Grapevine 多源最短路

    题目大意 给定一个图,问从某一个顶点出发,到其它顶点的最短路的最大距离最短的情况下,是从哪个顶点出发?须要多久? (假设有人一直没有联络,输出disjoint) 解题思路 Floyd不解释 代码 #i ...

  2. STL源码剖析(适配器)

    STL中由三类适配器,它们分别是: 1.容器适配器(stack.queue) 2.迭代器适配器(insert_iterator.reverse_iterator.iostream_iterator) ...

  3. lspci查看硬件信息时提示找不到命令

    系统环境:centos 6.3 X64 错误信息:[root@localhost ~]# lspci-bash: lspci: command not found 问题原因:这是因为没有安装pciut ...

  4. C++MFC编程笔记day03 MFC工具栏、状态栏、视图窗体

    MFC工具栏 相关类: CToolBarCtrl - 父类是 CWnd  封装了工具栏控件相关操作 CToolBar - 父类是CControlBar  封装了工具栏和框架窗体之间的关系 工具栏使用: ...

  5. FTP命令使用详解

    FTP命令是Internet用户使用最频繁的命令之一,不论是在DOS还是UNIX操作系统下使用FTP,都会遇到大量的FTP内部命令.熟悉并灵活应用FTP的内部命令,可以大大方便使用者,并收到事半功倍之 ...

  6. 区别原生chrome 和以chrome为内核的360浏览器

    function isChrome360() { if( navigator.userAgent.toLowerCase().indexOf('chrome') > -1 ) { var des ...

  7. Android数据格式解析对象JSON用法

    1.JSON概念: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性,从而可以在不同平台间进行数据交换.JSON采用兼容性很高的文本格式,同时也具备类似于C语言体系的行为. JSON可以将 ...

  8. property 与 attribute 的区别?

    一个是属性,用于存取类的字段,一个是特性,用来标识类,方法等的附加性质. 属性: class TimePeriod { private double seconds; public double Ho ...

  9. python 实现元组中的的数据按照list排序, python查询mysql得到的数据是元组格式,按照list格式对他们排序

    需求: 需要用echart实现软件模块的统计分析,首先是对数据库的数据查询出来,然后给数据封装成列表(list)格式,数据传到前台,在echart实现绑定数据. 因为数据已经按照从大到小的顺序显示出来 ...

  10. Sublime Text 2中自定义代码模板

    Sublime Text 2中自定义代码模板 2012-12-06 10:13 9921人阅读 评论(0) 收藏 举报  分类: 编辑器-Sublime Text 2(5)  版权声明:本文为博主原创 ...