Hadoop随笔(二)


文章目录

    • @[toc]
  • 2 Hadoop概念
    • 2.1 Hadoop简介
    • 2.2 MapReduce编程模型简介
    • 2.3 Hadoop系统的组成

2 Hadoop概念

面对大数据量的处理需求,一个常用的方法就是把它们分割成互不依赖的小份数据来分别计算处理,这就是所谓的单指令多数据流(SIMD)的数据计算模式。Hadoop为这样的云计算提供了一套开源的计算框架和分布式文件系统。

不过要知道的是,Hadoop架构从1.0到2.0变迁后,原先的1.0它是由HDFS和MapReduce构成,这就导致了MapReduce一个组件要干两个活,既要数据处理,又要资源管理。而后在2.0中,资源管理转交给了YERN。

而在3.0中,总体的架构已经没有发生变化了,而是着重于性能优化上面。比如开始支持GPU运算、多重备份、内部的数据实现、动态地平衡、采用纠删码来存储等。

2.1 Hadoop简介

Hadoop是一个基于Java语言的MapReduce框架。随着Hadoop平台被越来越多的企业采用,Hadoop需要加入对非Java语言的支持。

现在Hadoop已经发展成为包含很多项目的集合。虽然其核心内容是MapReduce和Hadoop分布式文件系统,但与Hadoop相关的Common、Avro、Chukwa、Hive、HBase等项目也是不可或缺的。它们提供了互补性服务或在核心层上提供了更高层的服务。

在下面我们先对它们的这几个小成员做一个简单的介绍吧,为了能够听懂人话,我们采用了一种叙述式讲法:

让我们回到世界转变为数字时代的日子。那时候,生成的数据量非常小,生成缓慢,数据大多数是表格类的数据,也就是我们说的结构化数据,所以存储或处理这类数据并不麻烦。因为单个存储单元和处理器组合就可以完成这项工作。但是随着事件的流逝,互联网席卷了全球,在无时无刻都产生大量多种形式和格式的数据,比如视频、音频还有图像等非结构化或半结构化数据,这些数据我们统称为大数据。看到数据这么大,我们如果想直接处理它们显然是不可能的,而且单个存储单元处理器明显不能做这个事。所以,我们就要推广到多个存储单元和处理器了。这就是我们最开始提到的Hadoop框架的概念。该框架可以更好地处理大数据,其通过多硬件(你可以理解为是多台电脑分别处理数据。)集群来处理。Hadoop由三个专门为处理大数据而设计的组件组成。为了充分利用数据,第一步是存储数据;如果你玩过电脑你就应该知道,在我们查看硬盘上的文件的时候,我们都是通过文件系统来访问电脑的磁盘的。所以对于分布式系统,我们也应该有一个分布式文件系统与之对应,这就是我们要讲的Hadoop分布式文件系统,也叫做HDFS。

image-20220107145621508

假设我们现在有600MB的数据,那么这个数据就会以的形式,分别分成好几个数据块。例如上图一个块分为128MB。最后剩下的88MB单独作为一个块。每个块在不同的计算机上。

image-20220107145825952

如果其中一个块由于外界的原因损坏了,那会发生什么呢?记得我们在数据库笔记中讲过分布式数据库系统吗?分布式数据库系统每个节点不是孤立的,而是相互有联系的,每个节点中存储的数据都是在其他节点有相应的备份的。如果把分布式数据库系统推广到我们刚刚说的这个层面上的话,我们可以发现,即使A块损坏,A块也能根据B块和C块中关于A块数据的记录来做恢复。

成功存储数据后,需要对数据进行处理,其数据处理的正是接下来要讲的Hadoop的第二个组件,MapReduce发挥作用的地方。在传统的集中式系统中,整个数据都是在一台具有单个处理器的机器上处理的。既费时又低效。那怎么办呢?Hadoop中的MapReduce就发挥了此时应有的功能:它将数据分摊给各个节点,每个节点分开处理,处理后的结果在汇总然后输出。这实际上改善了负载平衡并节省了大量时间。

现在我们已经准备好了MapReduce,是时候在Hadoop集群上运行了。其过程是在内存、网络带宽和CPU等资源的帮助下完成的。多个作业在Hadoop上完成,它们都需要硬件资源来成功完成任务。为了有效地管理这些资源,我们使用了Hadoop的第三个组件,我们称之为YARN。YARN由资源管理器、节点管理器、应用管理器和容器组成。如下图:

image-20220107150820671

其中资源管理器分配资源,节点管理器处理节点并监控节点中的资源使用情况,容器包含物理资源的集合。假设我们想要处理创建的MapReduce作业,这时候应用管理器从节点管理器请求容器,容器把资源给了节点管理器。节点管理器获得资源后,将它们发送给资源管理器。这样YARN在Hadoop中就可以处理作业请求并管理集群资源。

以上这些只是说了其中几个组件。实际上,Hadoop生态系统还包括其他几个组件。

image-20220113093333221

比如Hive、pig、spark、FLUME和Scoop等。它们致力于更好地管理大数据,广义上Hadoop指的是围绕Hadoop打造的大数据生态圈。

当然了,说完上面的这些简单易懂的东西,还有一些其余复杂的组件,这里也稍微提一下,看不懂没关系,后面会细讲。

Commom:Common是为Hadoop其他子项目提供支持的常用工具,它主要包括FileSystem、PRC和串行化库,它们为廉价硬件上搭建云计算环境提供基本的服务,并且会为运行在该平台上的软件开发提供所需的API。

  • Avro:Avro是用于数据序列化的系统。它提供了丰富的数据结构类型、快速可压缩的二进制数据格式、存储持久性数据的文件集、远程调用PRC的功能和简单的动态语言集中功能。其中代码生成器几部需要读写文件数据,也不需要使用或实现PRC协议,它只是一个可选的对静态类型语言的实现。
    • Avro系统依赖于模式,数据的读和写是在模式之下完成的。这样可以减少写入数据的开销,提高序列化的速度并缩减其大小;同时,也可以方便动态脚本语言的使用,因为数据连同其模式都是自描述的。
    • 在PRC中,Avro系统的客户端和服务端通过握手协议进行模式的交换,因此当客户端和服务端拥有彼此全部的模式时,不同模式下相同命名字段、丢失字段和附加字段等信息的一致性问题就得到了很好的解决。
  • Hive:Hive最早是由Facebook设计的,是一个建立在Hadoop基础之上的一个数据仓库,它提供了一些用于对Hadoop文件中的数据集进行数据整理、特殊查询和分析存储的工具。Hive提供的是一种结构化数据的机制,它支持类似于传统RDBMS中的SQL语言的查询语言,来帮助那些熟悉SQL的用于查询Hadoop中的数据,该查询语言由于用到SQL的思想,所以该查询语言也叫Hive QL。有了这个工具后,传统的MapReduce变成人员也可以在Mapper或Reducer中通过Hive QL查询数据。Hive编译器会把Hive QL编译成 一组MapReduce任务。
  • HBase:HBase是一个分布式的、面向列的开源数据库,该技术来源于Google论文。HBase在Hadoop之上提供了类似于Bigtable(分布式数据库)的能力。HBase不同于一般的关系数据库,原因有两个:其一,HBase是一个适合于非结构化数据存储的数据库,而我们前面学过数据库的都知道,关系数据库只能存放结构化数据。其二,HBase是基于列而不是基于行的模式。HBase和Bigtable使用相同的数据模型。用户将数据存储在一个表里,一个数据行拥有一个可选择的键和任意数量的列。由于HBase表是疏松的,用户可以为行定义各种不同的列。HBase主要用于随机访问、实时读写的大数据。
  • pig:pig是一个对大型数据集进行分析、评估的平台。pig最突出的优势在于它的结构能够经受住高并行化的检验,这个特效使得它能够处理大型的数据集。
  • ZooKeeper:ZooKeeper是一个为分布式应用所涉及的开源协调服务。它主要为用户提供同步、配置管理、分组、命名等服务,减轻分布式应用程序所承担的协调任务。ZoopKeeper的文件系统使用了我们熟悉的目录树结构。ZooKeeper是使用java编写的,但是它支持java和C两种编程语言。

2.2 MapReduce编程模型简介

Hadoop系统支持MapReduce编程模型。这个模型分为两个步骤:

  • Map:数据初始化读取和转换步骤,在这个步骤中,每个独立的输入数据记录都进行并行处理。
  • Reduce:一个数据整合或者加和的步骤。在这个步骤中,相关联的所有数据记录要放在一个计算节点来处理。

粗略的过程我们在前面已经提到了,但是在这一小节,我们需要补充一些细节。

在学习某些编程语言的时候,我们喜欢用hello world来开始我们的学习,这里我们也用MapReduce中的hello world来进入我们的学习。对于MapReduce来说,最简单的程序莫过于计数程序。其基本逻辑如下。

假如你有海量的文本文档,如果要统计某些单词的出现数量,我们会遵循如下的步骤:

  • 维护一个哈希表,该哈希表的键是文本中的每个词,该键对应的值是该词的个数。
  • 把每篇文档加载到内存
  • 把文档分隔成一个个的词
  • 对于文档中的每个词,更新其在哈希表中的计数
  • 当所有的文档都处理完成,我们就得到了所有单词的计数

这种方案在少量的文本文档似乎可取,但是对于海量的文本文档,其处理的时间过长,我们试着用MapReduce来解决这个计数问题:

  • 有一个多台服务器组成的集群供我们使用。我们假设该集群的计算节点数量为50,
  • 每台服务器上都会运行大量的Map处理,一个合理的假设是多少个文件正在被处理,就有多少个Map处理。当然,这种假设是不严格的。
  • 在给定的时间内,我们有多少个CPU核,就有多少个Map处理同时运行。集群的服务器是8核的CPU,所以8个Mapper可以同时运行。在数据处理的过程中,8个Mapper同时运行处理文件,一个Mapper处理文件需要经过多次迭代。
  • 每个Mapper处理一个文件,抽取文件中的单词,并输出关于单词和出现次数的键值对。如{“THE”:1}
  • 假设只有一个Reducer,Reducer会接受上述格式的键值对,如果一个单词出现多次,就会是这样:如{“THE”:1,1,1,1,1…}。其对出现次数进行相加。如{“THE”:20},在这个过程中,键值对一对一变成一对多的过程被叫做排序/混洗阶段。

我们把上述的过程画成图,即为下图:

image-20220208195111912

这里需要注意的是,Hadoop并不是从NFS来获取所需处理的文件的,因为从网络中读取是很慢的,为此,Hadoop为了让文件尽快地处理,会利用HDFS把输入的文件分摊存储于所有计算节点中。

2.3 Hadoop系统的组成

对于Hadoop的组成,我们在这一小节会从Hadoop的1.x系统开始讲起。对于1.x系统来说,其有以下几个守护进程:

  • 名称结点(NameNode):维护着存储在HDFS上的所有文件的元数据信息。这些元数据信息包括组成文件的数据块信息及这些数据块在数据节点上的位置。
  • 辅助名称结点(Secondary NameNode):它为名称结点组件执行一些内务处理。
  • 数据结点(DataNode):把真正的数据块存放在本地硬盘上,这些数据块组成了保存在HDFS上的每个文件。
  • 作业跟踪器(JobTracker):这是Hadoop系统的主要组件之一,他负责一个任务的整个执行过程:调度各个子任务到各自的计算节点运行,时刻监控任务运行和计算节点的健康状况,对失败的子任务重新调度执行。
  • 任务跟踪器(TaskTracker):运行在各个数据节点上,用来启动和管理各个Map/Reduce任务。其和作业跟踪器相互通信。

在Hadoop1.x集群中有两种类型的节点:主节点从节点。主节点负责名称节点、辅助名称节点、作业跟踪器的进程;而从节点负责数据节点和任务跟踪器的进程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/398835.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HDU 5102 The K-th Distance

题意:给你n-1条边,然后没两个节点的距离按照递增的顺序,求出前k项的和。 官方题解: 把所有边(u,v) 以及(v,u)放入一个队列,队列每弹出一个元素(u,v),对于所有与u相邻的点w,如果w!v,就…

spring AOP 之五:Spring MVC通过AOP切面编程来拦截controller

示例1&#xff1a;通过包路径及类名规则为应用增加切面 该示例是通过拦截所有com.dxz.web.aop包下的以Controller结尾的所有类的所有方法&#xff0c;在方法执行前后打印和记录日志到数据库。 新建一个springboot项目 1&#xff1a;首先定义maven <?xml version"1.0&q…

数据结构杂谈(二)

本文的所有代码均由C编写 如果你已经看完这篇杂谈&#xff0c;可以前往下一篇→数据结构杂谈&#xff08;三&#xff09;_尘鱼好美的小屋-CSDN博客 文章目录2 顺序表2.1 线性表的类型定义2.2 类C语言有关操作补充2.2.1 ElemType的解释2.2.2 数组定义2.2.3 建立链表可能会用到的…

2月份Web服务器份额:排名不变 仅Microsoft份额上扬

IDC评述网&#xff08;idcps.com&#xff09;02月29日报道&#xff1a;近日&#xff0c;Netcraft公布了全球Web服务器最新数据。根据显示&#xff0c;2016年2月&#xff0c;Netcraft收到调查的网站共计933,892,520家&#xff0c;相比上月增加3%。在全球主流Web服务器市场上&…

每日一题——剑指offer18单链表的删除

如果您是第一次看我写的博客&#xff0c;可以给我点个赞并关注我吗&#xff0c;我会持续分享更多有意思的干货。 每日一题系列从今天开始&#xff0c;由于我是个算法小白&#xff0c;所以我会给你看看小白是怎么学的。&#x1f487; 文章目录1 题目2 思路3 代码4 小结1 题目 剑…

王道操作系统考研笔记——1.1.1 操作系统的概念、功能和目标

如果这篇博客对您有用的话&#xff0c;可以给我点个赞吗&#xff0c;这对我很重要&#xff0c;谢谢&#xff01;❤️ 文章目录1.1.1 操作系统的概念、功能和目标1.1.1.1 操作系统的概念1.1.1.2 作为系统资源的管理者1.1.1.3 作为用户和计算机硬件之间的接口1.1.1.4 作为最接近硬…

《从零开始学Swift》学习笔记(Day 8)——小小常量、变量大作用

原创文章&#xff0c;欢迎转载。转载请注明&#xff1a;关东升的博客计算机语言学习中都有常量和变量&#xff0c;他们几乎是我编写代码的灵魂了&#xff0c;离开他们我真的是“活不了”常量是标识符的前面加上关键字let。常量其值在使用过程中不会发生变化的量&#xff0c;下面…

王道操作系统考研笔记——1.1.2 操作系统的特征

如果这篇博客对您有用的话&#xff0c;可以给我点个赞吗&#xff0c;这对我很重要&#xff0c;谢谢&#xff01;❤️ 1.1.2 操作系统的特征 文章目录1.1.2 操作系统的特征1.1.2.1 并发1.1.2.2 共享1.1.2.3 并发和共享的关系1.1.2.4 虚拟1.1.2.5 异步1.1.2.6 小结我们接下来讲的…

linux新起之秀-linux文件属性

2019独角兽企业重金招聘Python工程师标准>>> 从做到右&#xff1a;1为inode 的节点号&#xff1b;2为文件类型及权限&#xff1b;3为文件或目录的硬链接数&#xff1b;4为属主及所归属的组(属主就想象似地主&#xff0c;属组就像奴才的部分)&#xff1b;5为文件或者…

王道操作系统考研笔记——1.1.3 操作系统的发展及分类

如果这篇博客对您有用的话&#xff0c;可以给我点个赞吗&#xff0c;这对我很重要&#xff0c;谢谢&#xff01;❤️ 文章目录1.1.3 操作系统的发展及分类1.1.3.1 手工操作阶段1.1.3.2 单道批处理系统1.1.3.3 多道批处理系统1.1.3.4 分时操作系统1.1.3.5 实时操作系统1.1.3.6 其…

iOS开发之如何将字典转为模型

2019独角兽企业重金招聘Python工程师标准>>> 刚刚学习了如何读取plist&#xff0c;将plist中的字典对象转成数组对象。字典和模型都可以存储数据&#xff0c;既然都可以存储对象&#xff0c;那么为什么要把plist中的字典转成模型呢&#xff1f; 字典 &#xff1a;通…

王道操作系统考研笔记——1.1.4 操作系统的运行机制和体系结构

如果这篇博客对您有用的话&#xff0c;可以给我点个赞吗&#xff0c;这对我很重要&#xff0c;谢谢&#xff01;❤️ 文章目录1.1.4 操作系统的运行机制和体系结构1.1.4.1 两种指令、两种处理器状态、两种程序1.1.4.2 操作系统的内核1.1.4.3 操作系统的体系结构1.1.4.4 小结1.1…

How to remove replication in SyteLine V2

以前曾经写了一篇《How to remove replication in Syteline》http://www.cnblogs.com/insus/archive/2011/12/20/2294831.html 过于简单。 由于SyteLine采用共享License的授技术&#xff0c;如果你从一个正式的数据库复制一个备份&#xff0c;恢复至另外一个站点上&#xff0c…

【Keras】基于SegNet和U-Net的遥感图像语义分割

上两个月参加了个比赛&#xff0c;做的是对遥感高清图像做语义分割&#xff0c;美其名曰“天空之眼”。这两周数据挖掘课期末project我们组选的课题也是遥感图像的语义分割&#xff0c;所以刚好又把前段时间做的成果重新整理和加强了一下&#xff0c;故写了这篇文章&#xff0c…

每日一题——剑指 Offer24反转链表

如果您是第一次看我写的博客&#xff0c;可以给我点个赞并关注我吗&#xff0c;我会持续分享更多有意思的干货。 文章目录1 题目2 思路3 代码4 小结1 题目 剑指 Offer 24. 反转链表 定义一个函数&#xff0c;输入一个链表的头节点&#xff0c;反转该链表并输出反转后链表的头…

手把手教你写专利申请书/怎样申请专利

手把手教你写专利申请书怎样申请专利摘要小前言&#xff08;一&#xff09;申请前的准备工作 1、申请前查询 2、其它方面的考虑 3、申请文件准备&#xff08;二&#xff09;填写专利申请系列文档 1、实际操作步骤 2、详细操作 3、经验分享、注意事项&#xf…

计算机无法更新正在撤销更改,win7系统无法完成更新正在撤销更改的解决办法...

win7系统无法完成更新正在撤销更改的解决办法&#xff1f;如果我们在使用win7更新系统的时候&#xff0c;出现了win7无法完成更新正在撤销更改请不要关闭你的计算机这样的提示&#xff0c;而且不关闭提醒就会一直收到提示。小编觉得可以在win7设置中的更新和安全里面进行高级选…

王道操作系统考研笔记——1.1.6 系统调用

如果这篇博客对您有用的话&#xff0c;可以给我点个赞吗&#xff0c;这对我很重要&#xff0c;谢谢&#xff01;❤️ 文章目录1.1.6 系统调用1.1.6.1 系统调用和作用1.1.6.2 系统调用和库函数1.1.6.3 系统调用背后的过程1.1.6.4 小结1.1.6 系统调用 知识总览 1.1.6.1 系统调用…

计算机设备行业特征,自动装配机在自动化设备行业具有的特点

伴随着社会经济的不断发展&#xff0c;工业生产的市场规模越来越大&#xff0c;人们的需求也越来越大。自动装配机在自动化设备行业具有哪些特点?鲁工自动化小编对自动装配机的特点进行了分析。1.自动装配机需要由多台工作台进行扩展和分级。上层控制器&#xff0c;用来控制二…