热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Spark:sc.WholeTextFiles需要很长时间才能执行

如何解决《Spark:sc.WholeTextFiles需要很长时间才能执行》经验,为你挑选了1个好方法。

我有一个集群,我执行wholeTextFiles它应该提取大约一百万个文本文件,总计大约10GB总共我有一个NameNode和两个DataNode 30GB每个RAM,每个4个核心.数据存储在HDFS.

我没有运行任何特殊参数,作业需要5个小时才能读取数据.这是预期的吗?是否有任何参数可以加快读取(火花配置或分区,执行器数量?)

我刚刚开始,我以前从未需要优化工作

编辑:此外,有人可以准确解释整个文本功能的工作原理吗?(不是如何使用它,而是如何编程).我对理解分区参数等非常感兴趣.

编辑2:基准评估

所以我在整个文本文件之后尝试重新分区,问题是一样的,因为第一次读取仍然使用预定义数量的分区,因此没有性能改进.加载数据后,集群执行得非常好...在处理整个文本文件时,我在处理数据(对于200k文件)时有以下警告消息:

15/01/19 03:52:48 WARN scheduler.TaskSetManager: Stage 0 contains a task of very large size (15795 KB). The maximum recommended task size is 100 KB.

这会是表现糟糕的原因吗?我该如何对冲呢?

另外,在执行saveAsTextFile时,根据Ambari控制台的速度是19MB/s.当使用wholeTextFiles读取时,我的速度为300kb/s .....

看来通过增加分区数量wholeTextFile(path,partitions),我的性能会越来越好.但是仍然只有8个任务同时运行(我的CPU数量).我正在进行基准测试以观察极限......



1> 0x0FFF..:

从评论中总结我的建议:

    HDFS不适合存储许多小文件.首先,NameNode将元数据存储在内存中,因此您可能拥有的文件和块的数量是有限的(典型服务器的最大约为100m块).接下来,每次读取文件时,首先查询NameNode的块位置,然后连接到存储该文件的DataNode.这种联系和响应的开销非常大.

    应始终检查默认设置.默认情况下,Spark在YARN上启动,带有2个执行器(--num-executors),每个执行1个线程(--executor-cores)和--executor-memory512米RAM(),每个只有2个线程,每个512MB RAM,这对于实际任务来说非常小

所以我的建议是:

    启动Spark --num-executors 4 --executor-memory 12g --executor-cores 4可以提供更多的并行性 - 在这种特殊情况下有16个线程,这意味着16个并行运行的任务

    使用sc.wholeTextFiles读取这些文件,然后将它们转储到压缩的序列文件(例如,与斯纳皮块级压缩),这里有一个如何可以做到这一点的例子:http://0x0fff.com/spark-hdfs-integration/.这将大大减少下次迭代读取它们所需的时间


从这开始:http://stackoverflow.com/questions/17875277/reading-file-as-single-record-in-hadoop - 一次性读取整个文件.这样你就可以在内存缓冲区中拥有一个完整的文件,之后你就可以将Java库应用于gunzip这个缓冲区并解压缩其内容
推荐阅读
  • Hadoop MapReduce 实战案例:手机流量使用统计分析
    本文通过一个具体的Hadoop MapReduce案例,详细介绍了如何利用MapReduce框架来统计和分析手机用户的流量使用情况,包括上行和下行流量的计算以及总流量的汇总。 ... [详细]
  • 本文详细介绍了 Java 中 org.w3c.dom.Node 类的 isEqualNode() 方法的功能、参数及返回值,并通过多个实际代码示例来展示其具体应用。此方法用于检测两个节点是否相等,而不仅仅是判断它们是否为同一个对象。 ... [详细]
  • 本文详细介绍了 Spark 中的弹性分布式数据集(RDD)及其常见的操作方法,包括 union、intersection、cartesian、subtract、join、cogroup 等转换操作,以及 count、collect、reduce、take、foreach、first、saveAsTextFile 等行动操作。 ... [详细]
  • Hadoop的文件操作位于包org.apache.hadoop.fs里面,能够进行新建、删除、修改等操作。比较重要的几个类:(1)Configurati ... [详细]
  • 本文分享了作者在使用LaTeX过程中的几点心得,涵盖了从文档编辑、代码高亮、图形绘制到3D模型展示等多个方面的内容。适合希望深入了解LaTeX高级功能的用户。 ... [详细]
  • Maven + Spring + MyBatis + MySQL 环境搭建与实例解析
    本文详细介绍如何使用MySQL数据库进行环境搭建,包括创建数据库表并插入示例数据。随后,逐步指导如何配置Maven项目,整合Spring框架与MyBatis,实现高效的数据访问。 ... [详细]
  • 流处理中的计数挑战与解决方案
    本文探讨了在流处理中进行计数的各种技术和挑战,并基于作者在2016年圣何塞举行的Hadoop World大会上的演讲进行了深入分析。文章不仅介绍了传统批处理和Lambda架构的局限性,还详细探讨了流处理架构的优势及其在现代大数据应用中的重要作用。 ... [详细]
  • 本文详细探讨了在Web开发中常见的UTF-8编码问题及其解决方案,包括HTML页面、PHP脚本、MySQL数据库以及JavaScript和Flash应用中的乱码问题。 ... [详细]
  • 本文详细介绍了 `org.apache.hadoop.hdfs.server.namenode.FSNamesystem.shouldUseDelegationTokens()` 方法的用途和实际应用场景,并提供了多个代码示例以帮助开发者更好地理解和使用该方法。 ... [详细]
  • Centos7 Tomcat9 安装笔记
    centos7,tom ... [详细]
  • 本文介绍了如何在 MapReduce 作业中使用 SequenceFileOutputFormat 生成 SequenceFile 文件,并详细解释了 SequenceFile 的结构和用途。 ... [详细]
  • 本文介绍了如何使用Flume从Linux文件系统收集日志并存储到HDFS,然后通过MapReduce清洗数据,使用Hive进行数据分析,并最终通过Sqoop将结果导出到MySQL数据库。 ... [详细]
  • 【MySQL】frm文件解析
    官网说明:http:dev.mysql.comdocinternalsenfrm-file-format.htmlfrm是MySQL表结构定义文件,通常frm文件是不会损坏的,但是如果 ... [详细]
  • 数据输入验证与控件绑定方法
    本文提供了多种数据输入验证函数及控件绑定方法的实现代码,包括电话号码、数字、传真、邮政编码、电子邮件和网址的验证,以及报表绑定和自动编号等功能。 ... [详细]
  • 尽管在WPF中工作了一段时间,但在菜单控件的样式设置上遇到了一些基础问题,特别是关于如何正确配置前景色和背景色。 ... [详细]
author-avatar
玄天战猫
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有