Hadoop导航:版本、生态圈及MapReduce模型

2024-01-06 03:32

本文主要是介绍Hadoop导航:版本、生态圈及MapReduce模型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Hadoop版本和生态圈

1. Hadoop版本

(1) Apache Hadoop版本介绍

Apache的开源项目开发流程:

  • 主干分支:新功能都是在主干分支(trunk)上开发。
  • 特性独有分支:很多新特性稳定性很差,或者不完善,在这些分支的独有特定很完善之后,该分支就会并入主干分支。
  • 候选分支:定期从主干分支剥离,一般候选分支发布,该分支就会停止更新新功能,如果候选分支有BUG修复,就会重新针对该候选分支发布一个新版本,候选分支就是发布的稳定版本。

造成Hadoop版本混乱的原因:

  1. 主要功能在分支版本开发:0.20分支发布之后,主要功能一直在该分支上进行开发,主干分支并没有合并这个分支,0.20分支成为了主流。
  2. 低版本的后发布:0.22版本发布要晚于0.23版本。
  3. 版本重命名:0.20分支的0.20.205版本重命名为1.0版本,这两个版本是一样的,只是名字改变了。

Apache Hadoop版本示意图: 

(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版本

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控制TaskTracke上任务的运行,进行统一调度。
  • 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任务,再次计算出中间结果。

3. Reduce数据流

Reduce任务:map任务的数量要远远多于Reduce任务。

  • 无本地化优势:Reduce的任务的输入是Map任务的输出,reduce任务的绝大多数数据本地是没有的。
  • 数据合并:map任务输出的结果,会通过网络传到reduce任务节点上,先进行数据的合并,然后在输入到reduce任务中进行处理。
  • 结果输出:reduce的输出直接输出到HDFS中。
  • reduce数量:reduce数量是特别指定的,在配置文件中指定。

MapReduce数据流框图解析: 

  • 单个MapReduce的数据流: 

  • 多个MapReduce模型: 

 

  • 没有Reduce程序的MapReduce数据流: 

 

Map输出分区:多个reduce任务,每个reduce任务都对应着一些map任务,我们将这些map任务根据其输入reduce任务进行分区,为每个reduce建立一个分区。

  • 分区标识:map结果有许多种类键,相同的键对应的数据传给一个reduce,一个map可能会给多个reduce输出数据。
  • 分区函数:分区函数可以由用户定义,一般情况下使用系统默认的分区函数partitioner,该函数通过哈希函数进行分区。

混洗:map任务和reduce任务之间的数据流成为混。 

  • reduce数据来源:每个reduce任务的输入数据来自多个map
  • map数据去向:每个map任务的结果都输出到多个reduce中 

没有Reduce:当数据可以完全并行处理的时候,就可以不适用reduce,只进行map任务。

4. Combiner 引入

MapReduce瓶颈:带宽限制了MapReduce执行任务的数量,Map和Reduce执行过程中需要进行大量的数据传输。

解决方案:合并函数Combiner,将多个Map任务输出的结果合并,将合并后的结果发送给Reduce作业。

5. HadoopStreaming

Hadoop多语言支持:Java、Python、Ruby、C++

  • 多语言:Hadoop允许使用其它语言写MapReduce函数。 
  • 标准流:因为Hadoop可以使用UNIX标准流作为Hadoop和应用程序之间的接口,因此只要使用标准流,就可以进行MapReduce编程。

Streaming处理文本:Streaming在文本处理模式下,有一个数据行视图,非常适合处理文本。

  • Map函数的输入输出:标准流一行一行的将数据输入到Map函数,Map函数的计算结果写到标准输出流中。
  • Map输出格式:输出的键值对是以制表符分隔的行,以这种形式写出的标准输出流中。
  • Reduce函数的输入输出:输入数据是标准输入流中的通过制表符分隔的键值对行,该输入经过了Hadoop框架排序,计算结果输出到标准输出流中。

6. Hadoop Pipes

Pipes概念:Pipes是MapReduce的C++接口

  • 理解误区:Pipes不是使用标准输入输出流作为Map和Reduce之间的Streaming,也没有使用JNI编程。
  • 工作原理:Pipes使用套接字作为map和reduce函数进程之间的通信。

原文链接: Hadoop 版本 生态圈 MapReduce模型(责编/仲浩) 

这篇关于Hadoop导航:版本、生态圈及MapReduce模型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/575084

相关文章

一份LLM资源清单围观技术大佬的日常;手把手教你在美国搭建「百万卡」AI数据中心;为啥大模型做不好简单的数学计算? | ShowMeAI日报

👀日报&周刊合集 | 🎡ShowMeAI官网 | 🧡 点赞关注评论拜托啦! 1. 为啥大模型做不好简单的数学计算?从大模型高考数学成绩不及格说起 司南评测体系 OpenCompass 选取 7 个大模型 (6 个开源模型+ GPT-4o),组织参与了 2024 年高考「新课标I卷」的语文、数学、英语考试,然后由经验丰富的判卷老师评判得分。 结果如上图所

ONLYOFFICE 8.1 版本桌面编辑器测评

在现代办公环境中,办公软件的重要性不言而喻。从文档处理到电子表格分析,再到演示文稿制作,强大且高效的办公软件工具能够极大提升工作效率。ONLYOFFICE 作为一个功能全面且开源的办公软件套件,一直以来都受到广大用户的关注与喜爱。而其最新发布的 ONLYOFFICE 8.1 版本桌面编辑器,更是带来了诸多改进和新特性。本文将详细评测 ONLYOFFICE 8.1 版本桌面编辑器,探讨其在功能、用户

17.用300行代码手写初体验Spring V1.0版本

1.1.课程目标 1、了解看源码最有效的方式,先猜测后验证,不要一开始就去调试代码。 2、浓缩就是精华,用 300行最简洁的代码 提炼Spring的基本设计思想。 3、掌握Spring框架的基本脉络。 1.2.内容定位 1、 具有1年以上的SpringMVC使用经验。 2、 希望深入了解Spring源码的人群,对 Spring有一个整体的宏观感受。 3、 全程手写实现SpringM

大语言模型(LLMs)能够进行推理和规划吗?

大语言模型(LLMs),基本上是经过强化训练的 n-gram 模型,它们在网络规模的语言语料库(实际上,可以说是我们文明的知识库)上进行了训练,展现出了一种超乎预期的语言行为,引发了我们的广泛关注。从训练和操作的角度来看,LLMs 可以被认为是一种巨大的、非真实的记忆库,相当于为我们所有人提供了一个外部的系统 1(见图 1)。然而,它们表面上的多功能性让许多研究者好奇,这些模型是否也能在通常需要系

js+css二级导航

效果 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Con

人工和AI大语言模型成本对比 ai语音模型

这里既有AI,又有生活大道理,无数渺小的思考填满了一生。 上一专题搭建了一套GMM-HMM系统,来识别连续0123456789的英文语音。 但若不是仅针对数字,而是所有普通词汇,可能达到十几万个词,解码过程将非常复杂,识别结果组合太多,识别结果不会理想。因此只有声学模型是完全不够的,需要引入语言模型来约束识别结果。让“今天天气很好”的概率高于“今天天汽很好”的概率,得到声学模型概率高,又符合表达

Visual Studio中,MSBUild版本问题

假如项目规定了MSBUild版本,那么在安装完Visual Studio后,假如带的MSBUild版本与项目要求的版本不符合要求,那么可以把需要的MSBUild添加到系统中,然后即可使用。步骤如下:            假如项目需要使用V12的MSBUild,而安装的Visual Studio带的MSBUild版本为V14。 ①到MSDN下载V12 MSBUild包,把V12包解压到目录(

智能客服到个人助理,国内AI大模型如何改变我们的生活?

引言 随着人工智能(AI)技术的高速发展,AI大模型越来越多地出现在我们的日常生活和工作中。国内的AI大模型在过去几年里取得了显著的进展,不少独创的技术点和实际应用令人瞩目。 那么,国内的AI大模型有哪些独创的技术点?它们在实际应用中又有哪些出色表现呢?此外,普通人又该如何利用这些大模型提升工作和生活的质量和效率呢?本文将为你一一解析。 一、国内AI大模型的独创技术点 多模态学习 多

OpenCompass:大模型测评工具

大模型相关目录 大模型,包括部署微调prompt/Agent应用开发、知识库增强、数据库增强、知识图谱增强、自然语言处理、多模态等大模型应用开发内容 从0起步,扬帆起航。 大模型应用向开发路径:AI代理工作流大模型应用开发实用开源项目汇总大模型问答项目问答性能评估方法大模型数据侧总结大模型token等基本概念及参数和内存的关系大模型应用开发-华为大模型生态规划从零开始的LLaMA-Factor

模型压缩综述

https://www.cnblogs.com/shixiangwan/p/9015010.html