---
title: 支持国密算法的Shuffle安全IO
description: "使用OmniShield机密大数据特性执行Spark引擎业务，需通过启动Spark提交任务执行。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/2400/bds/kunpengbds_omniruntime_20_0717.html
sourcePath: /source/zh/kunpengboostkithistory/2400/bds/kunpengbds_omniruntime_20_0717.html
indexId: 49cbb2264ca5c0285b10dc30711aecffb87c17644015dbeba8fa2518515f7ae978
---
# 支持国密算法的Shuffle安全IO

使用OmniShield机密大数据特性执行Spark引擎业务，需通过启动Spark提交任务执行。

为满足国内数据安全合规要求，在Shuffle IO组件中新增国密算法支持，在原有数据加解密功能基础上实现全链路国密合规化传输，确保分布式计算过程中的数据交换安全。

1. 在“/opt/omnishield”目录下执行SQL并打开Shuffle IO加密，命令如下。
  1 spark-sql --driver-cores 5 --driver-memory 20g --num-executors 6 --executor-cores 4 --executor-memory 20g --conf spark.executor.memoryOverhead=20g --master yarn --conf spark.memory.offHeap.enabled=true --conf spark.memory.offHeap.size=18g --conf spark.task.cpus=1 --conf spark.driver.maxResultSize=40g --conf spark.authenticate.secret=testSecret --conf spark.authenticate=true --conf spark.io.encryption.enabled=true --conf spark.io.encryption.commons.config.cipher.classes=com.huawei.boostkit.omnishield.cipher.SM4Cipher --conf spark.io.crypto.cipher.transformation=SM4/GCM/NOPadding --conf spark.network.crypto.enabled=true --conf spark.network.crypto.cipher=SM4/GCM/NOPadding --conf spark.driver.extraClassPath=omnishield-1.0-SNAPSHOT.jar --conf spark.executor.extraClassPath=omnishield-1.0-SNAPSHOT.jar --jars omnishield-1.0-SNAPSHOT.jar --database tpcds_bin_partitioned_varchar_orc_2 -f /automated/lib/bd/testcase/scripts/omniop/conf/Spark_OmniRuntime_ShuffleEnhance/Spark_OmniRuntime_ShuffleEnhance_002.sql

  Shuffle磁盘IO加密打开需修改以下命令参数： spark.io.encryption.enabled=true spark.io.encryption.commons.config.cipher.classes=自定义实现Cipher类 spark.io.crypto.cipher.transformation=SM4/GCM/NOPadding Shuffle网络IO加密打开需修改以下命令参数： spark.authenticate.secret=自定义密钥 spark.authenticate=true spark.network.crypto.enabled=true spark.network.crypto.cipher=SM4/GCM/NOPadding。

2. 查看Shuffle IO支持国密是否生效。

  a. 获取Executor日志。
    1 yarn logs --applicationId application_xxx > xxx.log

  b. 查看是否有使用国密的相关日志，出现Shuffle network IO encryption will use SM4/GCM/NOPadding algorithm和Shuffle disk IO encryption will use SM4/GCM/NOPadding algorithm即生效。
