开发者社区 > 大数据与机器学习 > 人工智能平台PAI > 正文

在机器学习PAI好像没读取数据就转成结束状态,是不是读取不均导致的?

问题1:e3452c1f6e4b4fd88dec25b75a406588.png 在机器学习PAI感觉读取Hive数据的时候并行度调成3,其他两个subtask好像没读取数据就转成finished状态了,那是不是数据读取不均导致的?问题2:我试了下纯读写任务的速度差不多,应该就是本身读取的速度不快。2023-06-02 17:30:05,423 INFO org.apache.flink.yarn.YarnTaskExecutorRunner [] - -------------------------------------------------------------------------------- 2023-06-02 17:30:05,428 INFO org.apache.flink.yarn.YarnTaskExecutorRunner [] - Starting YARN TaskExecutor runner (Version: 1.13.3, Scala: 2.12, Rev:a4700e3, Date:2021-10-11T23:52:36+02:00) 2023-06-02 17:30:05,428 INFO org.apache.flink.yarn.YarnTaskExecutorRunner [] - OS current user: hive 2023-06-02 17:30:05,859 INFO org.apache.flink.yarn.YarnTaskExecutorRunner [] - Current Hadoop/Kerberos user: hive 2023-06-02 17:30:05,859 INFO org.apache.flink.yarn.YarnTaskExecutorRunner [] - JVM: Java HotSpot(TM) 64-Bit Server VM - Oracle Corporation - 1.8/25.141-b15 2023-06-02 17:30:05,860 INFO org.apache.flink.yarn.YarnTaskExecutorRunner [] - Maximum heap size: 12880 MiBytes 2023-06-02 17:30:05,860 INFO org.apache.flink.yarn.YarnTaskExecutorRunner [] - JAVA_HOME: /usr/java/jdk1.8.0_141-cloudera 2023-06-02 17:30:05,861 INFO org.apache.flink.yarn.YarnTaskExecutorRunner [] - Hadoop version: 2.8.3 2023-06-02 17:30:05,861 INFO org.apache.flink.yarn.YarnTaskExecutorRunner [] - JVM Options: 2023-06-02 17:30:05,861 INFO org.apache.flink.yarn.YarnTaskExecutorRunner [] - -Xmx14092861440 2023-06-02 17:30:05,862 INFO org.apache.flink.yarn.YarnTaskExecutorRunner [] - -Xms14092861440 2023-06-02 17:30:05,862 INFO org.apache.flink.yarn.YarnTaskExecutorRunner [] - -XX:MaxDirectMemorySize=10066329600 2023-06-02 17:30:05,862 INFO org.apache.flink.yarn.YarnTaskExecutorRunner [] - -XX:MaxMetaspaceSize=4294967296 2023-06-02 17:30:05,862 INFO org.apache.flink.yarn.YarnTaskExecutorRunner [] - -Djava.security.krb5.conf=/etc/krb5.conf 2023-06-02 17:30:05,862 INFO org.apache.flink.yarn.YarnTaskExecutorRunner [] - -DALINK_PLUGINS_DIR=/data2/anaconda3/envs/alink/lib/python3.6/site-packages/pyalink/lib/plugins 2023-06-02 17:30:05,862 INFO org.apache.flink.yarn.YarnTaskExecutorRunner [] - -DALINK_HIVE_HDFS_CONFIG=/etc/hadoop/conf 2023-06-02 17:30:05,862 INFO org.apache.flink.yarn.YarnTaskExecutorRunner [] - -Dlog.file=/data11/yarn/container-logs/application_1683777826211_79791/container_1683777826211_79791_01_000002/taskmanager.log 2023-06-02 17:30:05,862 INFO org.apache.flink.yarn.YarnTaskExecutorRunner [] - -Dlog4j.configuration=file:./log4j.properties 2023-06-02 17:30:05,862 INFO org.apache.flink.yarn.YarnTaskExecutorRunner [] - -Dlog4j.configurationFile=file:./log4j.properties 2023-06-02 17:30:05,862 INFO org.apache.flink.yarn.YarnTaskExecutorRunner [] - Program Arguments: 2023-06-02 17:30:05,866 INFO org.apache.flink.yarn.YarnTaskExecutorRunner

展开
收起
三分钟热度的鱼 2023-06-05 15:47:03 121 0
3 条回答
写回答
取消 提交回答
  • 公众号:网络技术联盟站,InfoQ签约作者,阿里云社区签约作者,华为云 云享专家,BOSS直聘 创作王者,腾讯课堂创作领航员,博客+论坛:https://www.wljslmz.cn,工程师导航:https://www.wljslmz.com

    阿里云机器学习PAI在执行任务时,如果出现数据读取异常、处理异常或计算错误等情况,会导致任务提前结束。有可能是读取不均匀导致的,但还有其他一些可能的原因。

    以下是可能导致任务提前结束的一些常见原因:

    1. 数据读取异常

    如果您的任务需要读取数据,但是在读取数据时出现了异常,例如文件不存在、权限问题、文件格式错误等,都可能导致任务提前停止。建议您检查数据源文件路径、权限设置以及文件格式是否正确,确认代码中的数据读取逻辑是否正确。

    1. 程序异常/崩溃

    如果您的程序存在异常、崩溃或死锁等问题,也可能导致任务提前停止。建议您检查代码中的逻辑是否正确、代码是否存在潜在的错误和漏洞,并在异常发生时进行相应的错误处理。

    1. 计算错误

    如果您的任务涉及到复杂的计算或运算,例如数值计算、模型训练等,那么计算错误也可能导致任务提前停止。建议您检查代码中的计算逻辑是否正确,尝试将计算任务拆分为更小的部分,并对每个步骤进行检查和验证。

    1. 系统资源不足

    如果您的任务需要占用大量系统资源,例如内存、CPU、GPU等,而系统资源不足,也可能导致任务提前停止。建议您检查系统中是否有足够的资源供任务使用,并优化代码以提高资源利用率。

    2023-06-05 22:08:58
    赞同 展开评论 打赏
  • 北京阿里云ACE会长

    关于您提到的第一个问题,如果将并行度调整为3后,只有一个Subtask读取了数据,而其他两个Subtask则立即转换为“finished”状态,可能是由于数据倾斜导致的。数据倾斜是指在并行处理中,某些数据量较大或者处理时间较长的任务会造成任务之间的负载不均衡,从而导致某些任务执行时间过长,而其他任务则处于空闲状态。为了解决数据倾斜问题,可以采取以下措施:

    1. 数据预处理:在进行计算前,可以对数据进行预处理,例如进行数据采样、分片、降维等操作,以减小数据的规模和复杂度,从而降低数据倾斜的风险。

    2. 数据重分区:在进行并行计算时,可以对数据进行重分区,将数据均匀地分布到各个任务中,以减少任务之间的负载不均衡问题。可以使用Flink提供的rebalance()函数将数据均匀地分布到各个任务中。

    3. 动态调整并行度:如果出现数据倾斜问题,可以尝试动态调整并行度,将任务分配到更多的节点或更多的任务中,以提高计算效率和负载均衡。

    关于您提到的第二个问题,如果纯读写任务的速度与Hive数据读取速度相当,那么可能是由于Hive数据读取的速度受限于网络和存储性能等因素。为了提高Hive数据读取的速度,可以采取以下措施:

    1. 优化查询语句:使用合适的查询语句,可以减少数据的扫描和传输量,从而提高查询速度。

    2. 数据分区和压缩:对于大规模数据集,可以使用数据分区和压缩等技术,减少数据的存储空间和传输量,从而提高数据读取和处理的速度。

    3. 使用高性能存储:使用高性能的存储设备和文件系统,可以提高数据读取和写入的速度,从而加快数据处理的速度。

    4. 增大并行度:通过增大任务的并行度,可以将数据分配到更多的节点或更多的任务中,从而提高数据处理的速度。

    2023-06-05 18:36:44
    赞同 展开评论 打赏
  • 针对问题1的回答:1. 其他的task都提前finish了,这就是读没切开,orc的话,可以用debug的log level,看下具体的原因 2. 这个读取速度本身确实好像不怎么快,这个可以看下是不是下游有没有比较重的任务,或者就直接整个只有读写的任务看下吞吐。针对问题2的回答:看了一下

    1. 看着确实是读的不快,这个可以对比一下你们自己的hive的读取速度,如果差别比较大可以

    按照 https://github.com/alibaba/Alink/blob/c57424780bfe92a313bd09af2f42987e9bfb42e6/core/src/main/java/com/alibaba/alink/common/io/catalog/HiveCatalog.java#L103 这个传进去一个hive的配置文件

    具体的格式是 https://github.com/alibaba/Alink/blob/c57424780bfe92a313bd09af2f42987e9bfb42e6/core/src/main/java/com/alibaba/alink/common/io/catalog/HiveBaseUtils.java#L275

    这样应该可以对齐hive那边的配置

    1. split个数这个应该是需要配置mapreduce.input.fileinputformat.split.minsize这个,但是这文件看着比较小,可能就没必要调大了。此回答整理自钉群“Alink开源--用户群”
    2023-06-05 16:02:00
    赞同 展开评论 打赏

相关产品

  • 人工智能平台 PAI
  • 热门讨论

    热门文章

    相关电子书

    更多
    微博机器学习平台架构和实践 立即下载
    机器学习及人机交互实战 立即下载
    大数据与机器学习支撑的个性化大屏 立即下载