阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Hadoop 2.2.0 HA搭建(现有集群,QJM方案)

444次阅读
没有评论

共计 7798 个字符,预计需要花费 20 分钟才能阅读完成。

 * 本文档分别阐述了给新建集群配置 HA 的方法(需要格式化 namenode)以及给现有集群配置 HA 的方法(不需要格式化 namenode),均使用 QJM 方案。
 
一、机器情况

angel1

10.2.0.101

baby18

10.1.1.38

baby19

10.1.1.39

baby20

10.1.1.40

我们有两台 namenode 机器,分别部署在 baby20 和 angel1 上;
 
我们有三台 journalnode,分别部署在 baby18、baby19 和 baby20 上,用来存储 namenode 元数据;
 
有三台 zookeeper 组成的集群用来管理 namenode 的状态(active 或者 standby),分别部署在 baby18、baby19 和 baby20 上;
 
有三台 datanode 节点,部署在 baby18、baby19 和 baby20 上。
 

————————————– 分割线 ————————————–

Ubuntu 13.04 上搭建 Hadoop 环境 http://www.linuxidc.com/Linux/2013-06/86106.htm

Ubuntu 12.10 +Hadoop 1.2.1 版本集群配置 http://www.linuxidc.com/Linux/2013-09/90600.htm

Ubuntu 上搭建 Hadoop 环境(单机模式 + 伪分布模式)http://www.linuxidc.com/Linux/2013-01/77681.htm

Ubuntu 下 Hadoop 环境的配置 http://www.linuxidc.com/Linux/2012-11/74539.htm

单机版搭建 Hadoop 环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm

————————————– 分割线 ————————————–
 
二、HDFS 部署文档
 
1. 建立用户
 
每台机器都用 hdfs 账号登录,进行操作。
 
2. 建立 ssh 联接
 
登录 baby20
 
mkdir .ssh
 
ssh-keygen -t rsa –f~/.ssh/id_rsa
 
cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys
 
将.shh 文件分发到 baby18、baby19 和 angel1 上;
 
对 angel1 做同样操作,保证四台机器无需密码即可切换用户。
 
3.  搭建 zookeeper
 
 
 
4. 修改配置文件
 
a) 修改 core-site.xml 
 
 发上来格式太乱了,略掉。
 
b) 修改 hdfs-site.xml
 
发上来格式太乱了,略掉。
 
 c)修改 slaves
 
baby18
 
baby19
 
baby20
 
以上分发 hadoop 到各个机器。
 
注意:给新建集群和现有集群配置 HA 的两种方案在下面这一部分会稍有不同,将分别阐述。
 
 
 
(一)给新建集群配置 HA 的方法(需要格式化 namenode)
 
5. 启动 JournalNode 服务
 
进入 bin 目录  ./hdfs journalnode
 
三台部署 journalnode 的机器都如此执行。
 
访问 web 页面 baby18:8480,baby19:8480,baby20:8480
 
检查服务是否正常。
 
 
 
6.  启动 hadoop
 
 
 
这里默认 baby20 为主备 namenode,angel1 为备用 namenode。
 
a)      进入 baby20 的 hadoop/bin 目录
 
执行 ./hdfs namenode -format                 
 
执行 ./hdfs zkfc -formatZK                   
 
执行  ./hdfs namenode                                 
 
b)      进入 angel1 的 hadoop/bin 目录
 
执行  ./hdfs namenode -bootstrapStandby  – 同步 namenode 元数据,需要在选举服务启动之前同步;
 
执行  ./hdfs namenode
 
c)      进入 baby18、baby19、baby20 的 hadoop/bin 目录
 
执行 ./hdfs datanode                                     
 
注意:此时 查看页面 baby20:35070、angel1:35070,两个 namenode 都是出于 standby 的状态,因为还未开启选举服务。
 
d)  每台 namenode 节点都要执行以下命令启动自动选举服务
 
执行  ./hdfs zkfc  – 启动自动选举服务
 
注意:此操作必须在启动两个 namenode 之后进行,否则 namenode 会挂掉!
 
 此时查看页面 baby20:35070、angel1:35070,应该一个处于 standby 状态 一个处于 active 状态。
 
——————————————————————————-
 
(二)给现有集群配置 HA 的方法(因为不能格式化 namenode,所以需要对上面的操作进行部分修改)
 
 
 
5. 启动 JournalNode 服务
 
进入 bin 目录  ./hdfs journalnode
 
三台部署 journalnode 的机器都如此执行。
 
访问 web 页面 baby18:8480,baby19:8480, 巴布亚 20:8480
 
检查服务是否正常。
 
 
 
6.  启动 hadoop
 
 
 
这里默认 baby20 为主备 namenode,angel1 为备用 namenode。
 
d)    进入 baby20 的 hadoop/bin 目录
 
执行 hdfs namenode -initializeSharedEdits -force    — 这一操作主要完成格式化所有 JournalNode,以及将日志文件从 baby20 拷贝到所有 JournalNode。
 
执行 ./hdfs zkfc -formatZK                   
 
执行  ./hdfs namenode                                 
 
e)      进入 angel1 的 hadoop/bin 目录
 
为了让主备 dfs.namenode.name.dir 目录下的 Namenode 的元数据一致以及 dfs.namenode.shared.edits.dir 包含最近所有的 edit files,可以把主节点的 dfs.namenode.name.dir 目录下的元数据拷贝到备用节点 dfs.namenode.name.dir 和共享 dfs.namenode.shared.edits.dir 目录下。
 
执行  ./hdfs namenode
 
f)      进入 baby18、baby19、baby20 的 hadoop/bin 目录
 
执行 ./hdfs datanode                                     
 
注意:此时 查看页面 baby20:35070、angel1:35070,两个 namenode 都是出于 standby 的状态,因为还未开启选举服务。
 
d)  每台 namenode 节点都要执行以下命令启动自动选举服务
 
执行  ./hdfs zkfc  – 启动自动选举服务
 
注意:此操作必须在启动两个 namenode 之后进行,否则 namenode 会挂掉!
 
 此时查看页面 baby20:35070、angel1:35070,应该一个处于 standby 状态 一个处于 active 状态。

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2014-08/105155p2.htm

三、Tips

1.      首先把各个 zookeeper 起来,然后在某一个节点执行 hdfs zkfc -formatZK,创建命名空间;

2.      在备节点执行 hdfs namenode -bootstrapStandby,这个是把主 namenode 节点的目录格式化并把数据从主 namenode 节点的元数据拷本过来,并且这个命令不会把 journalnode 目录在格式化;

3.      ./Hadoop-daemon.sh start zkfc 两个节点都做;

4.      ./hadoop-daemon.sh start datanode 所有 datanode 节点都做;

5.      如果采用格式化 namenode 方法的话,datanode 会报错 org.apache.hadoop.hdfs.server.datanode.DataNode: Initialization failed for block pool Block pool,是因为 namenode format 会重新创建一个 namenodeId, 而 tmp/dfs/data 下包含了上次 format 下的 id,namenode format 清空了 namenode 下的数据,但是没有清空 datanode 下的数据,导致启动时失败,解决方法谷歌到:

We have to delete and recreate the folder /home/hadoop/dfs/data on local FS for DN.

·      Check your hdfs-site.xml file to see where dfs.data.dir is pointing to

·      and delete that folder

·      and then restart the DN daemon on machine

Above steps should create folder and resolve the problem.

6.      最后发现备用 namenode 下只有 1 台 datanode,看了下日志发现 50010 端口号被占用。。。解决办法是在 hdfs-site.xml 重新配一下就好啦。

7.      先起 namenode 在起 zkfc 你会发现 namenode 无法 active 状态,当你把 zkfc 启动后就可以了,顺序不能变,如果先把 zkfc 启动了,会导到 namenode 起不来!

8.      另外也可以采用 bin/hdfs haadmin –DFSHAadmin –transitionToActive nn1 让上面配置的 nn1 处于 active 状态,nn2 还处于 stanby 状态。另外 DFSHAadmin 还有一些其他的功能如下:

Usage: DFSHAAdmin [-ns]

[-transitionToActive]

[-transitionToStandby]

[-failover [–forcefence] [–forceactive] ]

[-getServiceState]

[-checkHealth]

其中:bin/hdfs haadmin -DfSHAadmin -failover nn1 nn2 是让 nn2 成为变为 active nn1 变为 standby,这是使用这个命令可能会出现:Failover failed: /10.250.8.107:9000 is not ready to become active,这时我们用命令 bin/hdfs haadmin -DfSHAadmin -failover –forceactive nn1 nn2 就不会出现上面的问题。

问题终于算是圆满解决了,以上内容来很多来自网上,本人拙略地整理了下。

更多 Hadoop 相关信息见Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13

 * 本文档分别阐述了给新建集群配置 HA 的方法(需要格式化 namenode)以及给现有集群配置 HA 的方法(不需要格式化 namenode),均使用 QJM 方案。
 
一、机器情况

angel1

10.2.0.101

baby18

10.1.1.38

baby19

10.1.1.39

baby20

10.1.1.40

我们有两台 namenode 机器,分别部署在 baby20 和 angel1 上;
 
我们有三台 journalnode,分别部署在 baby18、baby19 和 baby20 上,用来存储 namenode 元数据;
 
有三台 zookeeper 组成的集群用来管理 namenode 的状态(active 或者 standby),分别部署在 baby18、baby19 和 baby20 上;
 
有三台 datanode 节点,部署在 baby18、baby19 和 baby20 上。
 

————————————– 分割线 ————————————–

Ubuntu 13.04 上搭建 Hadoop 环境 http://www.linuxidc.com/Linux/2013-06/86106.htm

Ubuntu 12.10 +Hadoop 1.2.1 版本集群配置 http://www.linuxidc.com/Linux/2013-09/90600.htm

Ubuntu 上搭建 Hadoop 环境(单机模式 + 伪分布模式)http://www.linuxidc.com/Linux/2013-01/77681.htm

Ubuntu 下 Hadoop 环境的配置 http://www.linuxidc.com/Linux/2012-11/74539.htm

单机版搭建 Hadoop 环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm

————————————– 分割线 ————————————–
 
二、HDFS 部署文档
 
1. 建立用户
 
每台机器都用 hdfs 账号登录,进行操作。
 
2. 建立 ssh 联接
 
登录 baby20
 
mkdir .ssh
 
ssh-keygen -t rsa –f~/.ssh/id_rsa
 
cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys
 
将.shh 文件分发到 baby18、baby19 和 angel1 上;
 
对 angel1 做同样操作,保证四台机器无需密码即可切换用户。
 
3.  搭建 zookeeper
 
 
 
4. 修改配置文件
 
a) 修改 core-site.xml 
 
 发上来格式太乱了,略掉。
 
b) 修改 hdfs-site.xml
 
发上来格式太乱了,略掉。
 
 c)修改 slaves
 
baby18
 
baby19
 
baby20
 
以上分发 hadoop 到各个机器。
 
注意:给新建集群和现有集群配置 HA 的两种方案在下面这一部分会稍有不同,将分别阐述。
 
 
 
(一)给新建集群配置 HA 的方法(需要格式化 namenode)
 
5. 启动 JournalNode 服务
 
进入 bin 目录  ./hdfs journalnode
 
三台部署 journalnode 的机器都如此执行。
 
访问 web 页面 baby18:8480,baby19:8480,baby20:8480
 
检查服务是否正常。
 
 
 
6.  启动 hadoop
 
 
 
这里默认 baby20 为主备 namenode,angel1 为备用 namenode。
 
a)      进入 baby20 的 hadoop/bin 目录
 
执行 ./hdfs namenode -format                 
 
执行 ./hdfs zkfc -formatZK                   
 
执行  ./hdfs namenode                                 
 
b)      进入 angel1 的 hadoop/bin 目录
 
执行  ./hdfs namenode -bootstrapStandby  – 同步 namenode 元数据,需要在选举服务启动之前同步;
 
执行  ./hdfs namenode
 
c)      进入 baby18、baby19、baby20 的 hadoop/bin 目录
 
执行 ./hdfs datanode                                     
 
注意:此时 查看页面 baby20:35070、angel1:35070,两个 namenode 都是出于 standby 的状态,因为还未开启选举服务。
 
d)  每台 namenode 节点都要执行以下命令启动自动选举服务
 
执行  ./hdfs zkfc  – 启动自动选举服务
 
注意:此操作必须在启动两个 namenode 之后进行,否则 namenode 会挂掉!
 
 此时查看页面 baby20:35070、angel1:35070,应该一个处于 standby 状态 一个处于 active 状态。
 
——————————————————————————-
 
(二)给现有集群配置 HA 的方法(因为不能格式化 namenode,所以需要对上面的操作进行部分修改)
 
 
 
5. 启动 JournalNode 服务
 
进入 bin 目录  ./hdfs journalnode
 
三台部署 journalnode 的机器都如此执行。
 
访问 web 页面 baby18:8480,baby19:8480, 巴布亚 20:8480
 
检查服务是否正常。
 
 
 
6.  启动 hadoop
 
 
 
这里默认 baby20 为主备 namenode,angel1 为备用 namenode。
 
d)    进入 baby20 的 hadoop/bin 目录
 
执行 hdfs namenode -initializeSharedEdits -force    — 这一操作主要完成格式化所有 JournalNode,以及将日志文件从 baby20 拷贝到所有 JournalNode。
 
执行 ./hdfs zkfc -formatZK                   
 
执行  ./hdfs namenode                                 
 
e)      进入 angel1 的 hadoop/bin 目录
 
为了让主备 dfs.namenode.name.dir 目录下的 Namenode 的元数据一致以及 dfs.namenode.shared.edits.dir 包含最近所有的 edit files,可以把主节点的 dfs.namenode.name.dir 目录下的元数据拷贝到备用节点 dfs.namenode.name.dir 和共享 dfs.namenode.shared.edits.dir 目录下。
 
执行  ./hdfs namenode
 
f)      进入 baby18、baby19、baby20 的 hadoop/bin 目录
 
执行 ./hdfs datanode                                     
 
注意:此时 查看页面 baby20:35070、angel1:35070,两个 namenode 都是出于 standby 的状态,因为还未开启选举服务。
 
d)  每台 namenode 节点都要执行以下命令启动自动选举服务
 
执行  ./hdfs zkfc  – 启动自动选举服务
 
注意:此操作必须在启动两个 namenode 之后进行,否则 namenode 会挂掉!
 
 此时查看页面 baby20:35070、angel1:35070,应该一个处于 standby 状态 一个处于 active 状态。

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2014-08/105155p2.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计7798字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7987356
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级 大家好,我是星哥,之前写了一篇文章 自己手撸一...
终于收到了以女儿为原型打印的3D玩偶了

终于收到了以女儿为原型打印的3D玩偶了

终于收到了以女儿为原型打印的 3D 玩偶了 前些日子参加某网站活动,获得一次实物 3D 打印的机会,于是从众多...
恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击 PHP-FPM(FastCGl Process M...
三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

  三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Andr...
星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛 NAS-12:开源笔记的进化之路,效率玩家的新选择 前言 如何高效管理知识与笔记,已经成为技术...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
如何安装2026年最强个人助理ClawdBot、完整安装教程

如何安装2026年最强个人助理ClawdBot、完整安装教程

如何安装 2026 年最强个人助理 ClawdBot、完整安装教程 一、前言 学不完,根本学不完!近期,一款名...
240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

  240 元左右!五盘位 NAS 主机,7 代 U 硬解 4K 稳如狗,拓展性碾压同价位 在 NA...
颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

  颠覆 AI 开发效率!开源工具一站式管控 30+ 大模型 ApiKey,秘钥付费 + 负载均衡全...
告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

  告别 Notion 焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁” 引言 在数字笔记工...
三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

  三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Andr...