hadoop HA 之 QJM

前言

本文主要通过对hadoop2.2.0集群配置的过程加以梳理,所有的步骤都是通过自己实际测试。文档的结构也是根据自己的实际情况而定,同时也会加入自己在实际过程遇到的问题。搭建环境过程不重要,重要点在于搭建过程中遇到的问题,解决问题的过程。

可能自己遇到的问题在一些由经验的老者手上都不是问题,但是这些问题着实让自己耽误了很长时间,最后问题解决也是费了太大心血。也通过这篇文档,表现出来,算是总结,为后者提供意见。

Hadoop2.2.0体系结构

要想理解本节内容,首先需要了解hadoop1的体系结构。这里不过多的介绍基于hadoop1的体系架构,早在之前,曾搭建hadoop1.2.1伪分布式集群,详细请看hadoop学习(一)hadoop-1.2.1伪分布式配置及遇到的问题。这里主要介绍hadoop2的体系架构。

hadoop1的核心组成是两部分,即HDFS和MapReduce。在hadoop2中变为HDFS和Yarn。

新的HDFS中的NameNode不再是只有一个了,可以有多个(目前只支持2个)。每一个都有相同的职能。

这两个NameNode的地位如何:一个是active状态的,一个是standby状态的。当 集群运行时,只有active状态的NameNode是正常工作的,standby状态的NameNode是处于待命状态的,时刻同步active状态 NameNode的数据。一旦active状态的NameNode不能工作,通过手工或者自动切换,standby状态的NameNode就可以转变为 active状态的,就可以继续工作了。这就是高可靠。

当NameNode发生故障时,他们的数据如何保持一致:在这里,2个NameNode的数据其实是实时共享的。新HDFS采用了一种共享机制,JournalNode集群或者NFS进行共享。NFS是操作系统层面的,JournalNode是hadoop层面的,我们这里使用JournalNode集群进行数据共享。

如何实现NameNode的自动切换:这就需要使用ZooKeeper集群进行选择了。HDFS集群中的两个NameNode都在ZooKeeper中注册,当active状态的NameNode出故障时,ZooKeeper能检测到这种情况,它就会自动把standby状态的NameNode切换为active状态。

HDFS Federation(HDFS联盟):联盟的出现是有原因的。我们知道 NameNode是核心节点,维护着整个HDFS中的元数据信息,那么其容量是有限的,受制于服务器的内存空间。当NameNode服务器的内存装不下数据后,那么HDFS集群就装不下数据了,寿命也就到头了。因此其扩展性是受限的。HDFS联盟指的是有多个HDFS集群同时工作,那么其容量理论上就不受限了,夸张点说就是无限扩展。你可以理解成,一个总集群中,可以虚拟出两个或两个以上的单独的小集群,各个小集群之间数据是实时共享的。因为hadoop集群中已经不在单独存在namenode和datanode的概念。当一个其中一个小集群出故障,可以启动另一个小集群中的namenode节点,继续工作。因为数据是实时共享,即使namenode或datanode一起死掉,也不会影响整个集群的正常工作。

配置文件如下:

core-site.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
 3 <!--
 4   Licensed under the Apache License, Version 2.0 (the "License");
 5   you may not use this file except in compliance with the License.
 6   You may obtain a copy of the License at
 7 
 8     http://www.apache.org/licenses/LICENSE-2.0
 9 
10   Unless required by applicable law or agreed to in writing, software
11   distributed under the License is distributed on an "AS IS" BASIS,
12   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   See the License for the specific language governing permissions and
14   limitations under the License. See accompanying LICENSE file.
15 -->
16 
17 <!-- Put site-specific property overrides in this file. -->
18 
19 <configuration>
20      <property>  
21            <name>fs.defaultFS</name>  
22           <value>hdfs://cluster1</value>  
23      </property>
24      <property>
25               <name>io.file.buffer.size</name>
26               <value>131072</value>
27          </property>
28          <property>
29              <name>ha.zookeeper.quorum</name>
30              <value>moses.zookeeper0:2181,moses.zookeeper1:2181,moses.zookeeper2:2181,moses.zookeeper3:2181,moses.zookeeper4:2181</value>
31          </property>
32 </configuration>

hdfs-site.xml

  1 <?xml version="1.0" encoding="UTF-8"?>
  2 <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
  3 <!--
  4   Licensed under the Apache License, Version 2.0 (the "License");
  5   you may not use this file except in compliance with the License.
  6   You may obtain a copy of the License at
  7 
  8     http://www.apache.org/licenses/LICENSE-2.0
  9 
 10   Unless required by applicable law or agreed to in writing, software
 11   distributed under the License is distributed on an "AS IS" BASIS,
 12   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13   See the License for the specific language governing permissions and
 14   limitations under the License. See accompanying LICENSE file.
 15 -->
 16 
 17 <!-- Put site-specific property overrides in this file. -->
 18 
 19 <configuration>
 20      <property >  
 21          <name>dfs.replication</name>  
 22          <value>3</value>  
 23      </property>
 24      <property>
 25          <name>dfs.permissions.enabled</name>
 26          <value>false</value>
 27      </property>
 28      <property>
 29          <name>dfs.nameservices</name>
 30          <value>cluster1</value>
 31      </property>
 32      <property>
 33          <name>dfs.ha.namenodes.cluster1</name>
 34          <value>n1,n2</value>
 35      </property>
 36      <property>
 37          <name>dfs.namenode.rpc-address.cluster1.n1</name>
 38          <value>moses.namenode:9090</value>
 39      </property>
 40      <property>
 41          <name>dfs.namenode.http-address.cluster1.n1</name>
 42          <value>moses.namenode:50070</value>
 43      </property>
 44      <property>
 45          <name>dfs.namenode.rpc-address.cluster1.n2</name>
 46          <value>moses.datanode3:9090</value>
 47      </property>
 48      <property>
 49          <name>dfs.namenode.http-address.cluster1.n2</name>
 50          <value>moses.datanode3:50070</value>
 51      </property>
 52      <property>
 53          <name>dfs.namenode.servicerpc-address.cluster1.n1</name>
 54          <value>moses.namenode:53310</value>
 55      </property>
 56      <property>
 57          <name>dfs.namenode.servicerpc-address.cluster1.n2</name>
 58          <value>moses.datanode3:53310</value>
 59      </property>
 60      <property>
 61          <name>dfs.ha.automatic-failover.enabled.cluster1</name>
 62          <value>true</value>
 63      </property>
 64      <property>
 65          <name>dfs.namenode.shared.edits.dir</name>
 66          <value>qjournal://moses.namenode:8485;moses.datanode1:8485;moses.datanode2:8485;moses.datanode3:8485;moses.datanode4:8485/cluster1</value>
 67      </property>
 68      <property>
 69          <name>dfs.client.failover.proxy.provider.cluster1</name>
 70          <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
 71      </property>
 72      <property>
 73          <name>dfs.journalnode.edits.dir</name>
 74          <value>/data/wapage/journal</value>
 75      </property>
 76      <property>
 77          <name>dfs.ha.fencing.methods</name>
 78          <value>sshfence</value>
 79      </property>
 80      <property>
 81          <name>dfs.ha.fencing.ssh.private-key-files</name>
 82          <value>/home/wapage/.ssh/id_rsa</value>
 83      </property>
 84      <property>
 85          <name>dfs.ha.fencing.ssh.connect-timeout</name>
 86          <value>10000</value>
 87      </property>
 88      <property>
 89          <name>dfs.namenode.handler.count</name>
 90          <value>60</value>
 91      </property>
 92 
 93      <property>
 94            <name>dfs.datanode.max.xcievers</name>
 95            <value>4096</value>
 96      </property>
 97      <property>
 98                 <name>dfs.namenode.secondary.http-address</name>
 99                <value>moses.data.namenode:9091</value>
100         </property>
101     <property>
102       <name>hadoop.tmp.dir</name>
103       <value>/data2/wapage/hadooptmp</value>
104       <description>A base for other temporary directories.</description>
105     </property>
106     <property>
107             <name>dfs.namenode.checkpoint.period</name>
108               <value>600</value>
109     </property>
110     <property>
111          <name>dfs.namenode.name.dir</name>
112          <value>/data/wapage/hadoopname,/data1/wapage/hadoopname,/data2/wapage/hadoopname,/data3/wapage/hadoopname,/data4/wapage/hadoopname,/data5/wapage/hadoopname,/data6/wapage/hadoopname,/data7/wapage/hadoopname</value>
113          <description>Determines where on the local filesystem the DFS name node
114                           should store the name table(fsimage).  If this is a comma-delimited list
115                                 of directories then the name table is replicated in all of the
116                                       directories, for redundancy. </description>
117     </property>
118     <property>
119          <name>dfs.datanode.data.dir</name>
120          <value>/data/wapage/hadoopdata,/data1/wapage/hadoopdata,/data2/wapage/hadoopdata,/data3/wapage/hadoopdata,/data4/wapage/hadoopdata,/data5/wapage/hadoopdata,/data6/wapage/hadoopdata,/data7/wapage/hadoopdata</value>
121          <description>Determines where on the local filesystem an DFS data node
122          should store its blocks.  If this is a comma-delimited
123                                                 list of directories, then data will be stored in all named
124                                                   directories, typically on different devices.
125                                                     Directories that do not exist are ignored.
126          </description>
127     </property>
128     <property>
129       <name>dfs.balance.bandwidthPerSec</name>  
130       <value>10485760</value>  
131       <description>  
132         Specifies the maximum amount of bandwidth that each datanode   
133         can utilize for the balancing purpose in term of   
134         the number of bytes per second.   
135       </description>
136     </property>
137 </configuration>

参考地址:http://blog.csdn.net/yczws1/article/details/23566383

 

转载于:https://www.cnblogs.com/wq920/p/5624180.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/458315.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TeamViewer免费版和付费版有什么不同

提到远程控制软件 TeamViewer无疑是目前业内知名度比较高的一款&#xff0c;所以说到远程控制软件可能大部分人首先想到的就是TeamViewer。在使用功能上&#xff0c;它支持远程桌面控制、文件传输、远程计算机锁定、视频会话、主控方和被控方身份互换&#xff0c;远程管理无人执…

iOS-关于cell的重叠问题

记得很早之前遇到过一个问题&#xff0c;关于cell的重叠问题&#xff0c;现在回顾总结一下。 iOS中tableview的cell显示是会消耗内存的&#xff0c;如果要显示无数个cell&#xff0c;不可能把每个cell都存储下来&#xff0c;为了解决这个问题&#xff0c;cell就用了重用机制&am…

每天一个Linux命令-ls

ls 命令在linux系统中是使用频率最频繁的几个命令之一,直接使用不带目录名&#xff0c;是默认显示当前目录的文件及子目录名称&#xff0c;ls加指定目录名&#xff0c;则可以查看指定目录下的文件及子目录名称&#xff0c;ls不仅可以查看目录下有哪些文件和子目录&#xff0c;还…

halcon资料链接

本文转载自xiamentingtao&#xff0c;原文地址如下&#xff1a; http://blog.csdn.net/xiamentingtao/article/details/52583787 1目录(?)[]论坛培训博客文档书籍视频论坛、培训halcon学习网&#xff1a;http://www.ihalcon.com/鸟叔机器视觉&#xff1a;http://bbs.szvbt.com…

【代码笔记】iOS-翻书效果的实现

代码&#xff1a; RootViewController.m #import "RootViewController.h"interface RootViewController ()endimplementation RootViewController- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {self [super initWithNibName:…

修改TFS与本地源代码映射路径

使用源代码管理资源管理器修改工作区 在“文件”菜单上单击“源代码管理”&#xff0c;再单击“工作区”。 在“管理工作区”对话框的“名称”列下&#xff0c;突出显示要修改的工作区&#xff0c;然后单击“编辑”。 在“编辑工作区”对话框中&#xff1a; 修改“名称”框中…

halcon基础知识

一、程序中的颜色&#xff1a; 绿色&#xff1a;注释 褐色&#xff1a;控制开发 浅蓝色&#xff1a;外部函数——HDevelop函数文件&#xff0c;可在所有Halcon程序中使用 深蓝色&#xff1a;图像获取和处理 紫色&#xff1a;内部函数——本地程序函数&#xff0c;只在当前程序使…

停止过度设计,开发客户需要的软件

在与许多不同的团队合作过之后&#xff0c;Greg Young发现大家做项目时经常会大幅度的过度设计。比如一个预计要开发9个月的项目&#xff0c;换个角度思考一下&#xff0c;却可能只需要几个星期就可以提交95%的功能。Young在最近伦敦举行的DDD eXchange大会上着重阐述了这一点。…

Halcon—Tuple中符号的含义

2014年08月08日 21:20:30阅读数&#xff1a;5429实例一&#xff08;3d_coordinates.hdev&#xff09;&#xff1a;for I : 1 to NumImages by 1read_image (Image, calib/calib-3d-coord-I$02d)——C:\Program Files\MVTec\HALCON-10.0\images\的calib文件夹中开头是calib-3d-c…

如果我是博客园的产品经理【上】

题记 这是一个系列文章的第一篇 我打算写一个《如果我是XXX的产品经理》系列&#xff0c; 因为我是博客园的老用户了&#xff0c;这个系列又是写在博客园上的 所以先拿博客园开刀&#xff0c; 后面估计还会写QQ音乐&#xff0c;有道云笔记&#xff0c;github&#xff0c;foxmai…

Halcon学习笔记(三)---数据类型

Halcon学习笔记&#xff08;三&#xff09;---数据类型halcon只能在单独行进行注释&#xff0c;不能在语句后面进行注释。1、tuple(元组&#xff0c;重数)赋值符号“&#xff1a;”tuple算子&#xff1a;&#xff08;1&#xff09;变量定义与加减乘除运算代码如下&#xff1a;*…

论文笔记之:RATM: RECURRENT ATTENTIVE TRACKING MODEL

RATM: RECURRENT ATTENTIVE TRACKING MODEL ICLR 2016 本文主要内容是 结合 RNN 和 attention model 用来做目标跟踪。 其中模型的组成主要是&#xff1a; 1. an attention model 主要用来从输入图像中提取 patch&#xff1b; 2. RNN 用来预测 attention 参数&#xff0c;即&am…

【分享】WeX5的正确打开方式(5)——绑定机制

今天继续WeX5的绑定机制。 需求分析 记账本要实现的效果就是可以展示所有账单&#xff0c;还能实时动态编辑每一笔账单&#xff0c;官方案例的效果图如下&#xff1a; 展示页&#xff1a; 编辑页 个人觉得官方案例加入了许多元素&#xff0c;不熟悉的同学每一个点都很难理解&am…

HALCON常用算子(HALCON13.0)

HALCON常用算子&#xff08;HALCON13.0&#xff09;Chapter 9--Developdev_clear_window ( : : : )功能&#xff1a;清除活动图形窗口的内容dev_close_window ( : : : )功能&#xff1a;关闭活动图形窗口。dev_display ( Object : : : )功能&#xff1a;在现有图形窗口中显示图…

关于未捕获异常的处理(WPF)

转载自&#xff1a;http://www.cnblogs.com/chenxizhang/p/3280947.html 这一篇文章来谈谈对于WPF应用程序开发中的未捕获异常的处理。 首先&#xff0c;我们当然是要求应用程序开发人员&#xff0c;尽可能地在程序可能出现异常的地方都去捕捉异常&#xff0c;使用try…catch的…

设计模式--23、访问者模式

访问者模式是一种较为复杂的行为型设计模式&#xff0c;它包含访问者和被访问元素两个主要组成部分&#xff0c;这些被访问的元素通常具有不同的类型&#xff0c;且不同的访问者可以对它们进行不同的访问操作。例如处方单中的各种药品信息就是被访问的元素&#xff0c;而划价人…

C#串口SerialPort常用属性方法

SerialPort(): //属性 .BaudRate;获取或设置波特率 .BytesToRead;得到 接收到数据的字节数 .BytesToWrites;得到送往串口的字节数 .DataBits;获取或设置数据位 .IsOpen;获取一个值&#xff0c;判断串口是否打开 .Pariy;获取或设置校验位 .PortName;串口名称 .ReadBufferSize;获…

NTFS文件系统的简述

NTFS文件系统的设计思想基于稳定性、和安全性并支持大容量存储设备的文件系统&#xff1a;1.它提供日志可以增加文件系统的容错率&#xff0c;可以有效的保护系统的安全。NTFS是一个可恢复的文件系统。在NTFS分区上即使强制关机后&#xff0c;一般也不需要运行CHKDSK命令修复磁…

Rxjava基础

现在很多Android App的开发开始使用Rxjava&#xff0c;但是Rxjava以学习曲线陡峭著称&#xff0c;入门有些困难。经过一段时间的学习和使用&#xff0c;这里来介绍一下我对Rxjava的理解。 说到Rxjava首先需要了解的两个东西&#xff0c;一个是Observable&#xff08;被观察者&a…

『协议』XML-RPC 协议规格说明

为什么80%的码农都做不了架构师&#xff1f;>>> 这篇文章提供所有实现XML-RPC协议所需要的内容。 一览 XML-RPC是一个工作在因特网上的远端程序调用&#xff08;Remote Procedure Calling&#xff09;协议。 XML-RPC消息是一个HTTP-POST请求&#xff08;Request&…