华为云用户手册

  • 操作步骤 修改样例代码。 当前样例代码中操作HBase的接口有三种,分别是普通接口,HFS接口( MRS 1.9.x版本不再支持该接口),REST接口。调试不同API接口操作HBase时可以注释其他接口调用。这里以使用普通接口操作HBase为例,main方法中只包含如下代码段。 public static void main(String[] args) { try { init(); login(); } catch (IOException e) { LOG .error("Failed to login because ", e); return; } // getDefaultConfiguration(); conf = HBaseConfiguration.create(); // test hbase API HBaseExample oneSample; try { oneSample = new HBaseExample(conf); oneSample.test(); } catch (Exception e) { LOG.error("Failed to test HBase because ", e); } LOG.info("-----------finish HBase-------------------"); } 在调用HFS接口(MRS 1.9.x版本不再支持该接口),REST接口时需要把样例工程src\main\resources下hbaseclient.properties文件拷贝到客户端(客户端目录以/opt/client为例)的HBase/hbase/conf目录下,并修改hbaseclient.properties文件。userKeytabName,krb5ConfName对应于从2获取的文件的地址。若使用REST接口时需修改rest.server.info,使其对应于rest server的ip:port(port默认为21309)。 rest.server.info=10.10.10.10:21309 user.name=hbaseuser userKeytabName=user.keytab krb5ConfName=krb5.conf HFSSample样例工程在MRS 1.9.x版本中已移除,需注意当前集群版本。 执行mvn package生成jar包,在工程目录target目录下获取,比如:hbase-examples-mrs-2.0.jar,将获取的包上传到/opt/client/HBase/hbase/lib目录下。 执行Jar包。 在Linux客户端下执行Jar包的时候,需要用安装用户切换到客户端目录: cd $BIGDATA_CLIENT_HOME/HBase/hbase “$BIGDATA_CLIENT_HOME”指的是客户端安装目录。 然后执行: source $BIGDATA_CLIENT_HOME/bigdata_env 启用多实例功能后,为其他HBase服务实例进行应用程序开发时还需执行以下命令,切换指定服务实例的客户端。 例如HBase2:source /opt/client/HBase2/component_env。 将2中生成的Jar包和从准备HBase应用开发用户中获取的krb5.conf和user.keytab文件拷贝上传至客户端运行环境的Hbase/hbase/conf目录下,例如“/opt/client/HBase/hbase/conf”。然后在“/opt/client/HBase/hbase/conf”目录下,如果不存在则创建hbaseclient.properties文件,文件中user.name对应新建的用户hbaseuser,userKeytabName和krb5ConfName值对应从准备HBase应用开发用户中获取的认证相关文件名称,如下(未开启Kerberos认证集群可跳过此步): user.name=hbaseuser userKeytabName=user.keytab krb5ConfName=krb5.conf 运行如下命令执行Jar包。 hbase com.huawei.bigdata.hbase.examples.TestMain /opt/client/HBase/hbase/conf 其中,com.huawei.bigdata.hbase.examples.TestMain为举例,具体以实际样例代码为准。 “/opt/client/HBase/hbase/conf”对应于上述中user.keytab、krb5.conf等文件路径。 针对MRS 1.9.2及以后版本请执行hbase com.huawei.bigdata.hbase.examples.TestMain /opt/client/HBase/hbase/conf。
  • Flink应用开发简介 Flink是一个批处理和流处理结合的统一计算框架,其核心是一个提供了数据分发以及并行化计算的流数据处理引擎。 Flink最适合的应用场景是低时延的数据处理(Data Processing)场景:高并发pipeline处理数据,时延毫秒级,且兼具可靠性。 Flink整个系统包含三个部分: Client Flink Client主要给用户提供向Flink系统提交用户任务(流式作业)的能力。 TaskManager Flink系统的业务执行节点,执行具体的用户任务。TaskManager可以有多个,各个TaskManager都平等。 JobManager Flink系统的管理节点,管理所有的TaskManager,并决策用户任务在哪些Taskmanager执行。JobManager在HA模式下可以有多个,但只有一个主JobManager。 Flink系统提供的关键能力: 低时延 提供ms级时延的处理能力。 Exactly Once 提供异步快照机制,保证所有数据真正只处理一次。 HA JobManager支持主备模式,保证无单点故障。 水平扩展能力 TaskManager支持手动水平扩展。 Flink DataStream API提供Scala和Java两种语言的开发方式,如表1所示。 表1 Flink DataStream API接口 功能 说明 Scala API 提供Scala语言的API,提供过滤、join、窗口、聚合等数据处理能力。由于Scala语言的简洁易懂,推荐用户使用Scala接口进行程序开发。 Java API 提供Java语言的API,提供过滤、join、窗口、聚合等数据处理能力。 有关Flink的详细信息,请参见:https://flink.apache.org/ 父主题: Flink应用开发概述
  • 准备运行调测环境 在弹性云服务器管理控制台,申请一个新的弹性云服务器,用于应用开发运行调测。 弹性云服务器的安全组需要和MRS集群Master节点的安全组相同。 弹性云服务器的VPC需要与MRS集群在同一个VPC中。 弹性云服务器的网卡需要与MRS集群在同一个网段中。 申请弹性IP,绑定新申请的弹性云主机IP,并配置安全组出入规则。 下载客户端程序,请参考下载MRS客户端。 登录客户端下载目标节点,以root用户安装集群客户端。 执行以下命令解压客户端包。 tar -xvf /opt/MRS_Services_Client.tar 执行以下命令校验安装文件包。 sha256sum -c /opt/MRS_Services_ClientConfig.tar.sha256 MRS_Services_ClientConfig.tar:OK 执行以下命令解压安装文件包。 tar -xvf MRS_Services_ClientConfig.tar 执行如下命令安装客户端到指定目录(绝对路径),例如“/opt/client”。目录会自动创建。 cd /opt/MRS_Services_ClientConfig sh install.sh /opt/client Components client installation is complete.
  • Impala应用开发常用概念 客户端 客户端直接面向用户,可通过Java API、Thrift API访问服务端进行Impala的相关操作。本文中的Impala客户端特指Impala client的安装目录,里面包含通过Java API访问Impala的样例代码。 HiveQL语言 Hive Query Language,类SQL语句,与Hive类似。 Statestore Statestore管理Impala集群中所有的Impalad实例的健康状态,并将实例健康信息广播到所有实例上。当某一个Impalad实例发生故障,比如节点异常、网络异常等,Statestore将通知其他Impalad实例,后续的查询请求等将不会向该实例分发。 Catalog Catalog实例服务将每个Impalad实例上发生的元数据变动同步到集群内其他Impalad实例,从而避免在一个Impalad实例中更改元数据,其他各个实例需要执行REFRESH操作来更新。但是,在Hive中建表,修改表等,则需要执行REFRESH或者INVALIDATE METADATA操作。 父主题: Impala应用开发概述
  • 问题 在omm用户(非root用户)下,通过spark-submit提交yarn-client模式的任务,会出现FileNotFoundException异常,任务还能继续执行,但无法查看Driver端日志。例如:执行命令 spark-submit --class org.apache.spark.examples.SparkPi --master yarn-client /opt/client/Spark/spark/examples/jars/spark-examples_2.11-2.2.1-mrs-1.7.0.jar ,结果如下图所示。
  • 回答 原因分析: 在yarn-client模式下执行任务时,Spark的Driver程序在本地执行;其中通过-Dlog4j.configuration=./log4j-executor.properties配置了Driver的日志文件,log4j-executor.properties配置文件设置日志输出到${spark.yarn.app.container.log.dir}/stdout文件中,由于Spark Driver在本地执行时${spark.yarn.app.container.log.dir}没有设置即为空,则输出目录为/stdout,而非root用户下,在根目录下面没有创建和修改stdout的权限,就会报FileNotFoundException异常。而在yarn-cluster模式下执行任务时,Spark的Driver程序在Application Master下执行,而在Application Master启动时就会通过-D${spark.yarn.app.container.log.dir}设置了输出目录,因此在yarn-cluster模式执行任务不会报FileNotFoundException异常。 处理方法: 注:下面所说的$SPAKR_HOME默认是/opt/client/Spark/spark 解决方案1:手动切换日志配置文件。修改文件$SPARK_HOME/conf/spark-defaults.conf中spark.driver.extraJavaOptions的配置项-Dlog4j.configuration=./log4j-executor.properties(默认情况下为./log4j-executor.properties),在yarn-client模式下,修改为-Dlog4j.configuration=./log4j.properties,在yarn-cluster模式下修改为-Dlog4j.configuration=./log4j-executor.properties。 解决方案2:修改启动脚本$SPARK_HOME/bin/spark-class。在spark-class脚本#!/usr/bin/env bash下面添加。 # Judge mode: client and cluster; Default: client argv=`echo $@ | tr [A-Z] [a-z]` if [[ "$argv" =~ "--master" ]];then mode=`echo $argv | sed -e 's/.*--master //'` master=`echo $mode | awk '{print $1}'` case $master in "yarn") deploy=`echo $mode | awk '{print $3}'` if [[ "$mode" =~ "--deploy-mode" ]];then deploy=$deploy else deploy="client" fi ;; "yarn-client"|"local") deploy="client" ;; "yarn-cluster") deploy="cluster" ;; esac else deploy="client" fi # modify the spark-defaults.conf number=`sed -n -e '/spark.driver.extraJavaOptions/=' $SPARK_HOME/conf/spark-defaults.conf` if [ "$deploy"x = "client"x ];then `sed -i "${number}s/-Dlog4j.configuration=.*properties /-Dlog4j.configuration=.\/log4j.properties /g" $SPARK_HOME/conf/spark-defaults.conf` else `sed -i "${number}s/-Dlog4j.configuration=.*properties /-Dlog4j.configuration=.\/log4j-executor.properties /g" $SPARK_HOME/conf/spark-defaults.conf` fi 这些脚本行的功能和解决方案1类似,通过判断yarn的模式来修改文件$SPARK_HOME/conf/spark-defaults.conf中spark.driver.extraJavaOptions的配置项-Dlog4j.configuration=./log4j-executor.properties。
  • MapReduce应用开发流程介绍 开发流程中各阶段的说明如图1和表1所示。 图1 MapReduce应用程序开发流程 表1 MapReduce应用开发的流程说明 阶段 说明 参考文档 了解基本概念 在开始开发应用前,需要了解MapReduce的基本概念。 MapReduce应用开发常用概念 准备开发环境 使用Eclipse工具,请根据指导完成开发环境配置。 准备Eclipse与JDK 准备运行环境 MapReduce的运行环境即MapReduce客户端,请根据指导完成客户端的安装和配置。 准备MapReduce应用运行环境 获取并导入样例工程 或者新建工程 MapReduce提供了不同场景下的样例程序,您可以导入样例工程进行程序学习。或者您可以根据指导,新建一个MapReduce工程。 导入并配置MapReduce样例工程 根据场景开发工程 提供了样例工程。 帮助用户快速了解MapReduce各部件的编程接口。 MapReduce统计样例程序开发思路 MapReduce访问多组件样例程序开发思路 编译并运行程序 指导用户将开发好的程序编译并提交运行。 编译并运行MapReduce应用 查看程序运行结果 程序运行结果会写在用户指定的路径下。用户还可以通过UI查看应用运行情况。 查看MapReduce应用调测结果 父主题: MapReduce应用开发概述
  • Impala应用开发环境简介 在进行应用开发时,要准备的本地开发环境如表1所示。同时需要准备运行调测的环境,用于验证应用程序运行正常。 表1 开发环境 准备项 说明 操作系统 开发环境:Windows系统,推荐Windows7以上版本。 运行环境:Linux系统。 安装JDK 开发和运行环境的基本配置。版本要求如下: MRS集群的服务端和客户端仅支持自带的Oracle JDK(版本为1.8),不允许替换。 对于客户应用需引用SDK类的Jar包运行在客户应用进程中的,支持Oracle JDK和IBM JDK。 Oracle JDK:支持1.7和1.8版本。 IBM JDK:推荐1.7.8.10、1.7.9.40和1.8.3.0版本。 安装和配置Eclipse 用于开发Impalad应用程序的工具。版本要求如下: JDK使用1.7版本,Eclipse使用3.7.1及以上版本。 JDK使用1.8版本,Eclipse使用4.3.2及以上版本。 说明: 若使用IBM JDK,请确保Eclipse中的JDK配置为IBM JDK。 若使用Oracle JDK,请确保Eclipse中的JDK配置为Oracle JDK。 不同的Eclipse不要使用相同的workspace和相同路径下的示例工程。 网络 确保客户端与Impala服务主机在网络上互通。 父主题: 准备Impala应用开发环境
  • HBase应用开发常用概念 过滤器 过滤器提供了非常强大的特性来帮助用户提高HBase处理表中数据的效率。用户不仅可以使用HBase中预定义好的过滤器,而且可以实现自定义的过滤器。 协处理器 允许用户执行region级的操作,并且可以使用与RDBMS中触发器类似的功能。 Client 客户端直接面向用户,可通过Java API或HBase Shell访问服务端,对HBase的表进行读写操作。本文中的HBase客户端特指从装有HBase服务的MRS Manager上下载的HBase client安装包,里面包含通过Java API访问HBase的样例代码。 父主题: HBase应用开发概述
  • 登录MRS Manager 登录MRS管理控制台页面。 在“现有集群” 列表,单击指定的集群名称,进入集群信息页面。 单击“点击管理”,打开“访问MRS Manager页面”。 若用户创建集群时已经绑定弹性公网IP,如图1所示。 选择待添加的安全组规则所在安全组,该安全组在创建群时配置。 添加安全组规则,默认填充的是用户访问公网IP地址9022端口的规则,如需开放多个IP段为可信范围用于访问MRS Manager页面,请参考添加安全组规则。如需对安全组规则进行查看,修改和删除操作,请单击“管理安全组规则”。 自动获取的访问公网IP与用户本机IP不一致,属于正常现象,无需处理。 9022端口为knox的端口,需要开启访问knox的9022端口权限,才能访问MRS Manager服务。 勾选“我确认xx.xx.xx.xx为可信任的公网访问IP,并允许从该IP访问MRS Manager页面。” 图1 添加访问MRS Manager的安全组规则 若用户创建集群时暂未绑定弹性公网IP,如图2所示。 在弹性公网IP下拉框中选择可用的弹性公网IP或单击“管理弹性公网IP”创建弹性公网IP。 选择待添加的安全组规则所在安全组,该安全组在创建群时配置。 添加安全组规则,默认填充的是用户访问公网IP地址9022端口的规则,如需开放多个IP段为可信范围用于访问MRS Manager页面,请参考添加安全组规则。如需对安全组规则进行查看,修改和删除操作,请单击“管理安全组规则”。 自动获取的访问公网IP与用户本机IP不一致,属于正常现象,无需处理。 9022端口为knox的端口,需要开启访问knox的9022端口权限,才能访问MRS Manager服务。 勾选“我确认xx.xx.xx.xx为可信任的公网访问IP,并允许从该IP访问MRS Manager页面。” 图2 绑定弹性公网IP 单击“确定”,进入MRS Manager登录页面。 输入创建集群时默认的用户名“admin”及设置的密码,单击“登录”进入MRS Manager页面。
  • 添加安全组规则 如需为其他用户开通访问MRS Manager的权限,参考该小节内容添加对应用户访问公网的IP地址为可信范围。 在MRS管理控制台,在“现有集群” 列表,单击指定的集群名称,进入集群信息页面。 单击弹性公网IP后边的“添加安全组规则”,如图3所示。 图3 集群详情 进入“添加安全组规则”页面,添加需要开放权限用户访问公网的IP地址段并勾选“我确认这里设置的授权对象是可信任的公网访问IP范围,禁止使用0.0.0.0/0,否则会有安全风险。”如图4所示。 图4 添加安全组规则 默认填充的是用户访问公网的IP地址,用户可根据需要修改IP地址段,如需开放多个IP段为可信范围,请重复执行步骤6-步骤9。如需对安全组规则进行查看,修改和删除操作,请单击“管理安全组规则”。 单击“确定”完成安全组规则添加。
  • JDBC客户端运行及结果查看 执行mvn clean compile assembly:single生成jar包,在工程目录target目录下获取,比如:presto-examples-1.0-SNAPSHOT-jar-with-dependencies.jar。 在运行调测环境上创建一个目录作为运行目录,如或“/opt/presto_examples”(Linux环境),并在该目录下创建子目录“conf”。 将1导出的presto-examples-1.0-SNAPSHOT-jar-with-dependencies.jar拷贝到“/opt/presto_examples”下。 开启Kerberos认证集群需要将4获取的user.keytab和krb5.conf拷贝到的/opt/presto_examples/conf下,并修改样例代码中conf目录下的presto.preperties。未开启Kerberos认证集群无须执行此步骤。 表1 presto.preperties参数说明 参数 说明 user 用于Kerberos认证的用户名,即准备Presto应用开发用户中创建的开发用户的用户名。 KerberosPrincipal 用于认证的名字,即认证准备Presto应用开发用户中创建的开发用户的用户名。 KerberosConfigPath krb5.conf的路径。 KerberosKeytabPath user.keytab的路径。 presto.preperties样例 user = prestouser SSL = true KerberosRemoteServiceName = HTTP KerberosPrincipal = prestouser KerberosConfigPath = /opt/presto_examples/conf/krb5.conf KerberosKeytabPath = /opt/presto_examples/conf/user.keytab 在Linux环境下执行运行样例程序。 chmod +x /opt/presto_examples -R cd /opt/presto_examples java -jar presto-examples-1.0-SNAPSHOT-jar-with-dependencies.jar 在命令行终端查看样例代码所查询出的结果。 Linux环境运行成功结果会有如下信息: NY Metro : 2 Mid Atlantic : 6 Mid Atlantic : 6 North Midwest : 1 North Midwest : 3 North Midwest : 7
  • 数据规划 StructuredStreaming样例工程的数据存储在Kafka组件中。向Kafka组件发送数据(需要有kafka权限用户)。 确保集群安装完成,包括HDFS、Yarn、Spark和Kafka。 将kafka的Broker配置参数“allow.everyone.if.no.acl.found”的值修改为“true”(普通集群不需配置)。 创建Topic。 {zkQuorum}表示ZooKeeper集群信息,格式为IP:port。 $KAFKA_HOME/bin/kafka-topics.sh --create --zookeeper {zkQuorum}/kafka --replication-factor 1 --partitions 1 --topic {Topic} 启动Kafka的Producer,向Kafka发送数据。 {ClassPath}表示工程jar包的存放路径,详细路径由用户指定,可参考编包并运行Spark应用。 java -cp $SPARK_HOME/jars/*:$SPARK_HOME/jars/streamingClient010/*:{JAR_PATH} com.huawei.bigdata.spark.examples.KafkaWordCountProducer {BrokerList} {Topic} {messagesPerSec} {wordsPerMessage} JAR_PATH为程序jar包所在路径; BrokerList格式为brokerIp:9092; 若用户需要对接安全Kafka,则还需要在spark客户端的conf目录下的“jaas.conf”文件中增加“KafkaClient”的配置信息,示例如下: KafkaClient { com.sun.security.auth.module.Krb5LoginModule required useKeyTab=true keyTab = "./user.keytab" principal="leoB@HADOOP.COM" useTicketCache=false storeKey=true debug=true; }; 在Spark on YARN模式下,jaas.conf和user.keytab通过YARN分发到Spark on YARN的container目录下,因此KafkaClient中对于“keyTab”的配置路径必须为相对jaas.conf的所在路径,例如“./user.keytab”。principal修改为自己创建的用户名及集群 域名
  • Spark应用开发环境简介 在进行应用开发时,要准备的开发环境如表1所示。同时需要准备运行调测的Linux环境,用于验证应用程序运行正常。 表1 开发环境 准备项 说明 安装JDK 开发环境的基本配置。版本要求:1.7或者1.8。 说明: 基于安全考虑,MRS 服务端只支持TLS 1.1和TLS 1.2加密协议,IBM JDK默认TLS只支持1.0,若使用IBM JDK,请配置启动参数“com.ibm.jsse2.overrideDefaultTLS”为“true”,设置后可以同时支持TLS1.0/1.1/1.2。 详情请参见https://www.ibm.com/support/knowledgecenter/zh/SSYKE2_8.0.0/com.ibm.java.security.component.80.doc/security-component/jsse2Docs/matchsslcontext_tls.html#matchsslcontext_tls 安装和配置IDEA 用于开发Spark应用程序的工具。版本要求:13.1.6及以上版本。 安装Scala Scala开发环境的基本配置。版本要求:2.11.0及以上版本。 安装Scala插件 Scala开发环境的基本配置。版本要求:0.35.683及以上版本。 安装Python Python开发环境的基本配置。版本要求:Python2.7.x及以上版本。 父主题: 准备Spark应用开发环境
  • Spark应用开发流程介绍 Spark包含Spark Core、Spark SQL和Spark Streaming三个组件,其应用开发流程相同。 开发流程中各阶段的说明如图1和表1所示。 图1 Spark应用程序开发流程 表1 Spark应用开发的流程说明 阶段 说明 参考文档 了解基本概念 在开始开发应用前,需要了解Spark的基本概念,根据实际场景选择需要了解的概念,分为Spark Core基本概念、Spark SQL基本概念和Spark Streaming基本概念。 Spark应用开发常用概念 准备开发环境 Spark的应用程序支持使用Scala、Java、Python三种语言进行开发。推荐使用IDEA工具,请根据指导完成不同语言的开发环境配置。 请参考准备Spark应用Java开发环境至准备Spark应用Python开发环境章节 准备运行环境 Spark的运行环境即Spark客户端,请根据指导完成客户端的安装和配置。 准备Spark应用运行环境 获取并导入样例工程 或者新建工程 Spark提供了不同场景下的样例程序,您可以导入样例工程进行程序学习。或者您可以根据指导,新建一个Spark工程。 导入并配置Spark样例工程 根据场景开发工程 提供了Scala、Java、Python三种不同语言的样例工程,还提供了Streaming、SQL、JDBC客户端程序以及Spark on HBase四种不同场景的样例工程。帮助用户快速了解Spark各部件的编程接口。 请参考场景说明至Scala样例代码章节 编译并运行程序 指导用户将开发好的程序编译并提交运行。 编包并运行Spark应用 查看程序运行结果 程序运行结果会写在用户指定的路径下。用户还可以通过UI查看应用运行情况。 查看Spark应用调测结果 调优程序 您可以根据程序运行情况,对程序进行调优,使其性能满足业务场景诉求。 调优完成后,请重新进行编译和运行 请参考数据序列化至Spark CBO调优章节 父主题: Spark应用开发概述
  • 问题 执行Spark Core应用,尝试收集大量数据到Driver端,当Driver端内存不足时,应用挂起不退出,日志内容如下。 16/04/19 15:56:22 ERROR Utils: Uncaught exception in thread task-result-getter-2 java.lang.OutOfMemoryError: Java heap space at java.lang.reflect.Array.newArray(Native Method) at java.lang.reflect.Array.newInstance(Array.java:75) at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1671) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1345) at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2000) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1924) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351) at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2000) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1924) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351) at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1707) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1345) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:371) at org.apache.spark.serializer.JavaDeserializationStream.readObject(JavaSerializer.scala:71) at org.apache.spark.serializer.JavaSerializerInstance.deserialize(JavaSerializer.scala:91) at org.apache.spark.scheduler.DirectTaskResult.value(TaskResult.scala:94) at org.apache.spark.scheduler.TaskResultGetter$$anon$3$$anonfun$run$1.apply$mcV$sp(TaskResultGetter.scala:66) at org.apache.spark.scheduler.TaskResultGetter$$anon$3$$anonfun$run$1.apply(TaskResultGetter.scala:57) at org.apache.spark.scheduler.TaskResultGetter$$anon$3$$anonfun$run$1.apply(TaskResultGetter.scala:57) at org.apache.spark.util.Utils$.logUncaughtExceptions(Utils.scala:1716) at org.apache.spark.scheduler.TaskResultGetter$$anon$3.run(TaskResultGetter.scala:56) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Exception in thread "task-result-getter-2" java.lang.OutOfMemoryError: Java heap space at java.lang.reflect.Array.newArray(Native Method) at java.lang.reflect.Array.newInstance(Array.java:75) at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1671) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1345) at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2000) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1924) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351) at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2000) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1924) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351) at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1707) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1345) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:371) at org.apache.spark.serializer.JavaDeserializationStream.readObject(JavaSerializer.scala:71) at org.apache.spark.serializer.JavaSerializerInstance.deserialize(JavaSerializer.scala:91) at org.apache.spark.scheduler.DirectTaskResult.value(TaskResult.scala:94) at org.apache.spark.scheduler.TaskResultGetter$$anon$3$$anonfun$run$1.apply$mcV$sp(TaskResultGetter.scala:66) at org.apache.spark.scheduler.TaskResultGetter$$anon$3$$anonfun$run$1.apply(TaskResultGetter.scala:57) at org.apache.spark.scheduler.TaskResultGetter$$anon$3$$anonfun$run$1.apply(TaskResultGetter.scala:57) at org.apache.spark.util.Utils$.logUncaughtExceptions(Utils.scala:1716) at org.apache.spark.scheduler.TaskResultGetter$$anon$3.run(TaskResultGetter.scala:56) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)
  • 回答 用户尝试收集大量数据到Driver端,如果Driver端的内存不足以存放这些数据,那么就会抛出OOM(OutOfMemory)的异常,然后Driver端一直在进行GC,尝试回收垃圾来存放返回的数据,导致应用长时间挂起。 解决措施: 如果用户需要在OOM场景下强制将应用退出,那么可以在启动Spark Core应用时,在客户端配置文件“$SPARK_HOME/conf/spark-defaults.conf”中的配置项“spark.driver.extraJavaOptions”中添加如下内容: -XX:OnOutOfMemoryError='kill -9 %p'
  • 样例代码 -- 查看薪水支付币种为美元的雇员联系方式. SELECT a.name, b.tel_phone, b.email FROM employees_info a JOIN employees_contact b ON(a.id = b.id) WHERE usd_flag='D'; -- 查询入职时间为2014年的雇员编号、姓名等字段,并将查询结果加载进表employees_info_extended中的入职时间为2014的分区中. INSERT OVERWRITE TABLE employees_info_extended PARTITION (entrytime = '2014') SELECT a.id, a.name, a.usd_flag, a.salary, a.deductions, a.address, b.tel_phone, b.email FROM employees_info a JOIN employees_contact b ON (a.id = b.id) WHERE a.entrytime = '2014'; -- 使用Impala中已有的函数COUNT(),统计表employees_info中有多少条记录. SELECT COUNT(*) FROM employees_info; -- 查询使用以“cn”结尾的邮箱的员工信息. SELECT a.name, b.tel_phone FROM employees_info a JOIN employees_contact b ON (a.id = b.id) WHERE b.email like '%cn';
  • 操作步骤 打开IDEA工具,选择“Create New Project”。 图1 创建工程 在“New Project”页面,选择“Scala”开发环境,并选择“Scala Module”,然后单击“Next”。如果您需要新建Java语言的工程,选择对应参数即可。 图2 选择开发环境 在工程信息页面,填写工程名称和存放路径,设置JDK版本,并勾选“Config later”(待工程创建完毕后引入scala的编译库文件),然后单击“Finish”完成工程创建。 图3 填写工程信息
  • 修订记录 发布日期 修订记录 2024-06-19 第八次正式发布。 新增运维中心对接华为云 WeLink 修改如下章节: 设置事件单 语音值班配置 运维事件管理 发送事件通报 创建WarRoom通知 2024-06-07 第七次正式发布。 新增工单管理 2024-05-30 第六次正式发布。 新增纳管 堡垒机 修改如下章节: 纳管主机 弹性云服务器 2024-05-06 第五次正式发布。 修改如下章节: 纳管集群 为集群安装插件 纳管主机 2024-04-25 第四次正式发布。 新增 CES 数据管理 2024-03-30 第三次正式发布。 新增如下章节: 纳管VPC 查看OpsAgent历史任务 修改如下章节: 弹性云服务器 纳管主机 2024-02-20 第二次正式发布。 新增如下章节: 网络规划 安全规划 2023-11-25 第一次正式发布。
  • SDK列表 表1 KMS-SDK列表、表2 KPS-SDK列表、表3 CS MS-SDK列表提供了 数据加密 服务支持的SDK列表,您可以在GitHub仓库查看SDK更新历史、获取安装包以及查看指导文档。 表1 KMS-SDK列表 编程语言 Github地址 参考文档 安装方式 Java huaweicloud-sdk-java-v3 Java SDK使用指导 Java SDK安装指导 Python huaweicloud-sdk-python-v3 Python SDK使用指导 Python SDK安装指导 Go huaweicloud-sdk-go-v3 Go SDK使用指导 Go SDK安装指导 .NET huaweicloud-sdk-net-v3 .Net SDK使用指导 .NET SDK安装指导 NodeJs huaweicloud-sdk-nodejs-v3 NodeJs SDK使用指导 NodeJs SDK安装指导 PHP huaweicloud-sdk-php-v3 PHP SDK使用指导 PHP SDK安装指导 C++ huaweicloud-sdk-cpp-v3 C++ SDK使用指导 C++ SDK安装指导 表2 KPS-SDK列表 编程语言 Github地址 参考文档 安装方式 Java huaweicloud-sdk-java-v3 Java SDK使用指导 Java SDK安装指导 Python huaweicloud-sdk-python-v3 Python SDK使用指导 Python SDK安装指导 Go huaweicloud-sdk-go-v3 Go SDK使用指导 Go SDK安装指导 .NET huaweicloud-sdk-net-v3 .Net SDK使用指导 .NET SDK安装指导 NodeJs huaweicloud-sdk-nodejs-v3 NodeJs SDK使用指导 NodeJs SDK安装指导 PHP huaweicloud-sdk-php-v3 PHP SDK使用指导 PHP SDK安装指导 表3 C SMS -SDK列表 编程语言 Github地址 参考文档 安装方式 Java huaweicloud-sdk-java-v3 Java SDK使用指导 Java SDK安装指导 Python huaweicloud-sdk-python-v3 Python SDK使用指导 Python SDK安装指导 Go huaweicloud-sdk-go-v3 Go SDK使用指导 Go SDK安装指导 .NET huaweicloud-sdk-net-v3 .Net SDK使用指导 .NET SDK安装指导 NodeJs huaweicloud-sdk-nodejs-v3 NodeJs SDK使用指导 NodeJs SDK安装指导 PHP huaweicloud-sdk-php-v3 PHP SDK使用指导 PHP SDK安装指导 C++ huaweicloud-sdk-cpp-v3 C++ SDK使用指导 C++ SDK安装指导
  • 查看 问答机器人 购买的机器人,会显示在您 对话机器人服务 控制台中, 智能问答机器人 的列表里。在问答机器人列表右上角,您可以选择机器人状态筛选您购买的机器人,或者输入名称关键字,单击进行查找。对于包年包月的机器人,可以进行机器人管理、续费、规格修改。 机器人管理:进入机器人配置界面,给机器人创建问答语料、问答训练、创建技能、创建词典、高级设置、查看机器人运营数据等。 续费:可以在现有规格上,继续购买使用时长。 规格修改:可以修改当前使用规格,只支持升级规格,不支持规格降级。升级规格会根据剩余可用时长折算费用。 图4 查看问答机器人
  • 购买问答接口调用套餐(可选) 购买问答机器人后,调用机器人接口默认按调用次数计费。当前开放接口调用套餐,其费用比单次调用计费优惠,推荐您在购买机器人之后,同时购买问答接口调用套餐。 在CBS服务管理控制台中,在左侧导航栏中选择“智能问答机器人”,然后单击右上角的“购买问答接口调用套餐”。 进入购买问答接口调用套餐页面,填写机器人相关信息。界面下方将显示费用参考。 调用次数:当前支持“10万次”、“100万次”、“1000万次”、“6000万次”、“1亿次”、“3亿次”的规格,建议您根据自身业务需求进行购买。 套餐包有效期:1年。 图3 购买问答接口调用套餐 单击右下角“立即购买”,进入“订单确定”页面。 在“订单确定”页面,确认订单详情无误之后,单击“去支付”完成购买。
  • 购买问答机器人 进入CBS服务管理控制台,在左侧导航栏中选择“智能问答机器人”,然后单击右上角的“购买问答机器人”。 进入购买问答机器人页面,填写机器人相关信息。界面下方将显示购买机器人的费用参考。 图1 购买问答机器人 问答机器人名称:可以作为机器人的唯一标识。由大小写字母、数字、汉字及部分特殊(“_”、“-”、“#”)字符组成,长度为1~63位,如“ 对话机器人 demo1”。 计费模式:当前提供包年包月模式。 包年包月:按时间维度购买机器人。支持自动续费,续费周期与原订单一致。 自动续费:勾选后,机器人到期后自动续费,自动续费周期与原订单周期一致。 规格:当前提供基础版、高级版、专业版、旗舰版四种规格。 基础版:适用于个人,小型企业简单FAQ对话场景。包括以下功能模块: 运营数据统计、知识库管理、问答日志管理、未解决问题聚类、机器人形象管理、同义词典管理。 高级版:适合企业高并发,场景多,需要更高准确率的场景。包括以下功能模块: 包含基础版所有功能,以及问答标签管理、问答模型训练管理。 专业版:适合企业复杂对话流程,需要多轮对话的场景。包括以下功能模块: 包含高级版所有功能,以及多轮技能管理、知识共享、应用授权。 旗舰版:适用于对机器人答准率有高要求,数据样本大的场景。包括以下功能模块:包含专业版所有功能,以及重量级深度学习模型训练。 路数:表示这个机器人可以同时进行n路对话,即能够同时和n个用户对话。您可以根据自己业务量大小决定路数多少。 机器人有效期:可以设置机器人的使用时长。 单击右下角“立即购买”,进入“订单确定”页面。 在“订单确定”页面,确认订单详情无误之后,单击“去支付”完成问答机器人购买。 在问答机器人列表中,刚购买的问答机器人显示状态为“创建中”,待机器人创建完成,状态将自动变更为“可用”状态。如下图所示。 图2 问答机器人列表
  • 使用限制 使用DIS前,您需要认真阅读并了解以下使用限制。 建议使用支持的浏览器登录DIS。 Google Chrome:48.0及更高版本 Mozilla FireFox:43.0及更高版本 Internet Explorer:9.0及更高版本 当使用Internet Explorer 9.0时可能无法登录DIS管理控制台,原因是某些Windows系统例如Win7旗舰版,默认禁止Administrator用户,Internet Explorer在安装时自动选择其他用户如System用户安装,从而导致Internet Explorer无法打开登录页面。请使用管理员身份重新安装Internet Explorer 9.0或更高版本(建议),或尝试使用管理员身份运行Internet Explorer 9.0。 用户使用接入通道上传数据的时候,如果数据涉及敏感信息,请使用DIS SDK提供的加密配置进行加密或者自行加密。 用户使用接入通道上传数据时,普通通道单分区单次请求的记录总大小不能超过1MB(不包含partitionKey数据大小),高级通道单分区单次请求的记录总大小不能超过5MB(不包含partitionKey数据大小)。
  • 操作步骤 使用注册账户登录DIS控制台。 单击管理控制台左上角的,选择区域和项目。 单击“购买接入通道”配置相关参数。 表1 接入通道参数说明 参数 参数解释 参数示例 计费模式 按需计费 按需计费 区域 指的是云服务所在的物理位置。您可以在下拉框中选择并切换区域。 华北-北京1 基本信息 通道名称 用户发送或者接收数据时,需要指定通道名称,通道名称不可重复。通道名称由英文字母、数字、中划线和下划线组成。长度为1~64个字符。 dis-Tido 通道类型 普通通道单分区容量:最高发送速度可达1MB/秒或1000条记录/秒(达到任意一种速度上限才会被限流),最高提取速度可达 2MB/秒,单次请求的记录总大小不能超过1MB(不包含partitionKey数据大小)。 高级通道单分区容量:最高发送速度可达 5MB/秒或2000条记录/秒(达到任意一种速度上限才会被限流),最高提取速度可达 10MB/秒,单次请求的记录总大小不能超过5MB(不包含partitionKey数据大小) - 分区数量 分区是DIS数据通道的基本吞吐量单位。 5 分区计算 用户可以根据实际需求通过系统计算得到一个建议的分区数量值。 单击“分区计算”,弹出“计算所需分区数量”对话框。 根据实际需求填写“平均记录大小”、“最大写入记录数”和“消费程序数量”,“预估所需分区数量”选项框中将显示所需的分区数量,此值不可修改。 说明: 所需分区计算公式: 按流量计算所需写分区数:(所得数值需向上取整后作为分区数) 普通通道:平均记录大小*(1+分区预留比例20%)*最大写入记录数/(1*1024KB) 高级通道:平均记录大小*(1+分区预留比例20%)*最大写入记录数/(5*1024KB) 按消费程序数量计算读分区数:(消费程序数量/2后的数值需要保留两位小数,然后乘以“按流量计算所需写分区数”,最终取值需向上取整) (消费程序数量/2)*按流量计算所需的写分区数 获取“按流量计算所需写分区数”、“按消费程序数量计算读分区数”中的最大值作为预估所需分区数量。 单击“使用计算值”将系统计算出的建议值应用于“分区数量”。 - 生命周期(小时) 存储在DIS中的数据保留的最长时间,超过此时长数据将被清除。 取值范围:24~72的整数。 24 源数据类型 BLOB:存储在数据库管理系统中的一组二进制数据。“源数据类型”选择“BLOB”,则支持的“转储服务类型”为“OBS”、“MRS”。 JSON:一种开放的文件格式,以易读的文字为基础,用来传输由属性值或者序列性的值组成的数据对象。“源数据类型”选择“JSON”,则支持的“转储服务类型”为“OBS”、“MRS”、“ DLI ”和“DWS”。 CSV:纯文本形式存储的表格数据,分隔符默认采用逗号。 “源数据类型”选择“CSV”,则支持的“转储服务类型”为“OBS”、“MRS”、“DLI”、“DWS”。 JSON 自动扩缩容 创建通道的同时是否开启自动扩缩容功能。 通过单击通过单击或来关闭或开启自动扩缩容开关。 说明: 用户可在创建通道时定义是否自动扩缩容,也可对已创建的通道修改自动扩缩容属性。 自动缩容最小分区数 设置自动缩容的分区下限,自动缩容的目标分区数不小于下限值。 - 自动扩容最大分区数 设置自动扩容的分区上限,自动扩容的目标分区数不超过上限值。 - 源数据分隔符 源数据为CSV格式时的数据分隔符。 - Schema开关 创建通道的同时是否为其创建数据Schema。源数据类型为JSON或CSV时可配置该参数。 通过单击或来关闭或开启Schema配置开关。 说明: 若创建通道时,没有同时创建数据Schema,可待通道创建成功后。到通道的管理页面创建数据Schema,详情请参见管理源数据Schema。 “源数据类型”为“JSON”和“CSV”时,可选择创建数据Schema。 源数据Schema 支持输入和导入源数据样例,源数据样例格式为JSON或者CSV,详细操作请参见管理源数据Schema。 在左侧文本框中输入JSON或者CSV格式的源数据样例,也可单击导入源数据样例。 在左侧文本框中单击,可删除左侧文本框中已输入或导入的源数据样例。 在左侧文本框中单击,可在右侧文本框中根据源数据样例生成Avro schema。 在右侧文本框中单击,可删除已生成的Avro schema。 在右侧文本框中单击,可修改已生成的Avro schema。 仅当“Schema配置开关”配置为“开启”:时需要配置此参数。 企业项目 配置通道所属的企业项目。已开通企业项目管理服务的用户才可以配置该参数。默认值为default。 企业项目是一种云资源管理方式,企业项目管理服务提供统一的云资源按项目管理,以及项目内的资源管理、成员管理。 您可以选择默认的企业项目“default”或其他已有的企业项目。如果要创建新的企业项目,请登录企业管理控制台进行创建,详细操作请参考《企业管理用户指南》。 - 现在配置 单击“现在配置”,呈现添加标签。 添加标签具体请参考管理通道标签。 - 暂不配置 暂不配置任何信息。 - 标签 标签是通道的标识。为通道添加标签,可以方便用户识别和管理拥有的通道资源。 - 单击“立即购买”,弹出“规格确认”页面。 单击“提交”,完成通道接入。
  • Doris建表建议 单表物化视图不能超过6个,物化视图不建议嵌套,不建议数据写入时通过物化视图进行重型聚合和Join计算等ETL任务。 对于有大量历史分区数据,但是历史数据比较少,或者数据不均衡,或者数据查询概率较小的情况,可以创建历史分区(比如年分区,月分区),将所有历史数据放到对应分区里。 创建历史分区方式为:FROM ("2000-01-01") TO ("2022-01-01") INTERVAL 1 YEAR 1千万~2亿以内数据为了方便可以不设置分区(Doris内部有一个默认分区),直接用分桶策略即可。 如果分桶字段存在30%以上的数据倾斜,则禁止使用Hash分桶策略,改为使用Random分桶策略,相关命令为: Create table ... DISTRIBUTED BY RANDOM BUCKETS 10 ... 建表时第一个字段一定是最常查询使用的列,默认有前缀索引快速查询能力,选取最常查询且高基数的列作为前缀索引,默认将一行数据的前36个字节作为这行数据的前缀索引(varchar类型的列只能匹配20个字节,并且会匹配不足36个字节截断前缀索引) 。 超过亿级别的数据,如果有模糊匹配或者等值/in条件,可以使用倒排索引(Doris 2.x版本开始支持)或者Bloomfilter。如果是低基数列的正交查询适合使用bitmap索引(bitmap索引的基数在10000~100000之间效果较好)。 建表时需要提前规划将来要使用的字段个数,可以多预留几十个字段,类型包括整型、字符型等。避免将来字段不够使用,需要较高代价临时去添加字段。
  • Doris建表规则 在创建Doris表指定分桶buckets时,每个桶的数据大小应保持在100MB~3GB之间,单分区中最大分桶数量不超过5000。 表数据超过5亿条以上必须设置分区分桶策略。 表的分桶列不要设置太多,一般情况下设置1或2个列即可,同时需要兼顾数据分布均匀和查询吞吐均衡。 数据均匀是为了避免某些桶的数据存在倾斜影响数据均衡和查询效率。 查询吞吐利用查询SQL的分桶剪裁优化避免了全桶扫描,以提升查询性能。 分桶列的选取:优先考虑数据较为均匀且常用于查询条件的列作为分桶列。 可使用以下方法分析是否会导致数据倾斜: SELECT a, b, COUNT(*) FROM tab GROUP BY a,b; 命令执行后查看各个分组的数据条数是否相差不大,如果相差超过2/3或1/2,则需要重新选择分桶字段。 2千万以内数据禁止使用动态分区。动态分区会自动创建分区,而小表用户关注不到,会创建出大量不使用的分区分桶。 创建表时,排序键key不能太多,一般建议3~5个;太多key会导致数据写入较慢,影响数据导入性能。 不使用Auto Bucket,需按照已有的数据量来进行分区分桶,能更好的提升导入及查询性能。Auto Bucket会造成Tablet数量过多,最终导致有大量的小文件。 创建表时的副本数必须至少为2,默认是3,禁止使用单副本。 没有聚合函数列的表不应该被创建为AGGREGATE表。 创建主键表时需保持主键的列唯一,不建议将所有列都设置为主键列,且主键表需设置value列。主键表不建议用于数据去重场景。
  • 代码示例 本示例用于获取examplebucket并行文件系统中的目录Dirname的accesslabel 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 import com.obs.services.ObsClient; import com.obs.services.exception.ObsException; import com.obs.services.model.fs.accesslabel.* public class GetAccessLabel{ public static void main(String[] args) { // 您可以通过环境变量获取访问密钥AK/SK,也可以使用其他外部引入方式传入。如果使用硬编码可能会存在泄露风险。 // 您可以登录访问管理控制台获取访问密钥AK/SK String ak = System.getenv("ACCESS_KEY_ID"); String sk = System.getenv("SECRET_ACCESS_KEY_ID"); // 【可选】如果使用临时AK/SK和SecurityToken访问OBS,同样建议您尽量避免使用硬编码,以降低信息泄露风险。 // 您可以通过环境变量获取访问密钥AK/SK/SecurityToken,也可以使用其他外部引入方式传入。 // String securityToken = System.getenv("SECURITY_TOKEN"); // endpoint填写桶所在的endpoint, 此处以华北-北京四为例,其他地区请按实际情况填写。 String endPoint = "https://obs.cn-north-4.myhuaweicloud.com"; // 您可以通过环境变量获取endPoint,也可以使用其他外部引入方式传入。 //String endPoint = System.getenv("ENDPOINT"); // 创建ObsClient实例 // 使用永久AK/SK初始化客户端 ObsClient obsClient = new ObsClient(ak, sk,endPoint); // 使用临时AK/SK和SecurityToken初始化客户端 // ObsClient obsClient = new ObsClient(ak, sk, securityToken, endPoint); try { //获取目录accesslabel GetAccessLabelRequest request = new GetAccessLabelRequest(); request.setBucketName("examplebucket"); request.setDir("Dirname"); GetAccessLabelRequest result = obsClient.GetAccessLabelRequest(request); System.out.println("GetAccessLabel successfully"); System.out.println("HTTP Code: " + result.getStatusCode()); } catch (ObsException e) { System.out.println("GetAccessLabel failed"); // 请求失败,打印http状态码 System.out.println("HTTP Code:" + e.getResponseCode()); // 请求失败,打印服务端错误码 System.out.println("Error Code:" + e.getErrorCode()); // 请求失败,打印详细错误信息 System.out.println("Error Message:" + e.getErrorMessage()); // 请求失败,打印请求id System.out.println("Request ID:" + e.getErrorRequestId()); System.out.println("Host ID:" + e.getErrorHostId()); e.printStackTrace(); } catch (Exception e) { System.out.println("GetAccessLabel failed"); // 其他异常信息打印 e.printStackTrace(); } } }
  • 请求参数说明 表1 请求参数列表 参数名称 参数类型 是否必选 描述 request GetAccessLabelRequest 必选 参数解释: 请求参数,详见GetAccessLabelRequest。 表2 GetAccessLabelRequest 参数名称 参数类型 是否可选 描述 bucketName String 必选 参数解释: 并行文件系统名。 约束限制: 并行文件系统的名字需全局唯一,不能与已有的任何并行文件系统名称重复,包括其他用户创建的并行文件系统。 并行文件系统命名规则如下: 3~63个字符,数字或字母开头,支持小写字母、数字、“-”、“.”。 禁止使用IP地址。 禁止以“-”或“.”开头及结尾。 禁止两个“.”相邻(如:“my..bucket”)。 禁止“.”和“-”相邻(如:“my-.bucket”和“my.-bucket”)。 同一用户在同一个区域多次创建同名并行文件系统不会报错,创建的并行文件系统属性以第一次请求为准。 默认取值: 无 Dir String 必选 参数解释: 目录名。对象名是对象在存储并行文件系统中的唯一标识。目录名是并行文件系统中目录的路径,路径中不包含并行文件系统名。 例如,您对象的访问地址为examplebucket.obs.cn-north-4.myhuaweicloud.com/folder/test.txt 中,对象名为folder/test.txt。 取值范围: 长度大于0且不超过1024的字符串。 默认取值: 无
共100000条