Hadoop数据本地化
来源:互联网 发布:java笔试选择题及答案 编辑:程序博客网 时间:2024/06/08 14:30
首先需要知道,hadoop数据本地化是指的map任务,reduce任务并不具备数据本地化特征。
通常输入的数据首先将会分片split,每个分片上构建一个map任务,由该任务执行执行用户自定义的map函数,从而处理分片中的每条记录。
那么切片的大小一般是趋向一个HDFS的block块的大小。为什么最佳的分片大小是趋向HDFS块的大小呢?是因为这样能够确保单节点上最大输入块的大小,如果分片跨越两个数据块,没有一个HDFS能够同时存储这两块数据,因此需要通过网络传输将部分数据传输到map任务节点上。这样明显比使用本地数据的map效率更低。
注意,map任务执行后的结果并没有写到HDFS中,而是作为中间结果存储到本地硬盘,那为什么没有存储到HDFS呢?因为,该中间结果会被reduce处理后产生最终结果后,该中间数据会被删除,如果存储到HDFS中,他会进行备份,这样明显没有意义。如果map将中间结果传输到reduce过程中出现了错误,Hadoop会在另一个节点上重新执行map产生中间结果。
那么为什么reduce没有数据本地化的特点呢?对于单个reduce任务来说,他的输入通常是所有mapper经过排序输出,这些输出通过网络传输到reduce节点,数据在reduce节点合并然后由reduce函数进行处理。最终结果输出到HDFS上。当多个有reduce任务的时候,map会针对输出进行分区partition,也就是为每个reduce构建一个分区,分区是由用户指定的partition函数,一般是默认的哈希函数进行分区,效率很高。
同时为了高效传输可以指定combiner函数,他的作用就是,减少网络传输和本地传输
阅读全文
1 0
- Hadoop数据本地化
- 本地化数据
- 沙盒 与数据本地化
- iOS数据本地化
- iOS数据本地化
- 数据本地化级别
- SharedPreferences 数据本地化
- 数据本地化存储
- iOS数据本地化
- 数据的本地化存储
- [cocos2dx_Lua]自定义本地化数据
- Spark的数据本地化
- WinRT开发 数据本地化保存
- Sqlite的数据本地化tips
- UI基础__数据本地化
- 数据本地化存储 如何选择?
- hadoop 如何做到map任务本地化
- Hadoop文件切片与调度本地化
- 9 Best Markdown Editors for Linux
- Celery: Unrecoverable error: AttributeError(“Can't pickle local object 'Pool.__init__.<locals
- Swift3.0 popToViewController 的使用
- CFA- economics
- Oracle角色管理
- Hadoop数据本地化
- 三张图读懂机器学习:基本概念、五大流派与九种常见算法
- awk详解
- 技术分享连载(四十四)
- 712. Minimum ASCII Delete Sum for Two Strings
- session.flush()使用
- ConcurrentMap.putIfAbsent(key,value) 用法讨论
- [RK3288][Android6.0] 调试笔记 --- 交叉编译X264及测试
- 平衡二叉树(AVL树)