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

Hadoop的核心组件和生态圈

摘要:Hadoop是一个由Apache基金会所开发的分布式系统基础架构。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数
摘要:Hadoop是一个由Apache基金会所开发的分布式系统基础架构。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算.

1.hadoop核心组件—HDFS

■  HDFS的文件被分成块进行存储,块的默认大小128M,块是文件存储处理的逻辑单元

■  HDFS中有两类节点NameNode和DataNode:

  NameNode是管理节点,存放文件元数据:(1)文件与数据块的映射表(2)数据块与数据节点的映射表。
  DataNode是工作节点,存放数据块
  SecondaryNameNode的职责是合并NameNode的edit logs到fsimage文件中
  NameNode与DataNode有心跳检测,DataNode定期向NameNode发送心跳消息;SecondaryNameNode定期同步元数据映像文件和修改日志。

      客户端从hdfs读取文件时的元数据访问流程,如下图:

     

        客户端向hdfs中上传文件时的元数据访问流程,如下图:

       

          SecondaryNameNode同步元数据映像文件和修改日志,如下图:

      

  上面的这张图片展示了NameNode怎么把元数据保存到磁盘上的。这里有两个不同的文件:

  1.fsimage - 它是在NameNode启动时对整个文件系统的快照
  2.edit logs - 它是在NameNode启动后,对文件系统的改动序列

■  HDFS中数据管理与容错:对于最常见的 3 个复制块,分布在两个机架内的三个节点。第一个复制块存储在同一机架的不同节点上,最后一个复制块存储在不同机架的某个节点上。       

■  HDFS的特点:

  数据冗余,硬件容错
  流式的数据访问(一次写入,多次读取,修改是删除之前块,写新块)
  存储大文件

■  HDFS的适用性和局限性:

  适合数据批量读写,吞吐量高
  不适合交互式应用,低延迟很难满足
  适合一次写入多次读取,顺序读写
  不支持多用户并发写相同文件

■  HDFS实现思想和概念

     

■  HDFS简单使用:

hadoop fs -mkdir filetest #建立filetest文件夹
hadoop fs
-ls #显示HDFS文件列表
hadoop fs
-put hello.java filetest/ #将hello.java文件put到filetest目录下
hadoop fs
-ls /user/hadoop/filetest #显示filetest目录下的文件
hadoop fs
-cat filetest/hello.java #输出filetest目录下hello.java文件内容
hadoop fs
-get filetest/hello.java hello2.java #将filetest目录下的hello.java获取到本地,命名为hello2.java
hadoop fs
-rmr filetest # 删除filetest文件夹

hadoop dfsadmin
-report #打印文件系统的信息

2.hadoop核心组件——MapReduce

■  MapReduce思想:分而治之,一个大任务分成多个小的子任务(map),并行执行后,合并结果(reduce)。Job,一个作业,被拆分成多个Task(MapTask、ReduceTask)

    MapReduce只是分布式运算框架的一种实现,类似的框架还有很多,比如Storm(流式计算)、Spark(内存迭代计算)。MapReduce是离线批量计算,Storm、Spark是实时计算。

■  在hadoop1.x中, MapReduce引擎由JobTrackers和TaskTrackers组成       

     JobTracker承担的任务有:接受任务、计算资源、分配资源、与DataNode进行交流 。
     TaskTracker承担的任务有:从JobTracker接收并执行各种命令:运行任务、提交任务、杀死任务等;另一方面,将本地节点上各个任务的状态通过心跳周期性汇报给   JobTracker,这些信息包括两部分:机器级别信息(节点健康情况、资源使用情况等)、任务级别信息(任务执行进度、任务运行状态等)。
     TaskTracker与JobTracker和Task之间采用了RPC协议进行通信

■  在hadoop2.x中, MapReduce引擎由ResourceManager和NodeManaer组成. 这就是Yarn资源调度框架。 Yarn的基本思想是拆分资源管理的功能,作业调度/监控到单独的守护进程。

    ResourceManager是全局的,负责对于系统中的所有资源有最高的支配权。ResourceManager有两个组件:调度器和应用程序管理器。
    ApplicationMaster 每一个job有一个ApplicationMaster 。AppMaster负责向ResourceManager索要NodeManager执行任务所需要的资源容器,更具体来讲是ApplicationMaster负责从Scheduler申请资源,以及跟踪这些资源的使用情况以及任务进度的监控
    NodeManager是基本的计算框架。NodeManager 是客户端框架负责 containers, 监控他们的资源使用 (cpu, 内存, 磁盘, 网络) 和上报给 ResourceManager/Scheduler.

    为何要使用yarn?我们看到JobTracker的功能被分散到各个进程中包括ResourceManager和NodeManager:比如监控功能,分给了NodeManager,和Application Master。ResourceManager里面又分为了两个组件:调度器及应用程序管理器。Yarn重构后,JobTracker的功能,被分散到了各个进程中。同时由于这些进程可以被单独部署所以这样就大大减轻了单点故障,及压力。如下图,展示了yarn的工作流程及与hadoop1.x的区别:

   

3.hadoop生态圈

■  Hive:数据仓库与hql操作mr

■  pig:数据流语言,是hadoop轻量级封装,相对于它,hive是重量级

■  HBase: 基于列存储的nosql数据库,可以用于海量数据存储和实时查询

■  Sqoop:在数据库和HDFS之间高效传输数据的工具

■  Storm: 分布式实时计算,强调实时性,常用于实时性要求较高的地方

■  Spark:基于map reduce算法实现的分布式计算框架

    拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Job中间输出和结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的map reduce的算法


推荐阅读
  • 从0到1搭建大数据平台
    从0到1搭建大数据平台 ... [详细]
  • 深入解析 Lifecycle 的实现原理
    本文将详细介绍 Android Jetpack 中 Lifecycle 组件的实现原理,帮助开发者更好地理解和使用 Lifecycle,避免常见的内存泄漏问题。 ... [详细]
  • 通过使用CIFAR-10数据集,本文详细介绍了如何快速掌握Mixup数据增强技术,并展示了该方法在图像分类任务中的显著效果。实验结果表明,Mixup能够有效提高模型的泛化能力和分类精度,为图像识别领域的研究提供了有价值的参考。 ... [详细]
  • HBase在金融大数据迁移中的应用与挑战
    随着最后一台设备的下线,标志着超过10PB的HBase数据迁移项目顺利完成。目前,新的集群已在新机房稳定运行超过两个月,监控数据显示,新集群的查询响应时间显著降低,系统稳定性大幅提升。此外,数据消费的波动也变得更加平滑,整体性能得到了显著优化。 ... [详细]
  • PTArchiver工作原理详解与应用分析
    PTArchiver工作原理及其应用分析本文详细解析了PTArchiver的工作机制,探讨了其在数据归档和管理中的应用。PTArchiver通过高效的压缩算法和灵活的存储策略,实现了对大规模数据的高效管理和长期保存。文章还介绍了其在企业级数据备份、历史数据迁移等场景中的实际应用案例,为用户提供了实用的操作建议和技术支持。 ... [详细]
  • 如何将TS文件转换为M3U8直播流:HLS与M3U8格式详解
    在视频传输领域,MP4虽然常见,但在直播场景中直接使用MP4格式存在诸多问题。例如,MP4文件的头部信息(如ftyp、moov)较大,导致初始加载时间较长,影响用户体验。相比之下,HLS(HTTP Live Streaming)协议及其M3U8格式更具优势。HLS通过将视频切分成多个小片段,并生成一个M3U8播放列表文件,实现低延迟和高稳定性。本文详细介绍了如何将TS文件转换为M3U8直播流,包括技术原理和具体操作步骤,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 本文深入探讨了NoSQL数据库的四大主要类型:键值对存储、文档存储、列式存储和图数据库。NoSQL(Not Only SQL)是指一系列非关系型数据库系统,它们不依赖于固定模式的数据存储方式,能够灵活处理大规模、高并发的数据需求。键值对存储适用于简单的数据结构;文档存储支持复杂的数据对象;列式存储优化了大数据量的读写性能;而图数据库则擅长处理复杂的关系网络。每种类型的NoSQL数据库都有其独特的优势和应用场景,本文将详细分析它们的特点及应用实例。 ... [详细]
  • 本文将继续探讨 JavaScript 函数式编程的高级技巧及其实际应用。通过一个具体的寻路算法示例,我们将深入分析如何利用函数式编程的思想解决复杂问题。示例中,节点之间的连线代表路径,连线上的数字表示两点间的距离。我们将详细讲解如何通过递归和高阶函数等技术实现高效的寻路算法。 ... [详细]
  • 如何高效启动大数据应用之旅?
    在前一篇文章中,我探讨了大数据的定义及其与数据挖掘的区别。本文将重点介绍如何高效启动大数据应用项目,涵盖关键步骤和最佳实践,帮助读者快速踏上大数据之旅。 ... [详细]
  • 在前一篇文章《Hadoop》系列之“踽踽独行”(二)中,我们详细探讨了云计算的核心概念。本章将重点转向物联网技术,全面解析其基本原理、应用场景及未来发展前景。通过深入分析物联网的架构和技术栈,我们将揭示其在智能城市、工业自动化和智能家居等领域的广泛应用潜力。此外,还将讨论物联网面临的挑战,如数据安全和隐私保护等问题,并展望其在未来技术融合中的重要角色。 ... [详细]
  • PHP中元素的计量单位是什么? ... [详细]
  • 在Hive中合理配置Map和Reduce任务的数量对于优化不同场景下的性能至关重要。本文探讨了如何控制Hive任务中的Map数量,分析了当输入数据超过128MB时是否会自动拆分,以及Map数量是否越多越好的问题。通过实际案例和实验数据,本文提供了具体的配置建议,帮助用户在不同场景下实现最佳性能。 ... [详细]
  • NoSQL数据库,即非关系型数据库,有时也被称作Not Only SQL,是一种区别于传统关系型数据库的管理系统。这类数据库设计用于处理大规模、高并发的数据存储与查询需求,特别适用于需要快速读写大量非结构化或半结构化数据的应用场景。NoSQL数据库通过牺牲部分一致性来换取更高的可扩展性和性能,支持分布式部署,能够有效应对互联网时代的海量数据挑战。 ... [详细]
  • 如何提升Python处理约1GB数据集时的运行效率?
    如何提升Python处理约1GB数据集时的运行效率?本文探讨了在后端开发中使用Python处理大规模数据集的优化方法。通过分析常见的性能瓶颈,介绍了多种提高数据处理速度的技术,包括使用高效的数据结构、并行计算、内存管理和代码优化策略。此外,文章还提供了在Ubuntu环境下配置和测试这些优化方案的具体步骤,适用于从事推荐系统等领域的开发者。 ... [详细]
  • Phoenix 使用体验分享与深度解析
    闲来无事看了下hbase方面的东西,发现还好理解不过不大习惯于是找到个phoenix感觉不错性能指标如下好像还不错了准备工作:启动hadoop集群启动zookkeeper启动hba ... [详细]
author-avatar
国国国国涛
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有