当前位置:首页 > 开发 > 编程语言 > 大数据 > 正文

hadoop改进方面的胡思乱想

发表于: 2009-02-04   作者:coderplay   来源:转载   浏览:
摘要: 1. 我做数据挖掘的时候, 经常需要只对key分组,不必排序。目前把sort类给设为null能处理,但还是不尽人意。hadoop的机制是通过一个circle buffer 收集mapper输出的东西, 到了io.sort.mb * percent量的时候,就spill到disk, 而spill前使用排序,默认快排。 之后reduce下载spill的东西, 进行merge, merge的时候使用了堆

1. 我做数据挖掘的时候, 经常需要只对key分组,不必排序。目前把sort类给设为null能处理,但还是不尽人意。hadoop的机制是通过一个circle buffer 收集mapper输出的东西, 到了io.sort.mb * percent量的时候,就spill到disk, 而spill前使用排序,默认快排。 之后reduce下载spill的东西, 进行merge, merge的时候使用了堆排。我的想法是通过一个hash,每个hash的元素是一个链表,存放相同key的所有值。不过这样就没circle buffer了,用不到其对stream缓存的优点,这个要仔细想想。

2. map之后要么直接写到hdfs(reducer 个数为0时), 要么同一道作业指定的reducer去处理这些东西. 这个机制很不灵活。有时候我的mapper输出,让不同的reducer处理不同的任务,输出不同的结果。 目前hadoop虽然能处理,但太牵强了。如果mapper处理完之后,加一层转发机制。这时候可以少一次io, 而且灵活,  NB. 如果能把数据像流一样处理,而且可以分流,汇集之类的,那更好。

3. 还是百度提出的老问题, 机器一般挂多块磁盘。 单块磁盘的故障会导致系统认为整个节点down了, 这个修改相应的代码应该可以实现。slave报告的时候准确一点, 就可以只复制坏了的磁盘的数据了。

4. hadoop的任务跟踪能力太弱了,如果能做到和erlang那么NB,就厉害了

5. mapper的个数实际上是根据block数来定的, 线程太多, 消耗太大。

hadoop改进方面的胡思乱想

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

我来说两句
评论内容:
验  证  码:
 
(网友评论仅供其表达个人看法,并不表明本站同意其观点或证实其描述。)
评论列表
已有 0 条评论(查看更多评论)
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号