Hadoop大数据平台构建与应用教程 课件 项目六 Hadoop高可用集群搭建_第1页
Hadoop大数据平台构建与应用教程 课件 项目六 Hadoop高可用集群搭建_第2页
Hadoop大数据平台构建与应用教程 课件 项目六 Hadoop高可用集群搭建_第3页
Hadoop大数据平台构建与应用教程 课件 项目六 Hadoop高可用集群搭建_第4页
Hadoop大数据平台构建与应用教程 课件 项目六 Hadoop高可用集群搭建_第5页
已阅读5页,还剩87页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目六Hadoop高可用集群搭建CONTENTS目录01

项目导读02

知识目标03

技能目标04

素质(思政)目标CONTENTS目录05

任务一Linux、Java、Zookeeper配置06

任务二HadoopHA配置07

项目总结08

项目考核项目导读01项目导读Hadoop高可用性HA在Hadoop2.0之前,NameNode是HDFS集群中的单点故障(SPOF)。每个集群只有一个NameNode,如果该计算机或进程不可用,则整个集群将不可用,直到NameNode重新启动或在单独的计算机上启动,Yarn也有类似问题。Hadoop高可用性HA(HighAvailability)通常来描述一个系统经过专门的设计,从而减少停工时间,而保持其服务的高度可用性。Hadoop高可用(HighAvailability)分为HDFS高可用和YARN高可用,两者的实现基本类似知识目标02知识目标

了解密钥公钥

了解HA产生的背景

熟悉HA原理

熟悉HDFSHA架构图

熟悉YarnHA架构图技能目标03技能目标

掌握HadoopHA集群规划

掌握JDK安装

掌握SSH免密登录

掌握HadoopHA集群配置

掌握HadoopHA集群启动和关闭素质(思政)目标04素质(思政)目标

培养严谨细致的工匠精神

厚植技术报国梦

培养不骄不躁的工匠心态

培养保密意识

培养网络安全意识任务一Linux、Java、Zookeeper配置05任务工单任务描述

在做Hadoop高可用配置之前,须先做一些铺垫,配置Linux环境、JDK环境、zookeeper环境任务工单:任务准备

01全班学生以4人左右为一组,各组选出组长。请组长组织组员查找相关资料,并组织讨论和汇总

02问题1:Linux的hosts文件有什么作用?如何配置

03问题2:Linux环境变量配置文件在哪?如何配置

04问题3:什么是SSH免密登录

05问题4:Zookeeper有什么作用必备知识技能:一、ZooKeeper在HadoopHA中的作用

ZooKeeper在分布式系统中的应用ZooKeeper能解决大多数分布式系统中的问题,如可以通过创建临时节点来建立心跳监测机制。如果分布式系统的某个服务节点宕机了,则其持有的会话会超时,此时该临时节点会被删除,相应的监听事件就会被触发。分布式系统的每个服务节点还可以将自己的节点状态写入临时节点,从而完成状态报告或节点工作进度汇报。通过数据的订阅和发布功能,ZooKeeper还能对分布式系统进行模块的解耦和任务的调度。通过监听机制,还能对分布式系统的服务节点进行动态上下线,从而实现服务的动态扩容必备知识技能:二、OpenJDK与JDK比较开放性OpenJDK是一个开放源代码的Java开发工具包,由Oracle公司主导并以GPL许可证发布。它的源代码是公开可用的,任何人都可以查看、修改和分发。而JDK(JavaDevelopmentKit)是Oracle公司提供的Java开发工具包,它不是开源的,源代码不公开许可证OpenJDK使用GPL许可证,这意味着使用OpenJDK开发的软件必须遵守GPL的规定,包括将源代码公开并保持开源。而JDK使用OracleBinaryCodeLicense许可证,这意味着使用JDK开发的软件不需要公开源代码,但需要遵守许可证的其他规定OpenJDK与JDK对比除了这些主要区别外,OpenJDK和JDK在功能上基本上是相同的,都提供了Java编译器(javac)、Java虚拟机(JVM)和Java标准库等开发工具和运行时环境。这两个工具包都可以用于开发和运行Java应用程序,只是在许可证和开放性上有所不同必备知识技能:三、HadoopHA存在的背景

HDFSHA解决方案Hadoop2.0之前,在HDFS集群中NameNode存在单点故障(SPOF),对于只有一个NameNode的集群,若NameNode出现故障,则整个集群将无法使用,直到NameNode重启。NameNode主要在以下两个方面影响集群:NameNode机器出现意外,如宕机,集群将无法使用,直到管理员重启。NameNode机器需要升级,包括软件、硬件升级,此时集群也将无法使用。HDFSHA功能通过Active/Standby两个NameNodes实现集群中对NameNode的热备来解决上述问题。如出现故障,此时NameNode很快切换到另外一台机器上任务实施:一、Linux配置步骤1:修改主机名。切换到root,分别在3台虚拟机上执行如下命令hostnamectlset-hostnamemasterhostnamectlset-hostnamehadoop1hostnamectlset-hostnamehadoop2步骤2:修改hosts文件,分别在3台虚拟机上编辑hosts文件,命令为vim/etc/hosts任务实施:一、Linux配置

hosts文件内容为

0master

hadoop1

hadoop2任务实施:二、SSH免密登录配置

三虚拟机互免密登录配置在主机名为master、hadoop1、hadoop2的虚拟机上面配置,实现3台虚拟机之间两两互相免密登录步骤1:所有虚拟机。清空原来的。ssh文件,并给每台机器创建公钥和密钥以及自我免密登录SSHKeyGenerationcd/root;rm-rfhd?.pub;rm-rf.ssh;ssh-keygen-trsaSSHKeySetupcd.ssh;catid_rsa.pub>>authorized_keys;chmod600*步骤2:master上操作。把master的公钥分发给hadoop1和hadoop2scpid_rsa.pubhadoop1:root/hd1.pub任务实施:二、SSH免密登录配置scpid_rsa.pubhadoop2:root/hd1.pub步骤3:hadoop1上操作。把hadoop1的公钥分发给master和hadoop2scpid_rsa.pubmaster:root/hd2.pubscpid_rsa.pubhadoop2:root/hd2.pub步骤4:hadoop2上操作。把hadoop2的公钥分发给master和hadoop1scpid_rsa.pubmaster:root/hd3.pub任务实施:二、SSH免密登录配置

scpid_rsa.pubhadoop1:root/hd3.pub单击此处添加项正文

步骤5master上操作。追加hd2.pub、hd3.pub到master的authorized_keys文件里

cat/root/hd2.pub>authorized_keys单击此处添加项正文

cat/root/hd3.pub>authorized_keys单击此处添加项正文

步骤6hadoop1上操作。追加hd1.pub、hd3.pub到hadoop1的authorized_keys文件里

cat/root/hd1.pub>authorized_keys单击此处添加项正文任务实施:二、SSH免密登录配置

cat/root/hd3.pub>authorized_keys单击此处添加项正文

步骤7hadoop2上操作。追加hd1.pub、hd2.pub到hadoop2的authorized_keys文件里

cat/root/hd1.pub>authorized_keys单击此处添加项正文

cat/root/hd2.pub>authorized_keys单击此处添加项正文

步骤8:验证免密登录成功单击此处添加项正文

master上操作单击此处添加项正文任务实施:二、SSH免密登录配置

sshhadoop1;hostname;exit

sshhadoop2;hostname;exit

hadoop1上操作

sshmaster;hostname;exit

sshhadoop2;hostname;exit任务实施:二、SSH免密登录配置hadoop2上操作sshmaster;hostname;exitsshhadoop2;hostname;exit任务实施:三、JDK配置(3台虚拟机上都做一遍)

配置JDK在LinuxLinux上一般会安装OpenJDK,配置JDK之前先卸载掉OpenJDK,卸载以后再安装相应版本的JDK,并配置环境变量步骤1卸载系统自带的OpenJDK以及相关的java文件。在终端命令窗口键入:java-version可以看到系统自带的OpenJDK版本信息,如图6-1-1步骤2:查看OpenJDK自带Java文件在终端命令窗口键入rpm-qa|grepjava可以看到系统自带的OpenJDKJava相关文件,如图6-1-2任务实施:三、JDK配置(3台虚拟机上都做一遍)

上图文件中,下面这几个可以删除JavaOpenJDK02java-1.8.0-openjdk-headless-02-4.b14.el7.x86_64java-1.7.0-openjdk-11-.el7.x86_64java-1.8.0-openjdk-02-4.b14.el7.x86_64JavaOpenJDK1.7.0Update111java-1.7.0-openjdk-headless-11-.el7.x86_64noarch文件可以不用删除任务实施:三、JDK配置(3台虚拟机上都做一遍)

python-javapackages-3.4.1-11.el7.noarchtzdata-java-2016g-2.el7.noarchjavapackages-tools-3.4.1-11.el7.noarch步骤3:删除OpenJDK自带Java文件,在终端命令窗口键入UninstallJavaOpenJDKrpm-e--nodepsjava-1.7.0-openjdk-11-.el7.x86_64卸载OpenJDK1.8rpm-e--nodepsjava-1.8.0-openjdk-02-4.b14.el7.x86_64任务实施:三、JDK配置(3台虚拟机上都做一遍)

卸载Java1.8rpm-e--nodepsjava-1.8.0-openjdk-headless-02-4.b14.el7.x86_64UninstallJavaOpenJDKrpm-e--nodepsjava-1.7.0-openjdk-headless-11-.el7.x86_64步骤4:检查是否已经删除成功,在命令窗口键入java-version如图6-1-3所示,代表Linux系统自带的OpenJDK已经删除成功了注:如果还没有删除,则用yum-yremove去删除他们任务实施:三、JDK配置(3台虚拟机上都做一遍)

步骤5拷贝JDK,把事先下载好的JDK安装包用拖拽的方式,拷贝进/usr/local/src目录下(安装的JDK版本和IDEA里面的配置一样,因为IDEA自带JDK11)步骤6:解压JDK,把事先下载好的JDK安装包用拖拽的方式,在命令窗口键入tar-zxvfjdk-8u144-linux-x64.tar.gz步骤7:删除JDK压缩包,在命令行键入rm-rfjdk-8u144-linux-x64.tar.gz至此,usr/local/src目录下就有一个JDK的目录任务实施:三、JDK配置(3台虚拟机上都做一遍)

步骤8:配置JDK环境变量,在命令行键入vim/etc/profile粘贴内容至文档末尾进入文本编辑状态下,光标走到文件最后一行,键盘按下字母i,进入插入状态,在文本的最后一行粘贴如下内容#javaenvironmentexportJAVA_HOME=/usr/local/src/jdk1.8.0_221SettingJavaClasspathexportCLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar任务实施:三、JDK配置(3台虚拟机上都做一遍)单击此处添加正文

exportPATH=$PATH:${JAVA_HOME}/bin

步骤9:让刚刚设置的环境变量生效,在命令行键入

source/etc/profile

步骤10:检查java是否配置成功,在命令行键入任务实施:三、JDK配置(3台虚拟机上都做一遍)

命令执行结果如图6-1-4,即为java配置成功任务实施:四、Zookeeper配置

确保3台虚拟机上的Zookeeper安装配置成功,分别在3台虚拟机上启动Zookeeper步骤1:该步骤3台机器上均操作。进入Zookeeper家目录,在命令窗口键入bin/zkServer.shstart;bin/zkServer.shstatusZookeeper启动流程解析Zookeeper在大多数节点存活下才会有效。所以启动第一台的时候,会报错,等三个节点都启动完毕之后,就会正常了。正常启动如图6-1-5任务二HadoopHA配置06任务工单:任务描述

HDFS和Yarn高可用配置目前3台虚拟机上的Linux、JDK、zookeeper环境已经配置好了,现在我们需要实现HDFS和yarn的高可用,HDFSNamenode节点备份,yarn的ResourceManager节点备份任务工单:任务准备01全班学生以4人左右为一组,各组选出组长。请组长组织组员查找相关资料,并组织讨论和汇总02问题1:什么是高可用03问题2:HDFSHA实现有什么思路04问题3:YarnHA实现有什么思路05问题4:如果3台虚拟机里面的1台宕机,Hadoop集群是否能正常提供服务必备知识技能:一、基于QJM的HAHadoopQJMHA方案解析Hadoop2.x之后,Cloudera提出了QJM(QuorumJournalManager)的HA方案。这是一个基于Paxos算法(分布式一致性算法)实现的HDFSHA方案,主要优势如下:不需要配置额外的高性能共享存储,降低了系统复杂度和维护成本。消除SPOF(单点故障),系统鲁棒性(Robust)的程度可配置、可扩展。基本原理:使用2N+1台JournalNode存储EditLog,每次写数据操作有〉=N+1返回成功时即认为该次写成功,保证数据不会丢失高可用方案NN状态说明如图6-2-1,高可用方案中NN有〉=2个,只有一个是Active状态,表示正在对外提供服务的,是活跃的NN,其他的NN是StandBy状态,不对外提供服务的,随时准备替换ActiveNNJournalNode(JN)高效的存储系统,能够实现数据的超快速写入与读取。JN是一个小的文件系统集群,节点数需要是2N+1台。当ActiveNN执行任何命名空间修改时,它会持续地将修改记录到大多数这些JN上。StandByNN实时读取JN内部的数据,实现两个节点的实时元数据同步。JournalNode需要配置hdfs-site.xml里面的node.shared.edits.dir和dfs.journalnode.edits.dir这两个参数。配置示例如下必备知识技能:一、基于QJM的HA

<property>QJournalConfiguration<name>node.shared.edits.dir</name><value>qjournal://:8485;:8485;:8485/mycluster</value></property><property><name>dfs.journalnode.edits.dir</name><value>path/to/journal/node/local/data</value>必备知识技能:一、基于QJM的HA</property>单击此处添加项正文JournalNodes集群同步机制node.shared.edits.dir:JournalNodes地址,由JournalNodes集群提供共享的编辑存储,由ActiveNN写入,由StandbyNN读取,以保持与ActiveNN所做的所有文件系统更改同步JournalNode状态路径配置dfs.journalnode.edits.dir:JournalNode守护进程存储本地状态的路径。JournalNode机器上的绝对路径且只能配置一个路径必备知识技能:二、基于共享NFS的HA

与QJM的区别是使用高性能共享存储HDFS的元数据,但只有ActiveNN才能写,StandbyNN只能读。配置如下远程共享编辑目录设置node.shared.edits.dir:远程共享编辑目录的路径,备用NN使用同一个目录,以保持与ActiveNN所做的所有文件系统更改同步。这个目录应该以r/w的方式挂载在NN机器上,且需要配置为绝对路径<property><name>node.shared.edits.dir</name><value>filemnt/filer1/dfs/ha-name-dir-shared</value></property>必备知识技能:三、HDFSHA自动切换

01HDFSHA自动切换HA自动切换NN,需要增加两个新的组件:ZooKeeper集群和ZKFailoverController进程(简称ZKFC)。集群启动〉=2个NN,每个NN都会有一个ZKFC,每个ZKFC到ZooKeeper上的lock节点下创建临时有序的子节点,节点编号最小的为ActiveNN。其他变为standby的ZKFC会监控lock节点(若节点发生变化,表示Active出现异常)ZKFC的作用是监视和管理NN的状态,管理与ZK的会话,并在activeNN不可用时,启动基于ZK的选举

02ZK集群的作用失败保护——集群中的每个NN机器在ZooKeeper中维护一个持久的会话。如果机器崩溃,ZooKeeper会话将过期,通知其他NN应该触发故障转移NN主动选举——ZooKeeper提供了一种简单的机制,专门选举一个节点为Active。如果当前ActiveNN崩溃,另一个节点可能会在ZooKeeper中获得一个特殊的排他锁,指示它应该成为下一个ActiveNN防脑裂:ZK本身是强一致和高可用的,可以用它来保证同一时刻只有一个活动节点必备知识技能:三、HDFSHA自动切换

ZKFC的作用

健康检测:ZKFC通过向本地NN发送RPC健康检查请求来监控其状态。只要NN以健康状态及时响应,ZKFC就认为该节点是健康的。如果节点已崩溃、冻结或以其他方式进入不正常状态,运行状况监视器将其标记为不正常状态,并触发回调ZKFailoverController进行自动主备切换

ZK会话管理:当本地NN处于健康状态时,ZKFC在ZooKeeper中保持一个会话打开。如果本地NN是Active,它还持有一个特殊的“锁”znode。这个锁使用了ZooKeeper对临时节点的支持;如果会话超时,锁节点将被自动删除

基于ZK的选举:如果本地NN是健康的,并且ZKFC看到当前没有其他节点持有锁znode,它自己将尝试获取锁。如果它成功了,那么它就“赢得了选举”,并负责运行故障转移以使其本地NN处于Active必备知识技能:三、HDFSHA自动切换

3.故障转移过程ActiveNN异常检测当ActiveNameNode(NN)出现异常(如崩溃、假死)时,其本地的ZKFC会通过RPC健康检查(而非简单的ping)检测到问题。健康检查包括监控NN进程状态、磁盘空间、编辑日志完整性等。如果ZKFC检测到NN异常,它会主动释放ZooKeeper上的临时节点(通过删除节点或让ZooKeeper会话过期)。如果ActiveNN直接崩溃,ZKFC进程也可能崩溃,此时ZooKeeper会话超时,临时节点自动消失StandbyZKFC响应节点变化StandbyNN的ZKFC一直监视ZooKeeper上的临时节点。当临时节点消失时,ZKFC会检测到这个变化(即“断开信息”),并开始尝试抢占锁(即创建新的临时节点),通知StandbyNN隔离(Fencing)操作StandbyZKFC根据配置的隔离方法(如SSHfencing)远程登录到原始ActiveNN节点,并强行kill掉NN进程抢占锁和状态转换StandbyZKFC在确保隔离成功后,会在ZooKeeper上抢占临时节点(创建新的临时节点)。如果抢占成功,ZKFC将本地的StandbyNN转换为Active状态。通知StandbyZKFC抢占ZooKeeper上的临时节点,抢占成功,将状态从standby变为active必备知识技能:三、HDFSHA自动切换原始ActiveNN恢复后的行为

当原始ActiveNN恢复后,其ZKFC会重新连接到ZooKeeper,并在选举节点下创建临时有序子节点。如果该节点编号不是最小的,它就不会成为Active,而是作为StandbyNN6-2-2HA自动切换必备知识技能:三、HDFSHA自动切换

触发HDFSNN自动切换的场景如图6-2-2,HA自动切换ActiveNNJVM崩溃:ActiveNN不能及时响应ZKFC的健康检测命令,HealthMonitor会触发状态迁移SERVICE_NOT_RESPONDING,然,ActiveNN上的ZKFC会断开与ZK的连接,StandbyNN上的ZKFC会获得ActiveLock,作,隔离后成为ActiveNNActiveNNJVM冻结:这个是JVM没崩溃,但也无法响应,同崩溃一样,会触发自动切换ActiveNN机器宕机:此时ActiveStandbyElector会失去同ZK的心跳,会话超时,StandbyNN上的ZKFC会通知ZK删除ActiveNN的活动锁,作相应隔离后完成主备切换ActiveNN健康状态异常:此时ealthMonitor会收到一个HealthCheckFailedException,并触发自动切换ActiveZKFC崩溃:虽然ZKFC是一个独立的进程,但因设计简单也容易出问题,一旦ZKFC进程挂掉,虽然此时NN是OK的,但系统也认为需要切换,此时StandbyNN会发一个请求到ActiveNN要求ActiveNN放弃主结点位置,ActiveNN收到请求后,会触发完成自动切换ZooKeeper崩溃:如果ZK崩溃了,主备NN上的ZKFC都会感知断联,此时主备NN会进入一个中立(NeutralMode)模式,同时不改变主备NN的状态,继续发挥作用,只不过此时,如果ANN也故障了,那集群无法发挥Failover,也,就不可用了,所以对于此类场景,ZK一般是不允许太多台崩溃,至少要有N/2+1台保持服务才算是安全的任务实施:一、集群规划

HadoopHA集群架构整个HadoopHA集群由3台虚拟机组成,主机名分别为master、hadoop1、hadoop2。其中NameNode部署在master和hadoop1上面,互为备份,实现HDFS的高可用,ResourceManager部署在hadoop1和hadoop2上面,互为备份,实现Yarn的高可用,如表6-2-1任务实施:二、Hadoop安装(3台虚拟机上均做一遍)单击此处添加正文步骤1把提前下载好的Hadoop安装包“hadoop-2.7.3.tar.gz”拷贝到/usr/local/src目录下注意:如果之前Hadoop安装好了,本步骤可以省略单击此处添加项正文步骤2:解压。在命令窗口键入单击此处添加项正文tar-zxvfhadoop-2.7.3.tar.gz单击此处添加项正文注意:如果之前Hadoop安装好了,本步骤可以省略单击此处添加项正文步骤3:创建目录。在/usr/local/src目录下创建目录ha单击此处添加项正文任务实施:二、Hadoop安装(3台虚拟机上均做一遍)

mkdirha步骤4:拷贝Hadoop目录到ha目录下。在/usr/local/src目录下执行cp-rhadoop-2.7.3.ha步骤5配置环境变量,进入hadoopha主目录,复制绝对路径/usr/local/src/ha/hadoop-2.7.3步骤6:编辑全局变量,在命令行键入vim/etc/profile任务实施:二、Hadoop安装(3台虚拟机上均做一遍)在最后添加以下代码#HadoopenvironmentexportHADOOP_HOME=/usr/local/src/ha/hadoop-2.7.3exportPATH=$PATH:${HADOOP_HOME}/binexportPATH=$PATH:${HADOOP_HOME}/sbin步骤7:让修改后的profile文件生效任务实施:二、Hadoop安装(3台虚拟机上均做一遍)

source/etc/profile

步骤8:测试是否安装成功,在命令行键入

hadoopversion

结果如图6-2-3即安装成功

注意:如果之前Hadoop安装好了,本步骤可以省略任务实施:三、核心文件配置(3台虚拟机上均做一遍)

步骤1Hadoopha配置文件路径为:usr/local/src/ha/hadoop-2.7.3/etc/hadoop,进入该目录cd/usr/local/src/ha/hadoop-2.7.3/etc/hadoop步骤2配置hadoop-env.sh。Linux系统中使用命令“echo$JAVA_HOME”获取JDK的安装路径,修改JAVA_HOME路径exportJAVA_HOME=/usr/local/src/jdk1.8.0_221步骤3配置core-site.xml。使用vim工具编辑core-site.xml文件,在该文件中编写如下配置<configuration>任务实施:三、核心文件配置(3台虚拟机上均做一遍)

<!--把两个NameNode)的地址组装成一个集群mycluster-->

<property>

<name>fs.defaultFS</name>

<value>hdfs://mycluster</value>

</property>

<!--指定hadoop运行时产生文件的存储目录-->任务实施:三、核心文件配置(3台虚拟机上均做一遍)

<property>单击此处添加项正文

<name>hadoop.tmp.dir</name>单击此处添加项正文

tmp目录路径<value>usr/local/src/ha/hadoop-2.7.3/data/tmp</value>

</property>单击此处添加项正文

<property>单击此处添加项正文

<name>ha.zookeeper.quorum</name>单击此处添加项正文任务实施:三、核心文件配置(3台虚拟机上均做一遍)<value>master2181,hadoop1:2181,hadoop2:2181</value></property>单击此处添加项正文</configuration>单击此处添加项正文步骤4配置hdfs-site.xml。使用vim工具编辑hdfs-site.xml文件,在该文件中编写如下配置<configuration>单击此处添加项正文<!--完全分布式集群名称-->单击此处添加项正文任务实施:三、核心文件配置(3台虚拟机上均做一遍)

<property>

<name>services</name>

<value>mycluster</value>

</property>

<!--集群中NameNode节点都有哪些-->

<property>任务实施:三、核心文件配置(3台虚拟机上均做一遍)单击此处添加正文<name>nodes.mycluster</name>单击此处添加项正文<value>nn1,nn2</value>单击此处添加项正文</property>单击此处添加项正文<!--nn1的RPC通信地址-->单击此处添加项正文<property>单击此处添加项正文rpc-address.mycluster.nn1配置<name>node.rpc-address.mycluster.nn1</name>任务实施:三、核心文件配置(3台虚拟机上均做一遍)

01<value>master:9000</value>单击此处添加项正文

02</property>单击此处添加项正文

03<!--nn2的RPC通信地址-->单击此处添加项正文

04<property>单击此处添加项正文

05rpc-address.mycluster.nn2<name>node.rpc-address.mycluster.nn2</name>

06<value>hadoop1:9000</value>单击此处添加项正文任务实施:三、核心文件配置(3台虚拟机上均做一遍)01</property>单击此处添加项正文02<!--nn1的http通信地址-->单击此处添加项正文03<property>单击此处添加项正文04HTTPAddressConfiguration<name>node.http-address.mycluster.nn1</name>05<value>master:50070</value>单击此处添加项正文06</property>单击此处添加项正文任务实施:三、核心文件配置(3台虚拟机上均做一遍)

<!--nn2的http通信地址--><property>node.http-address.mycluster.nn2<name>node.http-address.mycluster.nn2</name><value>hadoop1:50070</value></property><!--指定NameNode元数据在JournalNode上的存放位置-->任务实施:三、核心文件配置(3台虚拟机上均做一遍)

<property><name>node.shared.edits.dir</name><value>qjournal//master:8485;hadoop1:8485;hadoop2:8485/mycluster</value></property><!--配置隔离机制,即同一时刻只能有一台服务器对外响应--><property>任务实施:三、核心文件配置(3台虚拟机上均做一遍)<name>dfs.ha.fencing.methods</name><value>sshfence</value></property><!--使用隔离机制时需要ssh免密登录--><property><name>dfs.ha.fencing.ssh.private-key-files</name>任务实施:三、核心文件配置(3台虚拟机上均做一遍)单击此处添加正文<value>root/ssh/id_rsa</value>单击此处添加项正文</property>单击此处添加项正文<!--声明journalnode服务器存储目录-->单击此处添加项正文<property>单击此处添加项正文<name>dfs.journalnode.edits.dir</name>单击此处添加项正文hadoop-2.7.3datapath<value>usr/local/src/ha/hadoop-2.7.3//data/jn</value>任务实施:三、核心文件配置(3台虚拟机上均做一遍)</property><!--关闭权限检查--><property><name>dfs.permissions.enable</name><value>false</value></property>任务实施:三、核心文件配置(3台虚拟机上均做一遍)

HDFSNameNode切换机制<!--客户端在访问HDFS集群时,如何确定和连接到当前活跃的NameNode,以及在发生故障时如何自动切换到备用NameNode<property>vider.mycluster<name>vider.mycluster</name>ConfiguredFailoverProxyProvider<value>node.ha.ConfiguredFailoverProxyProvider</value></property><property>任务实施:三、核心文件配置(3台虚拟机上均做一遍)

<name>dfs.ha.automatic-failover.enabled</name><value>true</value></property></configuration>步骤5配置yarn-env.sh。Linux系统中使用命令“echo$JAVA_HOME”获取JDK的安装路径,修改JAVA_HOME路径exportJAVA_HOME=/usr/local/src/jdk1.8.0_221任务实施:三、核心文件配置(3台虚拟机上均做一遍)单击此处添加正文步骤6配置yarn-site.xml。使用vim工具编辑yarn-site.xml文件,在该文件中输入如下代码<configuration>单击此处添加项正文<property>单击此处添加项正文<name>yarn.nodemanager.aux-services</name>单击此处添加项正文<value>mapreduce_shuffle</value>单击此处添加项正文</property>单击此处添加项正文任务实施:三、核心文件配置(3台虚拟机上均做一遍)

<!--启用resourcemanagerha-->

<property>

<name>yarn.resourcemanager.ha.enabled</name>

<value>true</value>

</property>

<!--声明两台resourcemanager的地址-->任务实施:三、核心文件配置(3台虚拟机上均做一遍)<property><name>yarn.resourcemanager.cluster-id</name><value>cluster-yarn1</value></property><property><name>yarn.resourcemanager.ha.rm-ids</name>任务实施:三、核心文件配置(3台虚拟机上均做一遍)

<value>rm1,rm2</value>

</property>

<property>

<name>yarn.resourcemanager.hostname.rm1</name>

<value>hadoop1</value>

</property>任务实施:三、核心文件配置(3台虚拟机上均做一遍)<property><name>yarn.resourcemanager.hostname.rm2</name><value>hadoop2</value></property><!--指定zookeeper集群的地址--><property>任务实施:三、核心文件配置(3台虚拟机上均做一遍)单击此处添加正文<name>yarn.resourcemanager.zk-address</name>单击此处添加项正文<value>master2181,hadoop1:2181,hadoop2:2181</value></property>单击此处添加项正文<!--启用自动恢复-->单击此处添加项正文<property>单击此处添加项正文YARNRMRecoveryEnabled<name>yarn.resourcemanager.recovery.enabled</name>任务实施:三、核心文件配置(3台虚拟机上均做一遍)

<value>true</value></property><!--指定resourcemanager的状态信息存储在zookeeper集群--><property>YARNResourceManagerStoreConfiguration<name>yarn.resourcemanager.store.class</name><value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value></property>任务实施:三、核心文件配置(3台虚拟机上均做一遍)

</configuration>步骤7配置mapred-env.sh。Linux系统中使用命令“echo$JAVA_HOME”获取JDK的安装路径,修改JAVA_HOME路径exportJAVA_HOME=/usr/local/src/jdk1.8.0_221步骤8:配置mapred-site.xml。在ha配置文件目录下执行如下命令cpmapred-site.xml.templatemapred-site.xml使用vim工具编辑yarn-site.xml文件,在该文件中编写如下配置任务实施:三、核心文件配置(3台虚拟机上均做一遍)

<!--指定MR运行在Yarn上-->

<property>

<name></name>

<value>yarn</value>

</property>

<!--历史服务器端地址-->任务实施:三、核心文件配置(3台虚拟机上均做一遍)

<property>

<name>mapreduce.jobhistory.address</name>

<value>hadoop1:10020</value>

</property>

<!--历史服务器web端地址-->

<property>任务实施:三、核心文件配置(3台虚拟机上均做一遍)单击此处添加正文

<name>mapreduce.jobhistory.webapp.address</name>

<value>hadoop1:19888</value>

</property>

<property>

<name>yarn.application.classpath</name>任务实施:三、核心文件配置(3台虚拟机上均做一遍)

HadoopClasspathConfiguration%HADOOP_HOME%/share/hadoop/mapreduce/*,%HADOOP_HOME%/share/hadoop/mapreduce/lib/*,%HADOOP_HOME%/share/hadoop/common/*,%HADOOP_HOME%/share/hadoop/common/lib/*,%HADOOP_HOME%/share/hadoop/yarn/*,%HADOOP_HOME%/share/hadoop/yarn/lib/*,%HADOOP_HOME%/share/hadoop/hdfs/*,%HADOOP_HOME%/share/hadoop/hdfs/lib/*</value></property><property><name>yarn.nodemanager.resource.memory-mb</name><value>2048</value>任务实施:三、核心文件配置(3台虚拟机上均做一遍)</property><property><name>yarn.scheduler.minimum-allocation-mb</name><value>2048</value></property><property>任务实施:三、核心文件配置(3台虚拟机上均做一遍)

<name>yarn.nodemanager.resource.cpu-vcores</name>

<value>1</value>

</property>

步骤9:配置slaves文件。使用vim工具编辑slaves文件,在该文件中输入如下代码

master

hadoop1任务实施:三、核心文件配置(3台虚拟机上均做一遍)hadoop2注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行步骤10:删除临时文件和日志文件,文件路径是自己配的/data/tmpcd/src/local/src/ha/hadoop-2.7.3rm–rftmp任务实施:三、核心文件配置(3台虚拟机上均做一遍)

rm–rflogs/*任务实施:四、集群启动

启动HDFS步骤1:在主节点上,输入以下命令启动journalnode服务sbin/hadoop-daemons.shstartjournalnode步骤2:在[nn1]master上,对其进行格式化bin/hdfsnamenode-format注意:格式化之前,一定要先停止上次启动的所有namenode和datanode进程,然后再删除data和log数据步骤3:在[nn1]master上,初始化HA在Zookeeper中状态bin/hdfszkfc-formatZK

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论