阿里云E-MapReduce集群不同计算引擎sleep task使用笔记

本文涉及的产品
EMR Serverless StarRocks,5000CU*H 48000GB*H
简介: 需求:日常在E-MapReduce集群中进行相关测试,验证一些切换或变更是否会影响业务的运行导致任务failed。所以需要在测试集群中运行指定资源数(vcore及memory)或者指定运行时间的任务。目前用到MapReduce和spark任务两种,其余的持续更新补充中……
+关注继续查看

1. 概述

需求:日常在E-MapReduce集群中进行相关测试,验证一些切换或变更是否会影响业务的运行导致任务failed。所以需要在测试集群中运行指定资源数(vcore及memory)或者指定运行时间的任务。

目前用到MapReduce和spark任务两种,其余的持续更新补充中……

2. mapreduce

官方提供的test jar,可以通过如下命令找到该测试jar包

# 找到环境变量中的hadoop home
env |grep -i hadoop 
# 找到测试jar
cd $HADOOP_HOME/share/hadoop/mapreduce/
# pwd
# /opt/apps/HADOOP-COMMON/hadoop-common-current/share/hadoop/mapreduce

image.png

2.1. 用法

# 查看jar包中的类 可以看到有现成的sleep可以使用
hadoop jar ./hadoop-mapreduce-client-jobclient-2.8.5-tests.jar

image.png

# 查看sleep类的用法
# hadoop jar ./hadoop-mapreduce-client-jobclient-2.8.5-tests.jar <类名>
hadoop jar ./hadoop-mapreduce-client-jobclient-2.8.5-tests.jar sleep
# 可以看到如下图所示,在-m -r 指定mapper和reducer的数量
# -mt 和 -rt指定在map 和reduce过程中sleep的时长,单位为msec

image.png

hadoop jar hadoop-mapreduce-client-jobclient-2.8.5-tests.jar sleep -m 10 -r 10 -mt 1000 -rt 300000

3. spark

spark home下暂时没找到可以直接配参数调用的脚本,用来控制资源+执行时长的类似sleep测试jar包或代码,所以以apache spark中样例代码PI的计算为基础,做了下改动。

3.1. 用法

以pyspark api为基础,使用spark-submit起任务,脚本中的`--sleep`参数可以用纸在map task时sleep的时长。

spark-submit \
    --deploy-mode cluster \
    --master yarn \
    --executor-memory 5g \
  --conf spark.executor.instances=6 \
  --conf spark.dynamicAllocation.enabled=false \
    ./pi_sleep.py \
    --sleep 30

image.png

3.2. 样例代码

import time
from random import random
from operator import add
from pyspark.sql import SparkSession
import argparse
if __name__ == "__main__":
    """
        Usage: 
        spark-submit \
            --deploy-mode cluster \
            --master yarn \
            --conf spark.executor.instances=6 \
            --conf spark.dynamicAllocation.enabled=false \
            ./pi_sleep.py \
            --sleep 30
    """
    parser = argparse.ArgumentParser()
    parser.add_argument("--partition", default=4, type=int, help="number of spark rdd partition, default 4")
    parser.add_argument("--sleep", default=0, type=int, help="seconds of map task sleep time, default 0")
    args = parser.parse_args()
    spark = SparkSession \
        .builder \
        .appName("PythonPi") \
        .getOrCreate()
    start = time.time()
    # partitions = int(sys.argv[1]) if len(sys.argv) > 1 else 2
    partitions = int(args.partition)
    n = 100000 * partitions
    t_sleep = args.sleep / 100000
    def f(_: int) -> float:
        x = random() * 2 - 1
        y = random() * 2 - 1
        time.sleep(t_sleep)
        return 1 if x ** 2 + y ** 2 <= 1 else 0
    count = spark.sparkContext.parallelize(range(1, n + 1), partitions).map(f).reduce(add)
    print("Pi is roughly %f" % (4.0 * count / n))
    end = time.time()
    print(f'calc execute time: {end - start} s')
    spark.stop()
相关实践学习
EMR数据湖开发治理之用户画像分析
通过本场景,你可以基于E-MapReduce + DLF + OSS-HDFS + DataWorks在云上快速体验完整的数据湖开发治理方案。
快速掌握阿里云 E-MapReduce
E-MapReduce 是构建于阿里云 ECS 弹性虚拟机之上,利用开源大数据生态系统,包括 Hadoop、Spark、HBase,为用户提供集群、作业、数据等管理的一站式大数据处理分析服务。 本课程主要介绍阿里云 E-MapReduce 的使用方法。
相关文章
|
4月前
|
存储 NoSQL 算法
阿里云GraphScope,全球最快图计算引擎!
阿里云GraphScope,全球最快图计算引擎!
99 0
|
12月前
阿里云商标注册申请流程新版教程(智能注册申请新手操作笔记)
阿里云商标类型、阿里云商标名称、阿里云商标图样、阿里云商标说明、阿里云商标类别选择、阿里云上传商标申请人材料,阿里云商标注册图文教程快速上手笔记,本文以阿里云商标智能注册申请为例,商标智能注册申请需要用户手动填写商标类型、商标名称、商标图样、商标说明及商标分类表选择等操作,流程较为复杂,阿里云百科来详细说下阿里云商标注册快速上手笔记
336 0
阿里云商标注册申请流程新版教程(智能注册申请新手操作笔记)
|
12月前
阿里云商标智能注册申请新手操作流程(快速上手笔记)
阿里云商标智能注册申请新手操作流程包括阿里云商标类型、阿里云商标名称、阿里云商标图样、阿里云商标说明、阿里云商标类别选择、阿里云上传商标申请人材料
136 0
阿里云商标智能注册申请新手操作流程(快速上手笔记)
|
12月前
阿里云商标注册快速上手笔记(新手图文教程)
阿里云商标注册图文教程快速上手笔记,本文以阿里云商标智能注册申请为例,商标智能注册申请需要用户手动填写商标类型、商标名称、商标图样、商标说明及商标分类表选择等操作,流程较为复杂,阿里云百科来详细说下阿里云商标注册快速上手笔记
233 0
阿里云商标注册快速上手笔记(新手图文教程)
uiu
|
数据采集 存储 机器学习/深度学习
阿里云ACP大数据分析师 | 笔记纪要
阿里云ACP大数据分析师 | 笔记纪要
uiu
236 0
公司官网建站笔记(四):从阿里云将域名转出,并将域名转入腾讯云
做网站与云端后台开发,购买了阿里云的域名,但是使用了腾讯云的服务器,所以需要将域名(没有备案)转到腾讯云。
公司官网建站笔记(四):从阿里云将域名转出,并将域名转入腾讯云
|
Cloud Native Devops 持续交付
阿里云云原生学习及思考笔记-云原生理解
1.什么是云原生 2.API,容器,微服务之间的关系又是如何? 3.DevOps与CI/CD呢?
275 0
阿里云云原生学习及思考笔记-云原生理解
|
存储 Kubernetes 监控
阿里云云原生学习及思考笔记-初识容器
1.容器与虚拟化的对别 2.docker/ kubernetes 分别是什么 3.K8S内各组件如何分工
293 0
阿里云云原生学习及思考笔记-初识容器
|
数据采集 弹性计算 运维
使用阿里云Elasticsearch快速搭建智能运维系统的课程笔记
了解阿里云Elasticsearch集群创建登录的基础操作 学会采集系统数据和Nginx服务数据 学会配置指标分析看板,体验数据分析和运维的过程
184 0
|
Web App开发 Kubernetes 负载均衡
阿里云容器服务Kubernetes版快速入门 详情笔记
阿里云容器服务Kubernetes版快速入门 详情笔记
阿里云容器服务Kubernetes版快速入门 详情笔记
相关产品
开源大数据平台 E-MapReduce
推荐文章
更多