Hadoop

小文件问题

  1. 在大数据开发环境中,虽然实际处理的文件大部分都是大文件,但是依然无法避免产生小文件
  2. 一般而言,如果文件大小≤Block*0.8,那么此时就认为这是一个小文件。实际过程中,一般认为
    不超过100M的文件就是小文件
  3. 小文件在分布式环境下的问题
    1. 存储:在HDFS中,每一个小文件对应一条元数据,如果存储大量的小文件,那么会产生大量
      的元数据,此时会导致占用较多的内存,同时导致元数据的读写效率降低
      2. 计算:在MapReduce中,每一个小文件对应一个切片,每一个切片对应一个MapTask。如果
      需要对大量的小文件进行处理,那么就意味着需要产生大量的MapTask,导致集群的资源被
      同时大量的占用和释放
  4. 目前对小文件的处理方案无非两种:合并(merge)和打包
  5. MapReduce提供了一种原生的打包方案: Hadoop Archive ,将多个小文件打成一个 .har 包
# 将/txt/打成txt.har包,放到/result下
hadoop archive -archiveName txt.har -p /txt /result

数据倾斜

  1. 在集群中,因为处理的数据量不均等导致任务执行时间不一致而产生的等待,称之为数据倾斜
  2. 数据倾斜可能发生在Map端,也可能会发生在Reduce端
    1. Map端产生数据倾斜的直接原因:需要同时处理多个文件,且文件大小不均等,文件不可切
    2. Reduce产生数据倾斜的直接原因:对数据进行分类
  3. 数据倾斜无法避免,因为数据本身就有倾斜特性
  4. 理论上来说,数据倾斜产生之后可以解决,但是实际过程中,不太好解决;对于Reduce端的数据倾斜,实际过程中,可能会采用二阶段聚合方式来处理
    推测执行机制
  5. 推测执行机制本质是MapReduce针对慢任务的一种优化。当出现慢任务的时候,MapReduce会
    将这个任务拷贝一份到其他节点上,两个节点同时执行相同的任务,谁先执行完谁的结果就作为最
    终结果,另一个没有执行完的就会被kill掉
  6. 慢任务的出现场景
    1. 任务分配不均匀:每一个节点被分配到的任务数量不同
    2. 节点性能不一致:每一台服务器的配置不同
    3. 数据倾斜:任务之间处理的数据量不均等
  7. 实际工作中,因为数据倾斜而导致的慢任务出现的概率更高,此时推测执行机制除了会占用更多的集群资源以外,并不能提高执行效率。因此,实际过程中,一般会考虑关闭推测执行机制
<!-- MapTask的推测执行机制 -->
<property>
<name>mapreduce.map.speculative</name>
<value>true</value>
</property>
<!-- ReduceTask的推测执行机制 -->
<property>
<name>mapreduce.reduce.speculative</name>
<value>true</value>
</property>
  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值