【云计算 Hadoop】Hadoop 版本 生态圈 MapReduce模型(一)

简介: 【云计算 Hadoop】Hadoop 版本 生态圈 MapReduce模型(一)

一 Hadoop版本 和 生态圈





1. Hadoop版本





(1) Apache Hadoop版本介绍



Apache的开源项目开发流程 :


-- 主干分支 : 新功能都是在 主干分支(trunk)上开发;


-- 特性独有分支 : 很多新特性稳定性很差, 或者不完善, 在这些分支的独有特定很完善之后, 该分支就会并入主干分支;


-- 候选分支 : 定期从主干分支剥离, 一般候选分支发布, 该分支就会停止更新新功能, 如果候选分支有BUG修复, 就会重新针对该候选分支发布一个新版本;候选分支就是发布的稳定版本;





造成Hadoop版本混乱的原因 :


-- 主要功能在分支版本开发 : 0.20分支发布之后, 主要功能一直在该分支上进行开发, 主干分支并没有合并这个分支, 0.20分支成为了主流;


-- 低版本的后发布 : 0.22版本 发布 要晚于 0.23版本;


-- 版本重命名 : 0.20分支的 0.20.205版本重命名为 1.0版本, 这两个版本是一样的, 只是名字改变了;



Apache Hadoop 版本示意图 :

image.png





.


(2) Apache Hadoop 版本功能介绍



第一代Hadoop特性 :


-- append : 支持文件追加功能, 让用户使用HBase的时候避免数据丢失, 也是使用HBase的前提;


-- raid : 保证数据可靠, 引入校验码校验数据块数目;


-- symlink : 支持HDFS文件链接;


-- security : hadoop安全机制;


-- namenode HA : 为了避免 namenode单点故障情况, HA集群有两台namenode;




第二代Hadoop特性 :


-- HDFS Federation : NameNode制约HDFS扩展, 该功能让多个NameNode分管不同目录, 实现访问隔离和横向扩展;


-- yarn :  MapReduce扩展性 和 多框架方面支持不足, yarn 是全新的资源管理框架, 将JobTracker资源管理 和 作业控制功能分开, ResourceManager负责资源管理, ApplicationMaster负责作业控制;





0.20版本分支 : 只有这个分支是稳定版本, 其它分支都是不稳定版本;


-- 0.20.2版本(稳定版) : 包含所有特性, 经典版;


-- 0.20.203版本(稳定版) : 包含append, 不包含 symlink raid namenodeHA 功能;


-- 0.20.205版本/1.0版本(稳定版) : 包含 append security, 不包含 symlink raid namenodeHA功能;


-- 1.0.1 ~ 1.0.4版本(稳定版) : 修复1.0.0的bug 和 进行一些性能上的改进;




0.21版本分支(不稳定版) : 包含 append raid symlink namenodeHA, 不包含 security ;




0.22版本分支(不稳定版) : 包含 append raid symlink 那么弄得HA, 不包含 mapreduce security;




0.23版本分支 :


-- 0.23.0版本(不稳定版) : 第二代的hadoop, 增加了 HDFS Federation 和 yarn;


-- 0.23.1 ~ 0.23.5 (不稳定版) : 修复 0.23.0 的一些BUG, 以及进行一些优化;


-- 2.0.0-alpha ~ 2.0.2-alpha(不稳定版) : 增加了 namenodeHA 和 Wire-compatiblity 功能;






(3) Cloudera Hadoop对应Apache Hadoop版本


image.png



.




2. Hadoop生态圈



Apache支持 : Hadoop的核心项目都受Apache支持的, 除了Hadoop之外, 还有下面几个项目, 也是Hadoop不可或缺的一部分;


-- HDFS : 分布式文件系统, 用于可靠的存储海量数据;


-- MapReduce : 分布式处理数据模型, 可以运行于大型的商业云计算集群中;


-- Pig : 数据流语言 和 运行环境, 用来检索海量数据集;


-- HBase : 分布式数据库, 按列存储, HBase使用HDFS作为底层存储, 同时支持MapReduce模型的海量计算 和 随机读取;


-- Zookeeper : 提供Hadoop集群的分布式的协调服务, 用于构建分布式应用, 避免应用执行失败带来的不确定性损失;


-- Sqoop : 该工具可以用于 HBase 和 HDFS 之间的数据传输, 提高数据传输效率;


-- Common : 分布式文件系统, 通用IO组件与接口, 包括 序列化, Java RPC, 和持久化数据结构;


-- Avro : 支持高效 跨语言的RPC 及 永久存储数据的序列化系统;






二. MapReduce模型简介





MapReduce简介 : MapReduce 是一种 数据处理 编程模型;


-- 多语言支持 : MapReduce 可以使用各种语言编写, 例如 Java, Ruby, Python, C ++ ;


-- 并行本质 : MapReduce 本质上可以并行运行的;






1. MapReduce 数据模型解析



MapReduce数据模型 :


-- 两个阶段 : MapReduce 的任务可以分为两个阶段, Map阶段 和 Reduce阶段;


-- 输入输出 : 每个阶段都使用键值对作为输入 和 输出, IO类型可以由程序员进行选择;


-- 两个函数 : map 函数 和 reduce 函数;




MapReduce作业组成 : 一个MapReduce 工作单元, 包括 输入数据, MapReduce 程序 和 配置信息;




作业控制 : 作业控制由 JobTracker(一个) 和 TaskTracker(多个) 进行控制的;


-- JobTracker作用 : JobTracker 控制 TaskTracker 上任务的运行, 进行统一调度;


-- TaskTracker作用 : 执行具体的 MapReduce  程序;


-- 统一调度方式 : TaskTracker 运行的同时将运行进度发送给 JobTracker, JobTracker记录所有的TaskTracker;


-- 任务失败处理 : 如果一个 TaskTracker 任务失败, JobTracker 会调度其它 TaskTracker 上重新执行该MapReduce 作业;




2. Map 数据流



输入分片 : MapReduce 程序执行的时候, 输入的数据会被分成等长的数据块, 这些数据块就是分片;


-- 分片对应任务 : 每个分片都对应着一个 Map 任务, 即MapReduce 中的map函数;


-- 并行处理 : 每个分片 执行 Map 任务要比 一次性处理所有数据 时间要短;


-- 负载均衡 : 集群中的计算机 有的 性能好 有的性能差, 按照性能合理的分配 分片 大小, 比 平均分配效率要高, 充分发挥出集群的效率;


-- 合理分片 : 分片越小负载均衡效率越高, 但是管理分片 和 管理map任务 总时间会增加, 需要确定一个合理的 分片大小, 一般默认为 64M, 与块大小相同;




数据本地优化 : map 任务运行在 本地存储数据的 节点上, 才能获得最好的效率;


-- 分片 = 数据块 : 一个分片只在单个节点上存储, 效率最佳;


-- 分片 > 数据块 : 分片 大于 数据块, 那么一个分片的数据就存储在了多个节点上, map 任务所需的数据需要从多个节点传输, 会降低效率;




Map任务输出 : Map 任务执行结束后, 将计算结果写入到 本地硬盘, 不是写入到 HDFS 中;


-- 中间过渡 : Map的结果只是用于中间过渡, 这个中间结果要传给 Reduce 任务执行, reduce 任务的结果才是最终结果, map 中间值 最后会被删除;


-- map任务失败 : 如果 map 任务失败, 会在另一个节点重新运行这个map 任务, 再次计算出中间结果;



相关实践学习
lindorm多模间数据无缝流转
展现了Lindorm多模融合能力——用kafka API写入,无缝流转在各引擎内进行数据存储和计算的实验。
云数据库HBase版使用教程
  相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情: https://cn.aliyun.com/product/hbase   ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
3月前
|
分布式计算 Hadoop 分布式数据库
Hadoop生态系统介绍(二)大数据技术Hadoop入门理论系列之一----hadoop生态圈介绍
Hadoop生态系统介绍(二)大数据技术Hadoop入门理论系列之一----hadoop生态圈介绍
138 2
|
4月前
|
存储 运维 持续交付
探索云计算的不同服务模型:IaaS、PaaS、SaaS
【5月更文挑战第23天】本文探讨了云计算的三大服务模型:IaaS、PaaS和SaaS。IaaS提供基础设施租赁,允许用户按需付费,聚焦业务创新而非设备维护。PaaS在IaaS基础上提供开发、测试和部署环境,简化应用管理,支持弹性扩展。SaaS则为用户提供可通过互联网访问的软件应用,实现多租户共享,提升工作灵活性。这三种模型满足了不同用户从基础设施到软件服务的多元化需求。
|
1月前
|
机器学习/深度学习 监控 API
基于云计算的机器学习模型部署与优化
【8月更文第17天】随着云计算技术的发展,越来越多的数据科学家和工程师开始使用云平台来部署和优化机器学习模型。本文将介绍如何在主要的云计算平台上部署机器学习模型,并讨论模型优化策略,如模型压缩、超参数调优以及分布式训练。
172 2
|
24天前
|
存储 分布式计算 监控
Hadoop在云计算环境下的部署策略
【8月更文第28天】Hadoop是一个开源软件框架,用于分布式存储和处理大规模数据集。随着云计算技术的发展,越来越多的企业开始利用云平台的优势来部署Hadoop集群,以实现更高的可扩展性、可用性和成本效益。本文将探讨如何在公有云、私有云及混合云环境下部署和管理Hadoop集群,并提供具体的部署策略和代码示例。
42 0
|
2月前
|
存储 NoSQL 文件存储
云计算问题之阿里云文件存储CPFS如何满足大模型智算场景的存储需求
云计算问题之阿里云文件存储CPFS如何满足大模型智算场景的存储需求
|
3月前
|
分布式计算 Hadoop Android开发
hadoop-eclipse-plugin(版本hadoop2.7.3)
hadoop-eclipse-plugin(版本hadoop2.7.3)
48 6
hadoop-eclipse-plugin(版本hadoop2.7.3)
|
3月前
|
分布式计算 Hadoop Java
MapReduce编程模型——在idea里面邂逅CDH MapReduce
MapReduce编程模型——在idea里面邂逅CDH MapReduce
53 15
|
3月前
|
分布式计算 资源调度 数据处理
YARN支持哪些非基于MapReduce的计算模型?
【6月更文挑战第19天】YARN支持哪些非基于MapReduce的计算模型?
50 11
|
3月前
|
存储 分布式计算 Hadoop
Hadoop 3.x版本的新特性
【6月更文挑战第18天】
98 2
|
3月前
|
存储 分布式计算 大数据
Hadoop 生态圈中的组件如何协同工作来实现大数据处理的全流程
Hadoop 生态圈中的组件如何协同工作来实现大数据处理的全流程

相关实验场景

更多