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原理没有深入去讲,有兴趣去研究一下其他资料。