大数据|Hadoop系统

目录

Hadoop介绍

Hadoop优点

Hadoop的体系结构

HDFS的体系结构

MapReduce的体系结构

HDFS和MapReduce的协同作用

Hadoop与分布式开发

MapReduce计算模型


Hadoop介绍

Hadoop是一个开源的可运行于大规模集群上的分布式并行编程框架,它实现了Map/Reduce计算模型。

狭义上说,Hadoop的核心组件有:

  • HDFS(分布式文件系统):解决海量数据存储
  • MapReduce(分布式运算编程框架):解决海量数据计算大数据|Hadoop系统_第1张图片
  • YARN(作业调度和集群资源管理的框架):解决资源任务调度

Hadoop优点

  • Hadoop是可靠的:因为它假设计算元素和存储会失败,因此它维护多个工作数据副本,确保能够针对失败的节点重新分布处理。
  • Hadoop是高效的:因为它以并行的方式工作,通过并行处理加快处理速度。
  • Hadoop是可伸缩的:它能够处理PB级数据,即有扩容能力。
  • Hadoop成本低:依赖于廉价服务器,因此它的成本比较低,任何人都可以使用。

由于Hadoop优势突出,基于Hadoop的应用已经遍地开花,尤其是互联网领域。

大数据|Hadoop系统_第2张图片

Hadoop的体系结构

大数据|Hadoop系统_第3张图片

  • HDFS是一种分布式文件系统,运行于大型商用机集群,HDFS提供了高可靠性的底层存储支持。
  • HBase位于结构化存储层,是一个分布式的列存储数据库
  • MapReduce是一种分布式数据处理模式和执行环境
  • Zookeeper是一个分布式的,高可用性的协调服务,提供分布式锁之类的基本服务。
  • Hive是一个建立在Hadoop基础上的数据仓库,用于管理存储于HDFS或HBase中的结构化/半结构化数据。
  • Pig提供一种数据流语言,程序员可以将复杂的数据分析任务实现为Pig操作上的数据流脚本,这些脚本可自动转换为MapRduce任务链,在Hadoop上执行,从而简化工作难度。
  • Sqoop是SQL-to-Hadoop的缩写,为在RDBMS与Hadoop平台间进行快速批量数据交换。

HDFS的体系结构

  • 一个HDFS集群是由一个NameNode和若干个DataNode组成。
  • NameNode作为主服务器,管理文件系统的命名空间和客户端对文件的访问操作;
  • 集群中的DataNode管理存储的数据。
  • HDFS支持用户以文件的形式存储数据,文件被分为若干个数据块,而且这若干个数据块存放在一组DataNode上。

大数据|Hadoop系统_第4张图片

 NameNode就是master,它是一个主管,管理者。管理HDFS的命名空间,管理数据块(Block)映射信息,配置副本策略,处理客户端读写请求。

DataNode就是Slave,它是劳累的打工人。NameNode下达命令,DataNode执行实际操作。存储实际的数据块,执行数据块的读写操作,定时向NameNode汇报block信息。

MapReduce的体系结构

  • MapReduce是一种并行编程模式。基于它可以将任务分发到由上千台商用计算机组成的集群上,并以一种高容错的方式并行处理大量的数据集,实现Hadoop的并行任务处理功能
  • MapReduce框架是由一个单独运行在主节点上的JobTracker和运行在每个集群从节点上的TaskTracker共同组成的。
  • 主节点负责调度构成一个作业的所有任务,这些任务分布在不同的从节点上;主节点监控它们的执行情况,并且重新执行之前失败的任务。从节点仅负责由主节点指派的任务。
  • 当一个Job被提交时,JobTracker接受到提交作业和配置信息之后,就会将配置信息等分发给从节点,同时调度任务并监控TaskTracker的执行。

MapReduce编程模型与Hadoop分布式开发息息相关,下文会做详细介绍。

HDFS和MapReduce的协同作用

  • HDFS在集群上实现了分布式文件系统,MapReduce在集群上实现了分布式计算和任务处理
  • HDFS在MapReduce任务处理中提供了文件操作和存储等支持MapReduce在HDFS的基础上实现了任务的分发、跟踪、执行等工作,并收集结果。
  • TaskTracker和DataNode需配对地设置在同一个物理的从节点服务器上;JobTracker和NameNode可以设置在同一个物理主控节点服务器上,也可以分开设置

HDFS和MapReduce共同组成了Hadoop分布式系统体系结构的核心,二者相互作用,完成了Hadoop分布式集群的主要任务。

Hadoop与分布式开发

基于MapReduce的处理过程示例--文档词频统计:WordCount

大数据|Hadoop系统_第5张图片

大数据|Hadoop系统_第6张图片

  • 将大数据集分解为成百上千个小数据集,每个(或若干个)数据集分别由集群中的一个节点进行处理并生成中间结果,然后这些中间结果又由大量的节点合并,形成最终结果。
  • MapReduce框架下并行程序结构中,需要用户完成的工作仅仅是根据任务编写Map和Reduce函数。 

大数据|Hadoop系统_第7张图片

MapReduce计算模型

大数据|Hadoop系统_第8张图片

MapReduce编程模型的原理:利用一个输入的key/value对集合,来产生一个输出的key/value对集合。这个过程基于Map和Reduce这两个用户自定义函数实现。

  • Map阶段:是在单机上进行的针对一小块数据的计算过程,简单来说,就是按照给定的方法进行筛选分类
  • Shuffle阶段:在map阶段的基础上,进行数据移动,为后续的reduce阶段做准备。简单说就是shuffle将同类型的数据进行合并
  • Reduce阶段:对移动后的数据进行处理,依然是在单机上处理一小份数据,举个例子,对Shuffle得到的合并后的数据进行count,得到sum值。

关于Shuffle:

  • shuffle的意思就是洗牌,它是MapReduce的核心,也是被称为奇迹发生的地方。MapReduce玩的就是洗数据,然后让数据出现在该出现的位置。

碎碎念:

  • Shuffle阶段所进行的洗牌,可借助哈希表实现,将对应的数据放到相应的“桶”里,从而实现同类型的合并。
  • MapReduce思想有种“分而治之”的味道。Map负责“分”,Reduce负责“合”。

大数据|Hadoop系统_第9张图片


参考博客:Lansonli【Hadoop专栏】


be happy——

大数据|Hadoop系统_第10张图片 

 

你可能感兴趣的:(大数据管理与分析,大数据,hadoop,hdfs,mapreduce)