Hadoop简介

ist718-week3

Posted by renjie on February 10, 2020


Hadoop简介

Apache Hadoop includes a storage system called the Hadoop file system (HDFS), and a computing system called MapReduce

Hadoop = HDFS + MapReduce

  • HDFS: (Hadoop file system)使用普通硬件低成本储存
  • MapReduce:处理和生成大数据组

HDFS原理

HDFS基于google的gfs (Google File System),容错性较高

  • Client:切分文件;与NameNode交互,获取文件位置信息;与DataNode交互,读取和写入数据。
  • NameNode:管理HDFS的文件命名空间,处理客户端请求
  • DataNode:存储实际的数据,汇报存储信息给NameNode。

    具体工作流程

YARN: The Data Operating System

YARN (Yet Another Resource Negotiator):Hadoop2.0提出的新资源管理框架。它将JobTracker中的资源管理和作业控制功能分开,分别由组件ResourceManager和ApplicationMaster实现,其中,ResourceManager负责所有应用程序的资源分配,而ApplicationMaster仅负责管理一个应用程序。


MapReduce

no communication between tasks, enhancing fault tolerance and lowering complexity

先map再reduce

  • Map: 把输入变成键值对
  • Reduce: 相同key发送到reduce节点,reduce节点合并相同的key 直到没有相同key可以reduce为止

Map 执行完成之后,中间结果保存在哪里?

Map函数输出的中间结果key/value数据在内存中进行缓存,然后周期性的写入磁盘。每个map函数在写入磁盘之前,通过哈希函数,将自己的key/value对分割成R份。(R是reduce的个数 哈希函数一般是 用key对r进行哈希取模,这样将map函数的中间数据分割成r份,每一份分给一个reduce)。当某个reduce任务的worker接收到master的通知,其通过rpc远程调用 将map任务产生的m份属于自己的文件远程拉取到本地。

例子

计算每月的总订单数

1.Map

2.Reduce

MapReduce特点

  • 很多函数编程
  • 操作不改变数据结构
  • 原始数据不变
  • 程序设计定义数据流
  • 操作顺序不影响结果
  • 易平行化,高容错率,可监视,易抽象

Shuffle:map任务以键值对的形式储存在kvbuffer环形数据结构里,内存有限,当map任务产生的数据过多的时候,就spill刷到磁盘上。根据分区,sort by key排序,合并。

reduce步骤里若是数据缓存区达到一定量,也会进行shuffle刷到磁盘上排序合并

按月计算示例

按州计算示例


小结

以上为ist718第三个lecture中关于hadoop的内容,具体代码以及mapreduce原理没有深入去讲,有兴趣去研究一下其他资料。