hadoop第一章绪论

1.hadoop的组成部分

主要的两个子项目分别为HDFS(分布式文件系统)和MapReduce,最好将他们视为一堆独立而又互补的技术。

HDFS是一个可以存储大数据集的文件系统,它是通过向外扩展的方式(不断提升机器的数量以量取胜)构建的主机群。他有着独特的设计和性能特点,特别是,HDFS以时延为代价对吞吐量进行了优化,并且通过副本替换冗余达到了高可靠性。

MapReduce是一个数据处理范式,他规范了数据在两个处理阶段(被称为Map和Reduce)的输入和输出,并将其应用于任意规模的大数据集。MapReduce与HDFS紧密结合,确保在任何情况下,MapReduce任务直接在存储所需数据的HDFS节点上运行。

公共构建模块

Hdfs和MapReduce体系描述原则

1.都是面向廉价服务器集群设计

2.都是通过增加更多的服务器来实现系统扩展(向外扩展)

3.都包含了故障处理机制

4.都透明的提供了许多服务,从而使用户可以更专注于手头的问题

5.都采用了同样的架构,其中驻留在物理服务器上的软件集权控制着系统运行的各个方面

HDFS

他是一个分布式文件系统,这意味着他在众多节点上扩大了存储;

主要特点

1.HDFS通常以最小64MB的数块存储文件,这比之前多数文件系统中的4KB~32KB分块大得多

2.HDFS在时延的基础上对吞吐量进行了优化,它能够高效的处理对大文件的读请求流,但不擅长对众多小文件的定位请求。

3.HDFS对普遍的一次写入多次读取的工作负载进行了优化

4.每个存储节点上运行着一个称为DataNode的进程,他管理着相应主机上的所有数据块。这些节点都由一个称为NameNode的主进程来协调,该进程运行于一台独立主机上。

5.与磁盘阵列中设置物理冗余来处理磁盘故障或类似策略不同,HDFS使用副本来处理故障。每个由文件组成的数据块存储在集群中的多个节点,HDFS的NameNode不断地监视各个DataNode发来的报告,以确保发生故障时,任意数据块的副本数量都大于用户配置的复制因子。否则,NameNode会在集群中调度新增一个副本。

MapReduce

适用于每个数据元素的数据操作的描述方法。map和reduce函数的概念直接来自于函数式编程语言。在函数式编程语言中,map和reduce函数被用于对输入数据列表进行操作。

另一个关键的基本概念是“分而治之”。这个概念的基本原则是,将单个我呢提分解成多个独立的子任务。如果多个子任务能够并行执行,这种方法更为强大。在理想情况下,一个需要运行1000分钟的任务可以通过分解成1000个并行的子任务,在1分钟内即可完成。

MapReduce是一个基于上述原理的处理范式,它实现了从源数据集到结果数据集的一系列转换。在最简单的情况下,作业的输入数据作为map函数的输入,所得到的临时数据作为reduce函数的输入。开发人员只需定义数据转换形式,Hadoop的MapReduce作业负责并行地对集群中的数据实施所需转换。虽然基本的想法可能并无太大新意,但Hadoop的一个主要优势在于它如何将这些想法变成一个精心设计的可用平台。
传统的关系型数据库适用于符合定义模式的结构化数据。与之不同,MapReduce和Hadoop在半结构化或非结构化数据上表现最好。与符合刚性模式的数据不同,MapReduce和Hadoop仅要求将数据以一系列键值对的形式提供给map函数。map函数的输出是其他键值对的集合,reduce函数收集汇总最终的结果数据集。

Hadoop为map和reduce函数提供了一个标准规范(即接口)上述规范的具体实现通常被称为mapper和reducer。一个典型的MapReduce作业包括多个mapper和reducer,通常这些mapper和reducer并不是很简单。开发人员将精力集中于表达从数据源到结果数据集的转化关系上,而Hadoop框架会管理任务执行的各个方面:并行处理,协调配合,等等。
最后一点可能是Hadoop最重要的一个方面。Hadoop平台负责执行数据处理的各个方面。在用户定义了任务的关键指标后,其余事情都变成了系统的责任。更重要的是,从数据规模的角度来看,同一个MapReduce作业适用于存储在任意规模集群上的任意大小的数据集。如果要处理的是单台主机上的1 GB数据,Hadoop会相应地安排处理过程。即便要处理的是托管在超过1000台机器上的1PB数据,Hadoop依然同样工作。它会确定如何最高效地利用所有主机进行工作。从用户的角度来看,实际数据和集群的规模是透明的,除了处理作业所花费的时间受影响外,它们不会改变用户与Hadoop的交互方式。

组合效果更佳

当执行MapReduce作业时,Hadoop需要决定在哪台主机执行代码才能最高效地处理数据集如果MapReduce集群中的所有主机从单个存储主机或存储阵列获取数据,在很大程度上,在哪台主机执行代码并不重要,因为存储系统是一个会引发竞争的共享系统。但如果使用HDFS作为存诸系统,基于移动数据处理程序比迁移数据本身成本更低的原则,MapReduce可以在目标数据的存储节点上执行数据处理过程。
最常见的Hadoop部署模型是将HDFS和MapReduce集群部署在同一组服务器上。其中每台服务器不仅承载了待处理数据及管理这些数据的HDFS组件,同时也承载了调度和执行数据处理过程的MapReduce组件。当Hadoop接收到作业后,它尽可能对驻留在主机上的数据调度进行优化达到网络流量最小化和性能最大化的目标。
回想一下以前的例子,如何对分布在1000台服务器上的1 PB数据执行4个步骤的处理任务。MapReduce模型(以一种稍微简化和理想化的方式)对HDFS中每台主机上的每块数据执行map函数定义的处理操作,随后在reduce函数中,复用集群以收集各个主机的结果并转化为最终的结果集。
Hadoop的部分挑战在于,如何将单个问题分解成map函数和reduce函数的最佳组合。前述方法只适用于4阶段处理链可独立应用于每个数据元素的情况。在后续章节将会看到,有时要使用多个MapReduce作业,其中某个作业的输出将作为下一个作业的输入。

公共架构

HDFS和MapReduce软件集群有着下列共同的特点

1.采用了相同的体系结构,用专门的主节点对工作集群进行管理

2.每种情景的主节点(HDFS的主节点是NameNode,MapReduce的主节点是JobTracker)监视集群的运行状况并处理故障,处理方式包括移走数据块或者重新调度失败的作业。

3.每种情景的主节点(HDFS的进程是DataNode,MapReduce的进程是TaskTrack)负责在物理主机上执行任务,包括从NameNode或者JobTracker接受指令和向其报告健康状态和运行状况

主机或服务器通常指的是承载各种Hadoop组建的物理硬件。节点指的是作为集群组成部分的软件部件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值