hadoop基本概念.pdfVIP

  • 0
  • 0
  • 约9.48千字
  • 约 10页
  • 2017-06-25 发布于河南
  • 举报
hadoop基本概念

hadoop 基本概念 一、hadoop 基本概念 hadoop 包括两个核心组成: HDFS :分布式文件系统,存储海量的数据 MapReduce :并行处理框架,实现任务分解和调度。 整个 HDFS 三个重要角色:NameNode、DataNode 和 Client。NameNode 可以看作是分布式文件系统中的管理者,主要 负责管理文件系统的命名空间、集群配置信息和存储块的复制等。NameNode 会将文件系统的 Meta-data 存储在内存中, 这些信息主要包括了文件信息、每一个文件对应的文件块的信息和每一个文件块在 DataNode 的信息等。DataNode 是文件 存储的基本单元,它将 Block 存储在本地文件系统中,保存了 Block 的 Meta-data ,同时周期性地将所有存在的Block 信息 发送给 NameNode。Client 就是需要获取分布式文件系统文件的应用程序。 MapReduce 是现今一个非常流行的分布式计算框架,它被设计用于并行计算海量数据。第一个提出该技术框架的是 Google 公司,而 Google 的灵感则来自于函数式编程语言,如 LISP ,Scheme ,ML 等。MapReduce 框架的核心步骤主要分两部 分:Map 和 Reduce。当你向 MapReduce 框架提交一个计算作业时,它会首先把计算作业拆分成若干个 Map 任务,然 后分配到不同的节点上去执行,每一个 Map 任务处理输入数据中的一部分,当 Map 任务完成后,它会生成一些中间文件, 这些中间文件将会作为 Reduce 任务的输入数据。Reduce 任务的主要目标就是把前面若干个 Map 的输出汇总到一起并输 出。 二、hadoop 运行机制 关于 hadoop 的运行机制,这里由于笔者还没真正弄透彻,只是知道一个大致的处理思想。下面就贴几张比较形象的图片: HDFS : 文件写入: Client 向 NameNode 发起文件写入的请求。 1 / 10 NameNode 根据文件大小和文件块配置情况,返回给 Client 它所管理部分 DataNode 的信息。 Client 将文件划分为多个 Block ,根据DataNode 的地址信息,按顺序写入到每一个 DataNode 块中。 文件读取: Client 向 NameNode 发起文件读取的请求。 NameNode 返回文件存储的 DataNode 的信息。 Client 读取文件信息。 文件 Block 复制: NameNode 发现部分文件的 Block 不符合最小复制数或者部分 DataNode 失效。 通知 DataNode 相互复制 Block。 DataNode 开始直接相互复制。 MapReduce 工作原理: 一切都是从最上方的 user program 开始的,user program 链接了 MapReduce 库,实现了最基本的 Map 函数和 Reduce 函数。 MapReduce 库先把 user program 的输入文件划分为 M 份(M 为用户定义),每一份通常有 16MB 到 64MB ,如图左方 所示分成了 split0~4(文件块) ;然后使用fork 将用户进程拷贝到集群内其它机器上。 user program 的副本中有一个称为 master ,其余称为worker ,master 是负责调度的,为空闲 worker 分配作业(Map 作 业或 Reduce 作业),worker 数量可由用户指定的。 被分配了 Map 作业的 worker ,开始读取对应文件块的输入数据,Map 作业数量是由 M 决定的,和 split 一一对应;Map 2 / 10 作业(包含多个 map 函数)从输入数据中抽取出键值对,每一个键值对都作为参数传递给 map 函数,map 函数产生的中间键 值对被缓存在内存中。 缓存的中间键值对会被定期写入本地磁盘。主控进程知道 Reduce 的个数,比如 R 个(通常用户指定)。然后主控进程通常 选择一个哈希函数作用于键并产生 0~R-1 个桶编号。Map 任务输出的每个键都被哈希起作用,根据哈希结果将 Map 的结果 存放到 R 个本地文件中的一个(后来每个文件都会指派一个 Reduce 任务)。 master 通知分配了 Reduce 作业的 wo

文档评论(0)

1亿VIP精品文档

相关文档