Map端数据倾斜

liquan-anran 2018-08-09 原文

Map端数据倾斜

MapReduce任务的数据倾斜一般指的是Reduce端数据倾斜,Map端怎么还会出现数据倾斜呢。~~

Mapper任务如下图所示,其中一个map任务耗时特别长

 

wKiom1l61EKjqDj8AAEHmnwbH98458.png-wh_50

 

跑了一个ETL程序,两个Map分别读取两类数据,一个是lzo格式,另外一个是txt格式。

map任务通常是一个数据块一个map,为什么其中一个map计算会如此耗时呢,分别查看两个数据文件的分块情况

输入1有50个分块

wKioL1l61ETCWVJyAABy3YbavEg425.png-wh_50

输入2有11个分块

wKiom1l61EOwVaFuAABotcapqu8698.png-wh_50

 

查看任务一共才有52个map。map格式应该是50+11=61个才对。

wKioL1l61EOCaDlxAAAXyiYuQq0361.png-wh_50

有如下结论

MultipleInputs两个输入,有一个在数据输入的时候没有Split成功,考虑到其中一个输入是lzo,极有可能是该文件没有index索引造成。

于是检查lzo文件所在目录中,检查是否存在lzo.index文件。

wKioL1l61ELjVVSYAAAxifWuHZo879.png-wh_50

存在lzo.index文件,还能造成读取数据没有进行分块处理,于是检查代码发现,在处理lzo文件的时候采用了TextInputFormat(代码标红位置处已修改为LzoTextInputFormat)。

所以没有按照lzo.index进行文件分块。一个lzo文件都在一个map里面进行计算处理。导致处理数据map个数不对,并且其中一个map处理耗时长。

if (commonPath != null && commonPath.length() != 0) {

MultipleInputs.addInputPath(job, new Path(commonPath.toString()), TextInputFormat.class, MidHotelMapper.class);

} else {

logger.error(“输入路径为空:–>{}”, conf.get(CommonConstant.COMMON_TASK_INPUT));

System.exit(-1);

}

if (ctripPath != null && ctripPath.length() != 0) {

MultipleInputs.addInputPath(job, new Path(ctripPath.toString()), LzoTextInputFormat.class, MidCtripHotelMapper.class);

} else {

logger.error(“输入路径为空:–>{}”, conf.get(Constant.CTRIP_TASK_INPUT));

System.exit(-1);

}

压缩的文件,要用特殊的input输入类,不然文件不切分

版权声明:本文为liquan-anran原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/liquan-anran/p/9447435.html

Map端数据倾斜的更多相关文章

  1. 大数据学习系列之一 —– Hadoop环境搭建(单机)

    一、环境选择 1,服务器选择 阿里云服务器:入门型(按量付费) 操作系统:linux CentOS 6.8 C […]...

  2. Hadoop生态系统——YARN

    Apache YARN(Yet Another Resource Negotiator) 是Hadoop的集群 […]...

  3. hdfs命令行操作

    hdfs命令行操作   集群环境中,可以在任意一个节点上通过命令行操作hdfs,hdfs命令很多都跟Linux […]...

  4. 利用docker搭建spark hadoop workbench

    目的 在spark-notebook中运行代码,提交到spark集群中实时运行 在HDFS中存储数据文件,在s […]...

  5. hadoop学习(1)—–安装jdk、配置hadoop集群

    准备安装 epel-releaseExtra Packages for Enterprise Linux 是为“红帽系”的操作系统提供额外的软件包,适用于 RHEL、CentOS 和 Scientific Linux。相当于是一个软件仓...

  6. Hadoop 和 MPP 的比较

    如果我们回顾5年前会发现,那就是当时Hadoop不是大多数公司的选择,特别是那些要求稳定和成熟的平台的企业。 […]...

  7. Hadoop完全分布式部署

    Hadoop下载地址:https://archive.apache.org/dist/hadoop/common/Hadoop各组件常用端口说明服务规划注:NameNode和SecondaryNameNode和ResourceMana...

  8. Hadoop HBase概念学习系列之HBase里的客户端和HBase集群建立连接(详细)(十四)

        需要遵循以下步骤:   1、客户端和Zookeeper集群建立连接。在这之前客户端需要获得一些信息(可 […]...

随机推荐

  1. EOS 插件依赖关系

    EOS version: 1.0.5 update: 2018-06-19   EOS插件之间会有一个相互调用 […]...

  2. 开源机辅翻译系统

    目前已经出现了不少的开源计算机辅助(机辅)翻译系统。 OpenTM2: IBM has partnered w […]...

  3. # 【ARM-Linux开发】在Win7的电脑上直接运行安装Ubuntu14.04发生的问题 标签(空格分隔): 【Linux开发】 — > 一段时间以来,一直是在Windows上安装虚拟机

    【ARM-Linux开发】在Win7的电脑上直接运行安装Ubuntu14.04发生的问题 标签(空格分隔): […]...

  4. Google Chrome 浏览器的检索语言设置 – CuriousZero

    Google Chrome 浏览器的检索语言设置 解决为何从一开始安装Google Chrome 浏览器的时候 […]...

  5. 双指针算法

    一、双指针算法两种常见的问题分类: (1)对于两个序列,维护某种次序,比如归并中合并两个有序序列的操作 (2) […]...

  6. TensorFlow环境 人脸识别 FaceNet 应用(一)验证测试集

    TensorFlow环境 人脸识别 FaceNet 应用(一)验证测试集 前提是TensorFlow环境以及相 […]...

  7. 关键两步+6个要点,让Windows应用程序享有K8S的绝佳优势

    本文来自Rancher Labs 前  言 实际上,没有一个迁移路径能够适用于将所有传统应用程序迁移到云。这些 […]...

  8. L1正则化与L2正则化详解及解决过拟合的方法

    欧氏距离(Euclidean distance)也称欧几里得度量、欧几里得度量,是一个通常采用的距离定义,它是 […]...

展开目录

目录导航