准备环境

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集群部署相关推荐

  1. 基于Hadoop HA集群部署HBase HA集群(详细版)

    文章目录 1.前言 2.ZooKeeper与Hadoop.HBase的关系 3.Hadoop与HBase的关系 4.架构资源规划 5.ZooKeeper集群设置 5.1 设置nn节点的zoo.conf ...

  2. Hadoop HA集群部署 - A - 详解

    理论简介:  HA 概念以及作用     HA(High Available), 高可用性群集,是保证业务连续性的有效解决方案,一般有两个或两个以上的节点,且分为活动节点及备用节点.通常把正在执行业务 ...

  3. Hadoop+Spark 集群部署

    研究了几天 Hadoop+Spark 集群部署,虽然现在还是有点不懂(一脸懵B),想写下自己的总结,日后有新的发现再补充. 我安装时候的参考教程: http://www.powerxing.com/i ...

  4. (超详细)基于Zookeeper的Hadoop HA集群的搭建

    基于Zookeeper的Hadoop HA集群的搭建 JunLeon--go big or go home 前言: 高可用(high availability,HA)指的是若当前工作中的机器宕机了,系 ...

  5. 虚拟机CentOS 7.5.1804下无外网Hadoop HA集群安装

    网上有很多Hadoop HA集群安装的资料,我当时安装也是参考了官方文档和这些资料才安装成功的.由于使用的环境和软件版本可能有所不同,且因工作环境网络所限无法连接外网,加之记录一下自己的安装过程,不枉 ...

  6. CHAPTER 3 Web HA集群部署 - Keepalived

    Web HA集群部署 - Keepalived 1. Keepalived概述 1.1 工作原理 1.2 核心功能 1.3 拓扑图 2. KeepAlived安装方式 2.1 yum源安装 2.2 源 ...

  7. Hadoop HA集群的搭建

    HA 集群搭建的难度主要在于配置文件的编写, 心细,心细,心细! ha模式下,secondary namenode节点不存在... 集群部署节点角色的规划(7节点) ----------------- ...

  8. Hadoop Ha集群配置

    为什么要配置HDFS HA?   首先:HDFS集群中NameNode 如果存在单点故障.对于只有一个NameNode的集群,如果NameNode机器出现意外情况,将导致整个集群无法使用. 而影响HD ...

  9. Hadoop HA集群配置问题记录

    打算用3个节点搭建一个HA 集群,规划如下 HA集群规划   NameNode DataNode JournalNode node1 是 是 是 ndoe2 是 是 是 node3   是 是 hdf ...

  10. (五)Hadoop HA高可用集群的配置-Hadoop HA集群模式的安装

    目录 一.目的及要求: 实验目的: 实验要求: 二.环境要求: 集群规划: 三.具体步骤: 项目一:Hadoop的基本安装配置 项目二:Hadoop高可用完全分布模式配置 项目三:同步安装和配置 项目 ...

最新文章

  1. 【前沿技术】严重事故!实习生删除字节跳动所有轻量级机器学习模型
  2. ios6.x越狱将不会再呈现了
  3. 信息系统项目管理知识--项目沟通管理
  4. Docker 安装创建
  5. iphone视图放大_如何将iPhone用作放大镜
  6. ngingx安装错误 ./configure: error: the HTTP rewrite module requires the PCRE library.
  7. python mss_Python实现的连接mssql数据库操作示例
  8. 【报告分享】2021制造业与人工智能创新应用发展报告.pdf(附下载链接)
  9. 罗马音平假字复制_罗马音大全可复制汉字app下载
  10. ECSHOP 大商创 对接易支付接口
  11. android大作业计算器,2015大作业简易计算器实验报告.doc
  12. 公司网络很慢很卡的原因分析与处理
  13. 知物由学 | Android 模拟点击研究,如何突围“黑灰产”的自动化作弊?
  14. UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte xx in position xx: invalid continuation byte
  15. 37 一次获取redis连接阻塞引起的 Thread pool is EXHAUSTED
  16. Excel高级图表制作①——电池图/KPI完成情况对比图/重合柱形图
  17. html图片动态案例,10个强大的纯CSS3动画案例分享
  18. 图像处理用什么神经网络,神经网络图像处理
  19. 按键精灵连接远程mysql_【按键精灵】按键精灵读取github page 网页,实现脚本远程控制功能...
  20. Linux下磁盘配额设置

热门文章

  1. 一加手机怎么导出照片_批处理整理安卓手机微信导出的视频和照片
  2. 小米Android OS特别高,干翻小米,最强定制安卓系统诞生?Color OS11表现如何
  3. stolz定理考研能用吗_这些高数定理,2021二战考研租房的你千万别记混
  4. 【2019百度之星初赛二1003=HDU6676】度度熊与运算式 1(思维)
  5. Python Poetry管理包安装速度慢的解决办法
  6. 测试电动车速度的软件,应用测试:最高速度达11MB/S
  7. tensorflow--制作数据集tfrecords文件
  8. java实现会员管理系统_美发店会员管理系统助力门店实现智慧化管理!
  9. icem合并面网格_详解Flunet Meshing:高级网格划分工具中的“扫地僧”
  10. 354.俄罗斯套娃信封问题