我是靠谱客的博主 合适未来,最近开发中收集的这篇文章主要介绍Hadoop高手之路7-Hadoop的新特性Hadoop高手之路7-Hadoop的新特性,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

  • Hadoop高手之路7-Hadoop的新特性
    • 一、Hadoop2.0以上新特性
    • 二、Yarn资源管理框架
      • 1. yarn体系结构
      • 2. yarn的工作流程
    • 三、HDFS的高可用HA
      • 1. HDFS的高可用(HA)架构
      • 2. 搭建Hadoop高可用HA集群
        • 1) 规划集群节点
        • 2) 环境准备
        • 3) 配置HA集群
          • (1) 修改core-site.xml
          • (2) 修改hdfs-site.xml
          • (3) 修改mapred-site.xml
          • (4) 修改yarn-site.xml
          • (5) workers
          • (6) hadoop-env.sh
        • 4) 分发配置文件到ha002和ha003
        • 5) 启动HA集群
          • (1) 启动各节点的zookeeper
          • (2) 启动各节点监控NM的管理日志JournalNode
          • (3) 在ha001上格式化NM,并将格式化后的目录复制到ha002中
          • (4) 在ha001上格式化ZKFC
          • (5) 在ha001上启动HDFS
          • (6) 在node1上启动yarn
      • 3. 测试HA,模拟node1宕机

在这里插入图片描述

Hadoop高手之路7-Hadoop的新特性

一、Hadoop2.0以上新特性

组件hadoop1.0局限和不足hadoop2.0及以上改进
HDFSNameNode存在单点故障引入了高可用HA
MapReduceJobTrackerYarn

二、Yarn资源管理框架

1. yarn体系结构

  • ResourceManager:是一个全局的资源管理器,负责整个yarn集群资源的监控、分配和管理工作

  • NodeManager:是每个节点上的资源和任务管理器

  • ApplicationMaster:负责协调来自RM的资源,把获得的资源分配给内部的各个任务,实现“二次分配”。还通过NM监控容器的执行和资源的使用情况。

2. yarn的工作流程

image-20221205110911728

三、HDFS的高可用HA

1. HDFS的高可用(HA)架构

image-20221205110925521

2. 搭建Hadoop高可用HA集群

1) 规划集群节点

服务器NNDNRMNMJournalManager管理日志ZookeeperZKFC
node1
node2
node3

2) 环境准备

首先搭建Hadoop集群,建议大家重新搭建,巩固前面所学的知识,也可以在原有的基础上,创建快照,如下所示:

image-20221116085935056

image-20221116085943817

3) 配置HA集群

(1) 修改core-site.xml
<configuration>
	<!--用于设置hadoop的文件系统-->
	<property>
		<name>fs.defaultFS</name>
		<value>hdfs://ns1</value>
	</property>
	<!--用于设置hadoop的临时文件目录-->
	<property>
		<name>hadoop.tmp.dir</name>
		<value>/export/data/hadoop/tmp</value>
	</property>
	<!--用于设置ZooKeeper-->
	<property>
		<name>ha.zookeeper.quorum</name>
		<value>ha001:2181,ha002:2181,ha003:2181</value>
	</property>
</configuration>

image-20221116161913148

(2) 修改hdfs-site.xml
<configuration>
	<!--用于设置hadoop的HDFS的副本的数目-->
	<property>
		<name>dfs.replication</name>
		<value>2</value>
	</property>	
	<!--用于设置hadoop的namenode的name数据的目录-->
	<property>
		<name>dfs.namenode.name.dir</name>
		<value>/export/data/hadoop/name</value>
	</property>
	<!--用于设置hadoop的datanode的data数据的目录-->
	<property>
		<name>dfs.datanode.data.dir</name>
		<value>/export/data/hadoop/data</value>
	</property>	
	
	<!--开启webHDFS-->
	<property>
		<name>dfs.webhdfs.enabled</name>
		<value>true</value>
	</property>
	<!--指定nameservice为ns1-->
	<property>
		<name>dfs.nameservices</name>
		<value>ns1</value>
	</property>
	<!--指定ns1下面有两个namenode,nn1和nn2	-->
	<property>
		<name>dfs.ha.namenodes.ns1</name>
		<value>nn1,nn2</value>
	</property>
	<!--指定nn1的rpc地址 -->
	<property>
		<name>dfs.namenode.rpc-address.ns1.nn1</name>
		<value>ha001:9000</value>
	</property>
	<!--指定nn1的http地址 -->
	<property>
		<name>dfs.namenode.http-address.ns1.nn1</name>
		<value>ha001:50070</value>
	</property>
	<!--指定nn2的rpc地址 -->
	<property>
		<name>dfs.namenode.rpc-address.ns1.nn2</name>
		<value>ha002:9000</value>
	</property>
	<!--指定nn2的http地址 -->
	<property>
		<name>dfs.namenode.http-address.ns1.nn2</name>
		<value>ha002:50070</value>
	</property>
	<!--指定nm的元数据在journalnode上的存放位置-->
	<property>
		<name>dfs.namenode.shared.edits.dir</name>
		<value>qjournal://ha001:8485;ha002:8485;ha003:8485/ns1</value>
	</property>
	<!--指定nn2的http地址 -->
	<property>
		<name>dfs.journalnode.edits.dir</name>
		<value>/export/data/hadoop/journaldata</value>
	</property>
	<!--开启namenode失败自动切换 -->
	<property>
		<name>dfs.ha.automatic-failover.enabled</name>
		<value>true</value>
	</property>
	<!--配置namenode失败自动切换的实现方式 -->
	<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隔离的免登录-->
	<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>

image-20221116162422191

image-20221116162522883

image-20221116162541221

(3) 修改mapred-site.xml
<configuration>
	<!--用于设置hadoop的MapReduce的运行框架为yarn-->
	<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
	</property>
	<property>
		<name>yarn.app.mapreduce.am.env</name>
		<value>HADOOP_MAPRED_HOME=/export/servers/hadoop-3.1.4/</value>
	</property>
	<property>
		<name>mapreduce.map.env</name>
		<value>HADOOP_MAPRED_HOME=/export/servers/hadoop-3.1.4/</value>
	</property>
	<property>
		<name>mapreduce.reduce.env</name>
		<value>HADOOP_MAPRED_HOME=/export/servers/hadoop-3.1.4/</value>
	</property>
</configuration>

image-20221116165004357

(4) 修改yarn-site.xml
<configuration>	
	<!--用于设置hadoop的yarn是否需要辅助shuffle-->
	<property>
		<name>yarn.nodemanager.aux-services</name>
		<value>mapreduce_shuffle</value>
	</property>
	<property>
	    <name>yarn.nodemanager.pmem-check-enabled</name>
		<value>false</value>
	</property>
	<property>
	    <name>yarn.nodemanager.vmem-check-enabled</name>
		<value>false</value>
	</property>		
    <!--是否开启RM ha,默认是开启的-->  
    <property>  
       <name>yarn.resourcemanager.ha.enabled</name>  
       <value>true</value>  
    </property>
    <!--声明两台resourcemanager的地址-->
    <property>
       <name>yarn.resourcemanager.cluster-id</name>  
       <value>yrc</value>        
    </property>
    <property>  
       <name>yarn.resourcemanager.ha.rm-ids</name>  
       <value>rm1,rm2</value>  
    </property>
    <property>  
       <name>yarn.resourcemanager.hostname.rm1</name>  
       <value>ha001</value> 
    </property>  
    <property>  
       <name>yarn.resourcemanager.hostname.rm2</name>
       <value>ha002</value>  
    </property>  

    <!--指定zookeeper集群的地址-->   
    <property>  
       <name>yarn.resourcemanager.zk-address</name>
        <value>ha001:2181,ha002:2181,ha003:2181</value>
    </property>  
    <!--启用自动恢复,当任务进行一半,rm坏掉,就要启动自动恢复,默认是false-->
    <property>  
       <name>yarn.resourcemanager.recovery.enabled</name>
       <value>true</value>  
    </property>  

    <!--指定resourcemanager的状态信息存储在zookeeper集群,默认是存放在FileSystem里面。-->
    <property>  
       <name>yarn.resourcemanager.store.class</name>
       <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
    </property> 
</configuration>

image-20221116165249150

image-20221116165307821

(5) workers
ha001
ha002
ha003

image-20221116165356125

(6) hadoop-env.sh

image-20221116165422145

image-20221116165437212

4) 分发配置文件到ha002和ha003

image-20221116173902050

image-20221116173921856

5) 启动HA集群

(1) 启动各节点的zookeeper

image-20221116174234692

image-20221116174253148

image-20221116174312812

(2) 启动各节点监控NM的管理日志JournalNode

image-20221116174521300

image-20221116174540634

image-20221116174557411

(3) 在ha001上格式化NM,并将格式化后的目录复制到ha002中

image-20221116174839867

image-20221116175122213

分发到ha002

image-20221116180408259

(4) 在ha001上格式化ZKFC

image-20221116192249534

(5) 在ha001上启动HDFS

image-20221116180730366

出现错误,修改hadoop-env.sh文件

image-20221116181102156

分发该文件到ha002上

image-20221116181716861

停止hdfs,然后再重新启动hdfs

image-20221116192342118

(6) 在node1上启动yarn

image-20221116192552735

image-20221116192616777

image-20221116192642741

3. 测试HA,模拟node1宕机

image-20221116192945420

image-20221116193042601

image-20221116193144973

kill掉ha001的相关的进程

image-20221116193327649

再查看

image-20221116193404228

image-20221116193459624

最后

以上就是合适未来为你收集整理的Hadoop高手之路7-Hadoop的新特性Hadoop高手之路7-Hadoop的新特性的全部内容,希望文章能够帮你解决Hadoop高手之路7-Hadoop的新特性Hadoop高手之路7-Hadoop的新特性所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部