hadoop高可用.docx

上传人:b****9 文档编号:25725361 上传时间:2023-06-11 格式:DOCX 页数:11 大小:82.92KB
下载 相关 举报
hadoop高可用.docx_第1页
第1页 / 共11页
hadoop高可用.docx_第2页
第2页 / 共11页
hadoop高可用.docx_第3页
第3页 / 共11页
hadoop高可用.docx_第4页
第4页 / 共11页
hadoop高可用.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

hadoop高可用.docx

《hadoop高可用.docx》由会员分享,可在线阅读,更多相关《hadoop高可用.docx(11页珍藏版)》请在冰豆网上搜索。

hadoop高可用.docx

hadoop高可用

课程大纲(HADOOP高可用机制)

HA运作机制

什么是HA

HADOOP如何实现HA

HDFS-HA详解

HA集群搭建

 

目标:

掌握分布式系统中HA机制的思想

掌握HADOOP内置HA的运作机制

掌握HADOOP2.x的HA集群机制配置

 

1Hadoop的HA机制

前言:

正式引入HA机制是从hadoop2.0开始,之前的版本中没有HA机制

1.1HA的运作机制

(1)hadoop-HA集群运作机制介绍

所谓HA,即高可用(7*24小时不中断服务)

实现高可用最关键的是消除单点故障

hadoop-ha严格来说应该分成各个组件的HA机制——HDFS的HA、YARN的HA

(2)HDFS的HA机制详解

通过双namenode消除单点故障

双namenode协调工作的要点:

A、元数据管理方式需要改变:

内存中各自保存一份元数据

Edits日志只能有一份,只有Active状态的namenode节点可以做写操作

两个namenode都可以读取edits

共享的edits放在一个共享存储中管理(qjournal和NFS两个主流实现)

B、需要一个状态管理功能模块

实现了一个zkfailover,常驻在每一个namenode所在的节点

每一个zkfailover负责监控自己所在namenode节点,利用zk进行状态标识

当需要进行状态切换时,由zkfailover来负责切换

切换时需要防止brainsplit现象的发生

1.2HDFS-HA图解:

1.2HA集群的安装部署

1.2.1集群节点规划

集群部署节点角色的规划(10节点):

server01namenodezkfc>start-dfs.sh

server02namenodezkfc

server03resourcemanager>start-yarn.sh

server04resourcemanager

server05datanodenodemanager

server06datanodenodemanager

server07datanodenodemanager

server08journalnodezookeeper

server09journalnodezookeeper

server10journalnodezookeeper

集群部署节点角色的规划(3节点)

server01namenoderesourcemanagerzkfcnodemanagerdatanodezookeeperjournalnode

server02namenoderesourcemanagerzkfcnodemanagerdatanodezookeeperjournalnode

server05datanodenodemanagerzookeeperjournalnode

1.2.2环境准备

1、环境准备

a/linux系统准备

ip地址配置

hostname配置

hosts映射配置

防火墙关闭

init启动级别修改

sudoers加入hadoop用户

ssh免密登陆配置

b/java环境的配置

上传jdk,解压,修改/etc/profile

c/zookeeper集群的部署

 

1.2.3配置文件

core-site.xml

--指定hdfs的nameservice为ns1-->

fs.defaultFS

hdfs:

//ns1/

--指定hadoop临时目录-->

hadoop.tmp.dir

/home/hadoop/app/hadoop-2.4.1/tmp

--指定zookeeper地址-->

ha.zookeeper.quorum

weekend05:

2181,weekend06:

2181,weekend07:

2181

hdfs-site.xml

configuration>

--指定hdfs的nameservice为ns1,需要和core-site.xml中的保持一致-->

dfs.nameservices

ns1

--ns1下面有两个NameNode,分别是nn1,nn2-->

dfs.ha.namenodes.ns1

nn1,nn2

--nn1的RPC通信地址-->

dfs.namenode.rpc-address.ns1.nn1

weekend01:

9000

--nn1的http通信地址-->

dfs.namenode.http-address.ns1.nn1

weekend01:

50070

--nn2的RPC通信地址-->

dfs.namenode.rpc-address.ns1.nn2

weekend02:

9000

--nn2的http通信地址-->

dfs.namenode.http-address.ns1.nn2

weekend02:

50070

--指定NameNode的edits元数据在JournalNode上的存放位置-->

dfs.namenode.shared.edits.dir

qjournal:

//weekend05:

8485;weekend06:

8485;weekend07:

8485/ns1

--指定JournalNode在本地磁盘存放数据的位置-->

dfs.journalnode.edits.dir

/home/hadoop/app/hadoop-2.4.1/journaldata

--开启NameNode失败自动切换-->

dfs.ha.automatic-failover.enabled

true

--配置失败自动切换实现方式-->

dfs.client.failover.proxy.provider.ns1

org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider

--配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行-->

dfs.ha.fencing.methods

sshfence

shell(/bin/true)

--使用sshfence隔离机制时需要ssh免登陆-->

dfs.ha.fencing.ssh.private-key-files

/home/hadoop/.ssh/id_rsa

--配置sshfence隔离机制超时时间-->

dfs.ha.fencing.ssh.connect-timeout

30000

/configuration>

1.2.4集群运维测试

1、Datanode动态上下线

Datanode动态上下线很简单,步骤如下:

a)准备一台服务器,设置好环境

b)部署hadoop的安装包,并同步集群配置

c)联网上线,新datanode会自动加入集群

d)如果是一次增加大批datanode,还应该做集群负载重均衡

 

2、Namenode状态切换管理

使用的命令上hdfshaadmin

可用hdfshaadmin–help查看所有帮助信息

可以看到,状态操作的命令示例:

查看namenode工作状态

hdfshaadmin-getServiceStatenn1

将standby状态namenode切换到active

hdfshaadmin–transitionToActivenn1

将active状态namenode切换到standby

hdfshaadmin–transitionToStandbynn2

 

3、数据块的balance

启动balancer的命令:

start-balancer.sh-threshold8

运行之后,会有Balancer进程出现:

上述命令设置了Threshold为8%,那么执行balancer命令的时候,首先统计所有DataNode的磁盘利用率的均值,然后判断如果某一个DataNode的磁盘利用率超过这个均值Threshold,那么将会把这个DataNode的block转移到磁盘利用率低的DataNode,这对于新节点的加入来说十分有用。

Threshold的值为1到100之间,不显示的进行参数设置的话,默认是10。

1.2.5HA下hdfs-api变化

客户端需要nameservice的配置信息,其他不变

/**

*如果访问的是一个ha机制的集群

*则一定要把core-site.xml和hdfs-site.xml配置文件放在客户端程序的classpath下

*以让客户端能够理解hdfs:

//ns1/中“ns1”是一个ha机制中的namenode对——nameservice

*以及知道ns1下具体的namenode通信地址

*@author

*

*/

publicclassUploadFile{

publicstaticvoidmain(String[]args)throwsException{

Configurationconf=newConfiguration();

conf.set("fs.defaultFS","hdfs:

//ns1/");

FileSystemfs=FileSystem.get(newURI("hdfs:

//ns1/"),conf,"hadoop");

fs.copyFromLocalFile(newPath("g:

/eclipse-jee-luna-SR1-linux-gtk.tar.gz"),newPath("hdfs:

//ns1/"));

fs.close();

}

}

 

Federation下mr程序运行的staging提交目录问题

yarn.app.mapreduce.am.staging-dir

/bi/tmp/hadoop-yarn/staging

Thestagingdirusedwhilesubmittingjobs.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1