`
lc_koven
  • 浏览: 349742 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

todd的hadoop world的ppt笔记

 
阅读更多
todd的ppt是本次hadoop world大会上的亮点。之前知道他让hdfs随机读性能提升了2-3倍。具体他们做了哪些改进呢?这里详细记录一下原理。(都是ppt上翻译过来再加上理解的)


IO cache上的改进:
1 增加了预读,避免大量随机seek,对mapreduce这样的只读一次数据的应用很有效
2 去掉了write在OS层面的cache,因为对map reduce来说这是不必要的
3 脏页数据立即刷新。因为mapreduce会产生大量脏页,为避免OS进行脏页刷新时的block而做的改进
效果:
1 cpu利用率更加平滑 
2 磁盘利用率上升


mapreduce中sort的提升:
1 cache提升:使用指针的前4个字节进行比较,让cpu可以cache更多的内容
2 writableComparator.compareBytes让cpu的利用率不高,换用sun.misc.Unsafe中的类似方法

效果:
1TB排序的速度快了20-30%


mapreduce中调度的改进
1 tt的心跳3秒一次,改成了在小集群中0.3秒一次
2 tt的心跳一次只接收一台机器,改成了一次接收多台机器
3 对小job进行优化,对每个job结束阶段的心跳进行特殊处理,让小job提前分配

效果:
小job的最小延迟缩短一倍,每秒能调度的任务提高10倍


hdfs中cpu的改进:
原先消耗了30%-50%的cpu时间在checksum上
1 将每次对512字节做checksum改为了64k字节
2 crc32的校验算法改为了crc32c算法(该sse指令会快出10倍)

效果:
随机读的响应延迟下降一倍
随机读和顺序读的cpu消耗下降1-1.5倍


hdfs随机读
每次要新建连接,有过多的tcp握手
1 把socket缓存住,类似keepalive
2 重写了BlockReader,消除一些数据拷贝
3 消除了在FSDataset类上的锁争夺

效果:
随机读的吞吐量提长了2.5-3倍
hbase随机读的tps提升了33%


mapreduce2中shuffle的改进:
1 自动修改io.sort.record.percent的值
2 reducer在一个tcp连接上获取多个map的输出值
3 shuffle的server用netty来重写了

效果:shuffle有30%的吞吐量提升


小结:可以看到todd对hadoop的改造非常给力。这在最新的hadoop-0.23中己经放出,hbase的trunk版本己经准备改用hdfs-0.23做为hdfs层了。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics