使用QJM部署HDFS HA集群
一、所需软件
1. JDK版本
下载地址:http://www.oracle.com/technetwork/java/javase/index.html
版本: jdk-7u79-linux-x64.gz
2. Hadoop软件
下载地址:http://hadoop.apache.org/releases.html
版本: hadoop-2.6.0.tar.gz
二、配置ssh免密码登陆:
查阅之前博客:http://www.cnblogs.com/yinchengzhe/p/4967928.html
三、环境说明
主备NameNode有多种配置,本文采用QJM(Quorum Journal Manager) ,主备NameNode应位于不同机器上
集群中包括4个节点:1个Master,3个Salve,节点之间局域网连接,可以相互ping通。
本人有3台云主机,主机名分别为h1,h2,h3。由于资源紧缺,master和其中一个salve共用h1主机。
搭建手动切换ha集群,较自动切换少了一个zookeeper集群。
主机分布情况如下:
h1: master namenode(主) journalnode datanode
h2: salve namenode(备) journalnode datanode
h3: salve journalnode datanode
四、HDFS HA (QJM)集群安装
1. 在h1上解压hadoop-2.6.0.tar.gz并重命名为hadoop
> tar zxvf hadoop-2.6.0.tar.gz
> mv hadoop-2.6.0 hadoop
2. 配置hadoop-env.sh
配置jdk路径,如: export JAVA_HOME=/root/software/jdk1.7.0_79
3. 配置core-site.xml
修改Hadoop核心配置文件core-site.xml,这里配置的是HDFS的地址和端口号
> cd /hadoop/etc/hadoop
> vim core-site.xml
配置如下:

注:此处h1为本机的hostname
4. 配置slaves
此配置为master主机特有,配置此文件有两种方式
第一种:去掉"localhost",每行只添加一个主机名,把所有的Slave主机名都填上。
如:h1
h2
h3
第二种: 去掉"localhost",加入集群中所有Slave机器的IP,也是每行一个。
如:192.168.1.1
192.168.1.2
192.168.1.3
5. 配置hdfs-site.xml
如下所示:

(1). dfs.nameservices
集群中命名服务列表(自定义)
(2). dfs.ha.namenodes.[nameservice ID]
命名服务中的namenode逻辑名称(自定义)
(3). dfs.namenode.rpc-address.[nameservice ID].[name node ID]
命名服务中逻辑名称对应的RPC地址
(4). dfs.namenode.http-address.[nameservice ID].[name node ID]
命名服务中逻辑名称对应的HTTP地址
(5). dfs.namenode.name.dir
NameNode fsiamge存放目录
(6). dfs.namenode.shared.edits.dir
主备NameNode同步元信息的共享存储系统
(7). dfs.journalnode.edits.dir
Journal Node数据存放目录
6. 将h1上的hadoop文件夹复制到h2、h3节点上
7. 启动关闭HDFS
步骤1:在各个JournalNode节点上,输入以下命令启动journalnode服务:
> sbin/hadoop-daemon.sh start journalnode
步骤2:在[nn1]上,对其进行格式化,并启动:
> bin/hdfs namenode -format
> sbin/hadoop-daemon.sh start namenode
步骤3:在[nn2]上,同步nn1的元数据信息:
> bin/hdfs namenode -bootstrapStandby
步骤4:在[nn2],启动NameNode:
> sbin/hadoop-daemon.sh start namenode
(经过以上四步操作,nn1和nn2均处理standby状态)
步骤5:在[nn1]上,将NameNode切换为Active
> bin/hdfs haadmin -transitionToActive nn1
步骤6:在[nn1]上,启动所有datanode
> sbin/hadoop-daemons.sh start datanode
启动成功可通过jps命令查看结果,如下所示:



关闭:
在[nn1]上输入命令 sbin/stop-dfs.sh
8. HDFS WEB界面浏览
Windows访问Linux方式参照 http://www.cnblogs.com/yinchengzhe/p/5012936.html
启动hdfs后界面如下:


使用QJM部署HDFS HA集群的更多相关文章
- 手动部署 kubernetes HA 集群
前言 关于kubernetes HA集群部署的方式有很多种(这里的HA指的是master apiserver的高可用),比如通过keepalived vip漂移的方式.haproxy/nginx负载均 ...
- JAVA API连接HDFS HA集群
使用JAVA API连接HDFS时我们需要使用NameNode的地址,开启HA后,两个NameNode可能会主备切换,如果连接的那台主机NameNode挂掉了,连接就会失败. HDFS提供了names ...
- 菜鸟玩云计算之十八:Hadoop 2.5.0 HA 集群安装第1章
菜鸟玩云计算之十八:Hadoop 2.5.0 HA 集群安装第1章 cheungmine, 2014-10-25 0 引言 在生产环境上安装Hadoop高可用集群一直是一个需要极度耐心和体力的细致工作 ...
- ZooKeeper学习之路 (九)利用ZooKeeper搭建Hadoop的HA集群
Hadoop HA 原理概述 为什么会有 hadoop HA 机制呢? HA:High Available,高可用 在Hadoop 2.0之前,在HDFS 集群中NameNode 存在单点故障 (SP ...
- 菜鸟玩云计算之十九:Hadoop 2.5.0 HA 集群安装第2章
菜鸟玩云计算之十九:Hadoop 2.5.0 HA 集群安装第2章 cheungmine, 2014-10-26 在上一章中,我们准备好了计算机和软件.本章开始部署hadoop 高可用集群. 2 部署 ...
- Canalv1.1.4版本搭建HA集群
前提 Canal上一个正式版是于2019-9-2发布的v1.1.4,笔者几个月前把这个版本的Canal推上了生产环境,部署了HA集群.过程中虽然遇到不少的坑,但是在不出问题的前提下,Canal的作用还 ...
- HDFS的HA集群原理分析
1.简单hdfs集群中存在的问题 不能存在两个NameNode 单节点问题 单节点故障转移 2.解决单节点问题 找额外一个NameNode备份原有的数据 会出现脑裂 脑裂:一个集群中多个管理者数据 ...
- Hadoop HA集群 与 开发环境部署
每一次 Hadoop 生态的更新都是如此令人激动 像是 hadoop3x 精简了内核,spark3 在调用 R 语言的 UDF 方面,速度提升了 40 倍 所以该文章肯定得配备上最新的生态 hadoo ...
- Hadoop(HDFS,YARN)的HA集群安装
搭建Hadoop的HDFS HA及YARN HA集群,基于2.7.1版本安装. 安装规划 角色规划 IP/机器名 安装软件 运行进程 namenode1 zdh-240 hadoop NameNode ...
随机推荐
- plsql中文乱码问题(显示问号)
问题:打开plsql,执行sql语句,中文显示乱码: 解决方案: 输入sql语句select userenv('language') from dual查看数据库字符集 输入sql语句select * ...
- c语言学习之基础知识点介绍(二):格式化控制符和变量的补充
上节简单介绍了c语言中的一些基础知识点,本节将对之前介绍的不够详细的知识点进行补充. 格式化控制符的消息介绍: %d的其他控制符: 1.%md:m代表这个整数位占用多少位,m是一个整数.实际数字不足的 ...
- Android - IOExceptionConnection to xxx refused.
还是stackoverflow上老外牛,往google上type一下,就找到原因了. 今天在使用Apache提供的HttpClient连接Tomcat服务器,使用log捕获异常的时候,提示说:IOEx ...
- SET NOCOUNT 的意义.
SET NOCOUNT 使返回的结果中不包含有关受 Transact-SQL 语句影响的行数的信息. 语法 SET NOCOUNT { ON | OFF } 当 SET NOCOUNT 为 ON 时, ...
- js跨浏览器事件对象、事件处理程序
项目中有时候会不用jquery这么好用的框架,需要自己封装一些事件对象和事件处理程序,像封装AJAX那样:这里面考虑最多的还是浏览器的兼容问题,原生js封装如下:var EventUtil={ //节 ...
- 新安装 wampserver 出现 You don't have permission to access / on this server. 或者访问数据库出现You don't have permission to access /phpmyadmin/ on this server.(解决方法)转
本地搭建wamp,输入http://127.0.0.1访问正常,当输入http://localhost/,apache出现You don't have permission to access/on ...
- iOS 地图坐标系之间的转换WGS-84世界标准坐标、GCJ-02中国国测局(火星坐标,高德地图)、BD-09百度坐标系转换
开发过程中遇到地图定位不准确,存在偏差.首先确认你获取到的坐标所在坐标系跟地图数据是不是相匹配的. 常用的地图SDK:高德地图使用的是GCJ-02(也就是火星坐标系),百度使用的是BD-09百度坐标系 ...
- (转)Android 从底层实现让应用杀不死【失效Closed】(1)
转自:http://klob.diandi.life/?p=21#symple-tab-%e8%b0%83%e6%9f%a5%e5%af%b9%e8%b1%a1 情景还原: 我的应用调用了Notifi ...
- struts-json
Struts2序列化的属性,该属性在action中必须有对应的getter方法 如果action的属性很多,我们想要从Action返回到调用页面的数据.这个时候配置includeProperties或 ...
- 实现 winform 异步跨线程访问UI控件
在开发winform时经常会用到多线程防止界面出现假死现象,比如当你单击某个按钮时,需要执行很多代码,但是在执行过程中想实时的将当前执行的情况报告给用户,类型进度条或文本什么的. 这个时候很显然,如果 ...