hadoop实战随笔_0716

可以通过调整hadoop的参数配置来优化shuffle的性能,例如:在一个任务中,完成单位任务使用时间最多的一般都是I/O操作,可以通过合理的配置ip.sort.*属性(具体来说是增加io.sort.mb的值)来减少shuffle过程中缓冲区内容超过阀值后的写出操作。在reduce端,直接在复制map输出的时候将复制的结果放在内存中同样能够提升性能,这样可以让部分数据少做两次I/O操作(前提是留下的内存足够reduce任务执行),所以在reduce函数的内存需求很小的情况下,将mapred.inmem.merge.threshold设置为0,将mapred.job.reduce.input.buffer.percent设置为1.0(或者一个更低的值)能够让I/O操作更少,提升shuffle的性能。


推测式执行:当作业的所有任务都开始执行时,jobtracker会统计所有任务的平均进度,由于某个任务所在的tasktracker节点配置低或者cpu负载过高,导致该节点任务慢于总任务的平均速度,这时jobtracker就会启动一个新的备份任务,当两个任务中快的任务执行完成后,jobtrcker就会kill掉慢的任务。

hadoop默认开启推测式执行。

又优点有缺点。


任务JVM重用:在一个任务结束以后,让后续任务重用此Java虚拟机,这样可以省下新任务启用新JVM的时间。

控制JVM重用的属性是mapred.job.reuse.jvm.num.tasks,这个属性定义了单个JVM上运行任务的数目,-1为运行任务数目不受限制。


跳过坏记录:由于没有考虑到对有些拥有个别格式或字段的数据(坏记录)的特殊处理(代码问题)导致的崩溃,任务的重启是不起作用的,因为重启多少次都会崩溃。这时最好的办法就是遇到坏记录就跳过去(对于庞大数据集,跳过个别数据,对结果影响不大),然后继续处理后面的数据,这就是hadoop中的忽略模式(skipping模式)。当忽略模式开启时,当任务失败两次后,它会将正在处理的记录告诉TaskTracker,然后TaskTracker会重新运行该任务并在运行到先前任务报告的记录地方时直接跳过。忽略模式只能检测并忽略一个错误记录,因此这种机制仅适用于检测个别错误记录。如果增加任务尝试次数最大值(由mapred.map.max.attemps mapred.reduce.max.attemps两个属性决定),可以增加忽略模式能够检测并忽略的错误记录数目。默认情况下忽略模式是关闭的,可以使用SkipBadRedcord类单独为mapreduce任务启用它。



I/O

org.apache.hadoop.io

org.apache.hadoop.io.compress

org.apache.hadoop.io.file.tfile

org.apache.hadoop.io.serializer

org.apache.hadoop.io.serializer.avro


对本地文件I/O的检查

hadoop中,本地文件系统的数据完整性由客户端负责。重点是在存储和读取问价时进行检验和的处理。

具体做法是,每当Hadoop创建文件a时,Hadoop就会同时在同一文件夹下创建隐藏文件.a.crc,这个文件记录了文件a的校验和。针对数据文件的大小,每512个字节Hadoop就会生成一个32位的校验和(4字节),你可以在src/core/core-default.xml中通过修改io.bytes.per.checksum的大小来修改每个校验和所针对的文件大小。


数据压缩:


数据的I/O中序列化操作:序列化是将对象转化为字节流的方法,或者说用字节流描述对象的方法。与序列化相对的是反序列化,反序列化是将字节流转化为对象的方法。

序列化有两个目的:进程间通信,数据持久性存储。


WritableHadoop的核心,Hadoop通过它定义了Hadoop中基本的数据类型及其操作。一般来说,无论是上传下载数据还是运行MapReduce程序,你无时无刻不需要使用Writable类,因此Hadoop中具有庞大的一类Writable类,不过Writable类本身却很简单。


















































  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值