Hadoop HA集群部署
准备环境:
7台Linux虚拟机都已经安装Hadoop2.X(是单机版)并且各服务器之间都已经配置SSH免密码登录。
我的安装步骤:每台机器先将单机版本部署;将02、03、11三台机安装好ZooKeeper;最后修改配置文件(配置文件复制给每台机器即可):
修改配置文件:
1、core-site.xml
<configuration><property> <name>fs.defaultFS</name> <value>hdfs://ns1/</value> </property><property> <name>hadoop.tmp.dir</name> <value>/hadoop-sv/HADOOP/hadoop-2.6.5/tmp</value> </property><property> <name>ha.zookeeper.quorum</name> <value>Hadoop-ABO-02:2181,Hadoop-ABO-03:2181,Hadoop-ABO-11:2181</value> </property></configuration>
2、hdfs-site.xml
<configuration> <property> <name>dfs.nameservices</name> <value>ns1</value> </property> <property> <name>dfs.ha.namenodes.ns1</name> <value>nn1,nn2</value> </property> <!-- nn1的RPC通信地址 --> <property> <name>dfs.namenode.rpc-address.ns1.nn1</name> <value>Hadoop-ABO-04:9000</value> </property> <!-- nn1的http通信地址 --> <property> <name>dfs.namenode.http-address.ns1.nn1</name> <value>Hadoop-ABO-04:50070</value> </property> <!-- nn2的RPC通信地址 --> <property> <name>dfs.namenode.rpc-address.ns1.nn2</name> <value>Hadoop-ABO-05:9000</value> </property> <!-- nn2的http通信地址 --> <property> <name>dfs.namenode.http-address.ns1.nn2</name> <value>Hadoop-ABO-05:50070</value> </property> <!-- 指定NameNode的元数据在JournalNode上的存放位置 --> <property> <name>dfs.namenode.shared.edits.dir</name> <value>qjournal://Hadoop-ABO-11:8485;Hadoop-ABO-02:8485;Hadoop-ABO-03:8485/ns1</value> </property> <!-- 指定JournalNode在本地磁盘存放数据的位置 --> <property> <name>dfs.journalnode.edits.dir</name> <value>/hadoop-sv/HADOOP/hadoop-2.6.5/journaldata</value> </property> <!-- 开启NameNode失败自动切换 --> <property> <name>dfs.ha.automatic-failover.enabled</name> <value>true</value> </property> <!-- 配置失败自动切换实现方式 --> <property> <name>dfs.client.failover.proxy.provider.ns1</name> <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value> </property> <!-- 配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行--> <property> <name>dfs.ha.fencing.methods</name> <value> sshfence shell(/bin/true) </value> </property> <!-- 使用sshfence隔离机制时需要ssh免登陆--> <property> <name>dfs.ha.fencing.ssh.private-key-files</name> <value>/root/.ssh/id_rsa</value> </property> <!-- 配置sshfence隔离机制超时时间 --> <property> <name>dfs.ha.fencing.ssh.connect-timeout</name> <value>30000</value> </property></configuration>
3、mapred-site.xml <!-- 我的不需要修改 -->
<configuration> <!-- 指定mr框架为yarn方式 --> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
4、yarn-site.xml
<configuration> <!-- 开启RM高可用 --> <property> <name>yarn.resourcemanager.ha.enabled</name> <value>true</value> </property> <!-- 指定RM的cluster id --> <property> <name>yarn.resourcemanager.cluster-id</name> <value>yrc</value> </property> <!-- 指定RM的名字 --> <property> <name>yarn.resourcemanager.ha.rm-ids</name> <value>rm1,rm2</value> </property> <!-- 分别指定RM的地址 --> <property> <name>yarn.resourcemanager.hostname.rm1</name> <value>Hadoop-ABO-06</value> </property> <property> <name>yarn.resourcemanager.hostname.rm2</name> <value>Hadoop-ABO-07</value> </property> <!-- 指定zk集群地址 --> <property> <name>yarn.resourcemanager.zk-address</name> <value>Hadoop-ABO-11:2181,Hadoop-ABO-02:2181,Hadoop-ABO-03:2181</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property></configuration>
5、修改slaves,只在Hadoop-ABO-04和Hadoop-ABO-06,当他们的小弟不同时候,slaves可以不一样。(slaves是指定子节点的位置,因为要在Hadoop-ABO-04上启动HDFS、在Hadoop-ABO-06启动yarn,所以Hadoop-ABO-04上的slaves文件指定的是datanode的位置,Hadoop-ABO-06上的slaves文件指定的是nodemanager的位置,datanode和nodemanager在一起,在一起)。
Hadoop-ABO-11 Hadoop-ABO-02 Hadoop-ABO-03
(在单一的机器上配置完之后,可以将其拷贝到其他机器上,然后开始启动集群)
启动集群:首次
1、 启动zookeeper集群(分别在>Hadoop-ABO-11、>Hadoop-ABO-02、>Hadoop-ABO-03上启动zk)
cd /Hadoop-ABO-11/ZooKeeper/zookeeper-3.4.5/bin/ ./zkServer.sh start #查看状态:一个leader,两个follower ./zkServer.sh status 此时的Zookeeper中只有zookeeper一个节点。
2、启动journalnode(分别在>Hadoop-ABO-11、>Hadoop-ABO-02、>Hadoop-ABO-03上执行)
cd /Hadoop-ABO-11/HADOOP/hadoop-2.6.5/ sbin/hadoop-daemon.sh start journalnode#运行jps命令检验,Hadoop-ABO-11、Hadoop-ABO-02、Hadoop-ABO-03上多了JournalNode进程。 也会多个目录:journaldata
3、格式化HDFS
#在NN的一个节点上执行命令: hdfs namenode -format #格式化后会在根据core-site.xml中的hadoop.tmp.dir配置生成个文件,同时在journaldata目录中生成ns1目录
之后要拷贝tmp文件到另一台NN 但是建议在另一台NN上执行建议hdfs namenode -bootstrapStandby来实现拷贝(保证元数据的一致性)
4、格式化ZKFC(在Hadoop-ABO-04上执行即可)
hdfs zkfc -formatZK此时Zookeeper中的节点会对一个:hadoop-ha ,同时它的子节点为ns1
5、启动HDFS(在在Hadoop-ABO-04上执行)
sbin/start-dfs.sh 此时NN的HA机制已经跑起来了!
6、启动YARN(#####注意#####:是在Hadoop-ABO-06上执行start-yarn.sh,把namenode和resourcemanager分开是因为性能问题,因为他们都要占用大量资源,所以把他们分开了,他们分开了就要分别在不同的机器上启动)
sbin/start-yarn.sh此时Yarn的HA没有跑起来还需要手动:hadoop-daemon.sh 或者 yarn-daemon.sh start resourcemanager
到此,hadoop配置完毕,可以统计浏览器访问:
http://192.168.20.114:50070
NameNode 'Hadoop-ABO-04:9000' (active)
http://192.168.20.115:50070
NameNode 'Hadoop-ABO-05:9000' (standby)
验证集群:
验证HDFS HA: 首先向hdfs上传一个文件 hadoop fs -put /etc/profile /profile hadoop fs -ls / 然后再kill掉active的NameNode Hadoop-ABO-04 kill -9 <pid of NN> 通过浏览器访问:http://192.168.20.115:50070 NameNode 'Hadoop-ABO-05:9000' (active) 这个时候Hadoop-ABO-05上的NameNode变成了active 在执行命令: hadoop fs -ls / -rw-r--r-- 3 root supergroup 1926 2014-02-06 15:36 /profile 刚才上传的文件依然存在!!! 手动启动那个挂掉的NameNode Hadoop-ABO-04 sbin/hadoop-daemon.sh start namenode 通过浏览器访问:http://192.168.20.114:50070 NameNode 'Hadoop-ABO-04:9000' (standby) 验证YARN:运行一下hadoop提供的demo中的WordCount程序:hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.4.1.jar wordcount /profile /out
hadoop datanode节点超时时间设置
datanode进程死亡或者网络故障造成datanode无法与namenode通信, namenode不会立即把该节点判定为死亡,要经过一段时间,这段时间暂称作超时时长。 HDFS默认的超时时长为10分钟+30秒。如果定义超时时间为timeout,则超时时长的计算公式为: timeout = 2 * heartbeat.recheck.interval + 10 * dfs.heartbeat.interval。 而默认的heartbeat.recheck.interval 大小为5分钟,dfs.heartbeat.interval默认为3秒。 需要注意的是hdfs-site.xml 配置文件中的 heartbeat.recheck.interval的单位为毫秒, dfs.heartbeat.interval的单位为秒。所以,举个例子,如果heartbeat.recheck.interval设置为5000(毫秒),dfs.heartbeat.interval设置为3(秒,默认),则总的超时时间为40秒。 hdfs-site.xml中的参数设置格式:<property> <name>heartbeat.recheck.interval</name> <value>2000</value> </property> <property> <name>dfs.heartbeat.interval</name> <value>1</value> </property>
View Code
HDFS冗余数据块的自动删除
在日常维护hadoop集群的过程中发现这样一种情况: 某个节点由于网络故障或者DataNode进程死亡,被NameNode判定为死亡, HDFS马上自动开始数据块的容错拷贝; 当该节点重新添加到集群中时,由于该节点上的数据其实并没有损坏, 所以造成了HDFS上某些block的备份数超过了设定的备份数。 通过观察发现,这些多余的数据块经过很长的一段时间才会被完全删除掉, 那么这个时间取决于什么呢? 该时间的长短跟数据块报告的间隔时间有关。 Datanode会定期将当前该结点上所有的BLOCK信息报告给Namenode, 参数dfs.blockreport.intervalMsec就是控制这个报告间隔的参数。hdfs-site.xml文件中有一个参数: <property> <name>dfs.blockreport.intervalMsec</name> <value>10000</value> <description>Determines block reporting interval in milliseconds.</description> </property> 其中3600000为默认设置,3600000毫秒,即1个小时,也就是说,块报告的时间间隔为1个小时,所以经过了很长时间这些多余的块才被删除掉。通过实际测试发现,当把该参数调整的稍小一点的时候(60秒),多余的数据块确实很快就被删除了。
View Code
转载于:https://www.cnblogs.com/java-oracle/p/8379467.html
Hadoop HA集群部署相关推荐
- 基于Hadoop HA集群部署HBase HA集群(详细版)
文章目录 1.前言 2.ZooKeeper与Hadoop.HBase的关系 3.Hadoop与HBase的关系 4.架构资源规划 5.ZooKeeper集群设置 5.1 设置nn节点的zoo.conf ...
- Hadoop HA集群部署 - A - 详解
理论简介: HA 概念以及作用 HA(High Available), 高可用性群集,是保证业务连续性的有效解决方案,一般有两个或两个以上的节点,且分为活动节点及备用节点.通常把正在执行业务 ...
- Hadoop+Spark 集群部署
研究了几天 Hadoop+Spark 集群部署,虽然现在还是有点不懂(一脸懵B),想写下自己的总结,日后有新的发现再补充. 我安装时候的参考教程: http://www.powerxing.com/i ...
- (超详细)基于Zookeeper的Hadoop HA集群的搭建
基于Zookeeper的Hadoop HA集群的搭建 JunLeon--go big or go home 前言: 高可用(high availability,HA)指的是若当前工作中的机器宕机了,系 ...
- 虚拟机CentOS 7.5.1804下无外网Hadoop HA集群安装
网上有很多Hadoop HA集群安装的资料,我当时安装也是参考了官方文档和这些资料才安装成功的.由于使用的环境和软件版本可能有所不同,且因工作环境网络所限无法连接外网,加之记录一下自己的安装过程,不枉 ...
- CHAPTER 3 Web HA集群部署 - Keepalived
Web HA集群部署 - Keepalived 1. Keepalived概述 1.1 工作原理 1.2 核心功能 1.3 拓扑图 2. KeepAlived安装方式 2.1 yum源安装 2.2 源 ...
- Hadoop HA集群的搭建
HA 集群搭建的难度主要在于配置文件的编写, 心细,心细,心细! ha模式下,secondary namenode节点不存在... 集群部署节点角色的规划(7节点) ----------------- ...
- Hadoop Ha集群配置
为什么要配置HDFS HA? 首先:HDFS集群中NameNode 如果存在单点故障.对于只有一个NameNode的集群,如果NameNode机器出现意外情况,将导致整个集群无法使用. 而影响HD ...
- Hadoop HA集群配置问题记录
打算用3个节点搭建一个HA 集群,规划如下 HA集群规划 NameNode DataNode JournalNode node1 是 是 是 ndoe2 是 是 是 node3 是 是 hdf ...
- (五)Hadoop HA高可用集群的配置-Hadoop HA集群模式的安装
目录 一.目的及要求: 实验目的: 实验要求: 二.环境要求: 集群规划: 三.具体步骤: 项目一:Hadoop的基本安装配置 项目二:Hadoop高可用完全分布模式配置 项目三:同步安装和配置 项目 ...
最新文章
- 【前沿技术】严重事故!实习生删除字节跳动所有轻量级机器学习模型
- ios6.x越狱将不会再呈现了
- 信息系统项目管理知识--项目沟通管理
- Docker 安装创建
- iphone视图放大_如何将iPhone用作放大镜
- ngingx安装错误 ./configure: error: the HTTP rewrite module requires the PCRE library.
- python mss_Python实现的连接mssql数据库操作示例
- 【报告分享】2021制造业与人工智能创新应用发展报告.pdf(附下载链接)
- 罗马音平假字复制_罗马音大全可复制汉字app下载
- ECSHOP 大商创 对接易支付接口
- android大作业计算器,2015大作业简易计算器实验报告.doc
- 公司网络很慢很卡的原因分析与处理
- 知物由学 | Android 模拟点击研究,如何突围“黑灰产”的自动化作弊?
- UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte xx in position xx: invalid continuation byte
- 37 一次获取redis连接阻塞引起的 Thread pool is EXHAUSTED
- Excel高级图表制作①——电池图/KPI完成情况对比图/重合柱形图
- html图片动态案例,10个强大的纯CSS3动画案例分享
- 图像处理用什么神经网络,神经网络图像处理
- 按键精灵连接远程mysql_【按键精灵】按键精灵读取github page 网页,实现脚本远程控制功能...
- Linux下磁盘配额设置
热门文章
- 一加手机怎么导出照片_批处理整理安卓手机微信导出的视频和照片
- 小米Android OS特别高,干翻小米,最强定制安卓系统诞生?Color OS11表现如何
- stolz定理考研能用吗_这些高数定理,2021二战考研租房的你千万别记混
- 【2019百度之星初赛二1003=HDU6676】度度熊与运算式 1(思维)
- Python Poetry管理包安装速度慢的解决办法
- 测试电动车速度的软件,应用测试:最高速度达11MB/S
- tensorflow--制作数据集tfrecords文件
- java实现会员管理系统_美发店会员管理系统助力门店实现智慧化管理!
- icem合并面网格_详解Flunet Meshing:高级网格划分工具中的“扫地僧”
- 354.俄罗斯套娃信封问题