热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Hadoop框架详解

阅读目录:Hadoop框架详解Hadoop项目主要包括以下四个模块ApacheHadoop起源一张图了解分布式的好处(数据量达到500G就可以考虑使用大数据处理了)H

 

阅读正文:

回到顶部

Hadoop框架详解


Hadoop项目主要包括以下四个模块

◆ Hadoop Common: 
为其他Hadoop模块提供基础设施 
◆ Hadoop HDFS: 
一个高可靠、高吞吐量的分布式文件系统 
◆ Hadoop MapReduce: 
一个分布式的离线并行计算框架 
◆ Hadoop YARN: 
一个新的MapReduce框架,任务调度与资源管理

Apache Hadoop起源

◆Apache Lucene 
开源的高性能全文检索工具包 
◆Apache Nutch 
开源的Web搜索引擎 
◆Google三大论文 
MapReduce/GFS/BigTable 
◆Apache Hadoop 
大规模数据处理

一张图了解分布式的好处(数据量达到500G就可以考虑使用大数据处理了)

这里写图片描述

回到顶部

HDFS

HDFS即Hadoop Distributed File System分布式文件系统:主要是分布式存储数据)

——————-这里写图片描述

HDFS服务功能

◆NameNode(NN)是主节点,存储文件的元数据如文件名,文件目录结构,文件属性(生成时间,副本数,文件权限),以及每个文件的块列表和块所在DataNode等。 
◆DataNode(DN)在本地文件系统存储文件块数据,以及块数据的校验和。 
◆Secondary NameNode(SNN) 用来监控HDFS状态的辅助后台程序,每隔一段时间获 取HDFS元数据的快照。

NameNode

◆Namenode 是一个中心服务器,单一节点(简化系统的设计和实现),负责管理文件系统的名字空间(namespace)以及客户端对文件的访问。 
◆文件操作,NameNode 负责文件元数据的操作,DataNode负责处理文件内容的读写请求,跟 文件内容相关的数据流不经过NameNode,只会询问它跟那个DataNode联系,否则 NameNode会成为系统的瓶颈。 
◆副本存放在哪些DataNode上由 NameNode来控制,根据全局情况做出块放置决定,读取文件时NameNode尽量让用户先读取最近的副本,降低带块消耗和读取延时;
◆Namenode 全权管理数据块的复制,它周期性地从集群中的每个Datanode接收心跳信号和块状态报告(Blockreport)。接收到心跳信号意味着该Datanode节点工作正常。块状态报告包含了一个该Datanode上所有数据块的列表。

DataNode

◆一个数据块在DataNode以文件存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包括数据块的长度,块数据的校验和,以及时间戳 ;
◆DataNode启动后向NameNode注册,通过后,周期性(1小时)的向NameNode上报所有的块信息;
◆心跳是每3秒一次,心跳返回结果带有NameNode给该DataNode的命令如复制块数据到另一台机器,或删除某个数据块。如果超过10分钟没有收到某个DataNode 的心跳,则认为该节点不可用;
◆集群运行中可以安全加入和退出一些机器。

文件

◆文件切分成块(默认大小128M),以块为单位,每个块有多个副本存储在不同的机器上,副本数可在文件生成时指定(默认3,是在hdfs-site.xml中配置的); 
◆NameNode 是主节点,存储文件的元数据如文件名,文件目录结构,文件属性(生成时间,副本数,文件权限),以及每个文件的块列表以及块所在的DataNode等等; 
◆DataNode 在本地文件系统存储文件块数据,以及块数据的校验和。 
◆可以创建、删除、移动或重命名文件,当文件创建、写入和关闭之后不能修改文件内容。

回到顶部

MapReduce计算框架

(基于磁盘IO进行迭代,开销较大)

◆将计算过程分为两个阶段:Map和Reduce 
Map阶段并行处理输入数据 ;
Reduce阶段对Map结果进行汇总 ;
◆ Shuffle链接Map和Reduce两个阶段(Shuffle通俗的理解就是重新洗牌,打乱原有顺序) 
Map Task将数据写到本地磁盘 ;
Reduce Task从每个Map Task上读取一份数据 ;
◆ 仅适合离线批处理 
具有很好的容错性和扩展性 ;
适合简单的批处理任务 ;
◆ 缺点明显: 
启动开销大,过多使用磁盘导致效率低下等;

map tasks的个数只要是看splitSize,一个文件根据splitSize分成多少份就有多少个map tasks。

该slave节点上有多少个MapTask运行,取决于该slave节点分配到了多少块(一般默认128M);

slave的cpu是几核的会影响MapTask是单线程还是多线程,及其运行效率;

如果它出现问题,挂掉,会将没运行完的块交给其它slave节点重新运算;

 测试一、测试二、测试三、测试四、测试五、测试六、测试小结、

 大数据学习交流群:217770236 让我我们一起学习大数据

【测试中如果遇到没有输出结果,只有输出目录的情况;那么很可能是犯了小错误;比如:Mapper中的输入键值必须是LongWriteable和Text;outKey和outValue的类型不对,或者没有初始化;Driver类中Job任务没提交;还有就是读取的文件中的数据在map中字段没有正确对应;数据中有的字段是脏数据,需要处理;导致匹配不成功,从而输出失败。 】

回到顶部

YARN服务组件

(主要是负责硬件资源的合理调用)

◆ YARN 总体上仍然是Master/Slave 结构,在整个资源管理框架中,ResourceManager 为Master,NodeManager 为Slave。 
◆ ResourceManager 负责对各个NodeManager 上的资源进行统一管理和调度; 
◆ 当用户提交一个应用程序时,需要提供一个用以跟踪和管理这个程序的ApplicationMaster(主管进程),它负责向ResourceManager 申请资源,并要求NodeManger 启动可以占用一定资源的任务。 
◆ 由于不同的ApplicationMaster 被分布到不同的节点上,因此它们之间不会相互影响。

ResourceManager

◆ 全局的资源管理器,整个集群只有一个,负责集群资源的统一管理和调度分配。 
◆ 功能 
- 处理客户端请求 
- 启动/监控ApplicationMaster 
- 监控NodeManager 
- 资源分配与调度

NodeManager

◆ 整个集群有多个,负责单节点资源管理和使用 
◆ 功能:
- 单个节点上的资源管理和任务管理 
- 处理来自ResourceManager的命令 (下文简称RM)
- 处理来自ApplicationMaster的命令 
◆ NodeManager管理抽象容器,这些容器代表着可供一个特定应用程序使用的针对每个节点的资源。 
◆ 定时地向RM汇报本节点上的资源使用情况和各个Container的运行状态

ApplicationManager

管理一个在YARN 内运行的应用程序的每个实例 
◆ 功能

  • 数据切分
  • 为应用程序申请资源,并进一步分配给内部任务
  • 任务监控与容错

◆ 负责协调来自ResourceManager的资源,幵通过NodeManager监视容器的执行和资源使用(CPU、内存等的资源分配)。

Container(容器)

◆ YARN中的资源抽象,封装某个节点上多维度资源,如内存、CPU、磁盘、网络等,当AM向RM申请资源时,RM向AM返回的资源便是用Container表示的。 
◆ YARN 会为每个任务分配一个Container,且该任务只能使用该Container中描述的资源。 
◆ 功能

  • 对任务运行环境的抽象
  • 描述一系列信息
  • 任务启动命令
  • 任务运行环境

 客户端链接yarn集群进行分布式计算(都是通过端口RPC链接运行):
----------------------------------
1、client---->master(申请运行job,链接的是RM进程)
2、master---->client(返回jobId和资源地址:提交的jar文件存放地址,配置信息conf地址,每个副本的spilt分配信息)
3、client---->slave03(根据资源地址链接slave节点,上传资源--job.jar/job.conf/job.spilt)
4、client---->master(反馈上传资源完成)
5、master---->slave03(读取之前上传的资源信息,根据资源信息生成job对象,并将job对象放入job队列--master缓存区(job1,job2....))
------资源分配过程
6、slave01--->master(slave主动链接master去领取自己的job,之间用NodeManage==ResourceManage进程)
7、slave01--->slave03(根据领取的jobId,从资源地址下载job资源信息到本地(尤其是job.jar))
8、slave01--->master(反馈资源下载完成,所有slave都要反馈)
--------master启动MapReduce进程
9、master在slave中寻找负载清闲的节点(例slave02),并在其上启动MRAPPMaster进程,同时slave02上会出现MapReduce进程
10、slave02---->master(申请运行MapReduce进程)
---------master从此开始等待跟踪Task的运行过程
11、master---->slave02(返回Task(一个job有多个Task,一个Task就是一个进程)与地址的映射表--告知哪些节点运行MapTask,哪些运行ReduceTask)
12、slave02--->slave03(链接相应的slave并在其上启动相应的Task)
--------Task进程跑完会将YarnChild进程结束信息反馈给master
13、Task----->master(反馈Task进程(名字叫:YarnChild)运行完毕,所有进程都要反馈)
-------都反馈完毕
14、slave02--->master(反馈job运行完成)
--------master关闭MapReduce进程
15、master--->client(反馈job运行结束--1、环节出错,job运行失败,2、成功运行结束)

YARN资源管理

资源调度和资源隔离是YARN作为一个资源管理系统,最重要和最基础的两个功能。资源调度由ResourceManager完成,而资源隔离由各个NM实现。 
◆ ResourceManager将某个NodeManager上资源分配给任务(这就是所谓的“资源调度”)后,NodeManager需按照要求为任务提供相应的资源,甚至保证这些资源应具有独占性,为任务运行提供基础的保证,这就是所谓的资源隔离。 
◆ 当谈及到资源时,我们通常指内存,CPU和IO三种资源。Hadoop YARN同时支持内存和CPU两种资源的调度。 
◆ 内存资源的多少会会决定任务的生死,如果内存不够,任务可能会运行失败;相比之下,CPU资源则不同,它只会决定任务运行的快慢,不会对生死产生影响。


回到顶部

参考文章:

1、http://blog.csdn.net/mobanchengshuang/article/details/78786652

 




作者:淼淼之森
欢迎任何形式的转载,但请务必注明出处。
如果你觉得本文还可以,那就点击一下推荐,让更多人看到吧!
限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教。


推荐阅读
  • 第二章:Kafka基础入门与核心概念解析
    本章节主要介绍了Kafka的基本概念及其核心特性。Kafka是一种分布式消息发布和订阅系统,以其卓越的性能和高吞吐量而著称。最初,Kafka被设计用于LinkedIn的活动流和运营数据处理,旨在高效地管理和传输大规模的数据流。这些数据主要包括用户活动记录、系统日志和其他实时信息。通过深入解析Kafka的设计原理和应用场景,读者将能够更好地理解其在现代大数据架构中的重要地位。 ... [详细]
  • 2012年9月12日优酷土豆校园招聘笔试题目解析与备考指南
    2012年9月12日,优酷土豆校园招聘笔试题目解析与备考指南。在选择题部分,有一道题目涉及中国人的血型分布情况,具体为A型30%、B型20%、O型40%、AB型10%。若需确保在随机选取的样本中,至少有一人为B型血的概率不低于90%,则需要选取的最少人数是多少?该问题不仅考察了概率统计的基本知识,还要求考生具备一定的逻辑推理能力。 ... [详细]
  • 在开发过程中,我最初也依赖于功能全面但操作繁琐的集成开发环境(IDE),如Borland Delphi 和 Microsoft Visual Studio。然而,随着对高效开发的追求,我逐渐转向了更加轻量级和灵活的工具组合。通过 CLIfe,我构建了一个高度定制化的开发环境,不仅提高了代码编写效率,还简化了项目管理流程。这一配置结合了多种强大的命令行工具和插件,使我在日常开发中能够更加得心应手。 ... [详细]
  • 本文详细介绍了如何在Java Web服务器上部署音视频服务,并提供了完整的验证流程。以AnyChat为例,这是一款跨平台的音视频解决方案,广泛应用于需要实时音视频交互的项目中。通过具体的部署步骤和测试方法,确保了音视频服务的稳定性和可靠性。 ... [详细]
  • Docker入门指南:初探容器化技术
    Docker入门指南:初探容器化技术摘要:Docker 是一个使用 Go 语言开发的开源容器平台,旨在实现应用程序的构建、分发和运行的标准化。通过将应用及其依赖打包成轻量级的容器,Docker 能够确保应用在任何环境中都能一致地运行,从而提高开发和部署的效率。本文将详细介绍 Docker 的基本概念、核心功能以及如何快速上手使用这一强大的容器化工具。 ... [详细]
  • 如何在PHP中准确获取服务器IP地址?
    如何在PHP中准确获取服务器IP地址? ... [详细]
  • 系统转换的三种方法及其具体应用分析
    系统转换是信息技术领域中常见的任务,本文详细探讨了三种主要的系统转换方法及其具体应用场景。这些方法包括:代码迁移、数据迁移和平台迁移。文章通过实例分析了每种方法的优势和局限性,并提供了实际操作中的注意事项和技术要点。例如,代码迁移适用于从VB6获取网页源码,数据迁移在Ubuntu中用于隐藏侧边栏,而平台迁移则涉及Tomcat 6.0的使用和谷歌爬虫的测试。此外,文章还讨论了蓝翰互动PHP面试和5118 SEO工具在系统转换中的应用,为读者提供了全面的技术参考。 ... [详细]
  • 该大学网站采用PHP和MySQL技术,在校内可免费访问某些外部收费资料数据库。为了方便学生校外访问,建议通过学校账号登录实现免费访问。具体方案可包括利用学校服务器作为代理,结合身份验证机制,确保合法用户在校外也能享受免费资源。 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 成都服务器租赁适用于哪些网站业务部署——Vecloud专业解析
    成都,作为四川省的省会,不仅是西南地区唯一的副省级城市,也是国家重要的高新技术产业基地和商贸物流中心。Vecloud专业解析指出,成都服务器租赁服务特别适合各类网站业务的部署,尤其是需要高效、稳定和安全的在线应用。无论是电子商务平台、内容管理系统还是大数据分析,成都的服务器租赁都能提供强大的支持,满足不同企业的需求。 ... [详细]
  • 利用ZFS和Gluster实现分布式存储系统的高效迁移与应用
    本文探讨了在Ubuntu 18.04系统中利用ZFS和Gluster文件系统实现分布式存储系统的高效迁移与应用。通过详细的技术分析和实践案例,展示了这两种文件系统在数据迁移、高可用性和性能优化方面的优势,为分布式存储系统的部署和管理提供了宝贵的参考。 ... [详细]
  • 在当前的软件开发领域,Lua 作为一种轻量级脚本语言,在 .NET 生态系统中的应用逐渐受到关注。本文探讨了 Lua 在 .NET 环境下的集成方法及其面临的挑战,包括性能优化、互操作性和生态支持等方面。尽管存在一定的技术障碍,但通过不断的学习和实践,开发者能够克服这些困难,拓展 Lua 在 .NET 中的应用场景。 ... [详细]
  • Spring框架的核心组件与架构解析 ... [详细]
  • (1)前期知识:1. 单机架构:单一服务器计算机——其处理能力和存储容量有限。2. 集群架构(负载均衡器与多节点服务器)——通过增加节点数量来提升系统性能和可靠性,实现高效的任务分配和资源利用。 ... [详细]
  • 在前文探讨了Spring如何为特定的bean选择合适的通知器后,本文将进一步深入分析Spring AOP框架中代理对象的生成机制。具体而言,我们将详细解析如何通过代理技术将通知器(Advisor)中包含的通知(Advice)应用到目标bean上,以实现切面编程的核心功能。 ... [详细]
author-avatar
手机用户2502854041
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有