华为云用户手册

  • 登录 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建表规则 在创建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列。主键表不建议用于数据去重场景。
  • 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之间效果较好)。 建表时需要提前规划将来要使用的字段个数,可以多预留几十个字段,类型包括整型、字符型等。避免将来字段不够使用,需要较高代价临时去添加字段。
  • 代码示例 本示例用于获取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的字符串。 默认取值: 无
  • 接口约束 建议使用 IAM 或策略进行授权,如果使用IAM则需授予obs:bucket:GetAccessLabel权限。相关授权方式介绍可参见OBS权限控制概述,配置方式详见使用IAM自定义策略、配置对象策略。 OBS支持的region以及region与endPoint的对应关系,详细信息请参见地区与终端节点。 目前接口仅在并行文件系统支持,普通对象桶不支持,如何创建并行文件系统请参考创建并行文件系统(Java SDK)。 仅支持并行文件系统的目录级别的设置,并行文件系统级和文件级均不支持。
  • 请求参数说明 表1 请求参数列表 参数名称 参数类型 是否必选 描述 request DeleteAccessLabelRequest 必选 参数解释: 请求参数,详见DeleteAccessLabelRequest。 表2 DeleteAccessLabelRequest 参数名称 参数类型 是否可选 描述 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的字符串。 默认取值: 无
  • 代码示例 本示例用于删除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 DeleteAccessLabel{ 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 DeleteAccessLabelRequest request = new DeleteAccessLabelRequest(); request.setBucketName("examplebucket"); request.setDir("Dirname"); DeleteAccessLabelRequest result = obsClient.DeleteAccessLabelRequest(request); System.out.println("DeleteAccessLabel successfully"); System.out.println("HTTP Code: " + result.getStatusCode()); } catch (ObsException e) { System.out.println("DeleteAccessLabel 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("DeleteAccessLabel failed"); // 其他异常信息打印 e.printStackTrace(); } } }
  • 接口约束 建议使用IAM或策略进行授权,如果使用IAM则需授予obs:bucket:DeleteAccessLabel权限。相关授权方式介绍可参见OBS权限控制概述,配置方式详见使用IAM自定义策略、配置对象策略。 OBS支持的region以及region与endPoint的对应关系,详细信息请参见地区与终端节点。 目前接口仅在并行文件系统支持,普通对象桶不支持,如何创建并行文件系统请参考创建并行文件系统(Java SDK)。 仅支持并行文件系统的目录级别的设置,并行文件系统级和文件级均不支持。
  • 接口约束 建议使用IAM或策略进行授权,如果使用IAM则需授予obs:bucket:PutAccessLabel权限。相关授权方式介绍可参见OBS权限控制概述,配置方式详见使用IAM自定义策略、配置对象策略。 OBS支持的region以及region与endPoint的对应关系,详细信息请参见地区与终端节点。 目前接口仅在并行文件系统支持,普通对象桶不支持,如何创建并行文件系统请参考创建并行文件系统(Java SDK)。 仅支持并行文件系统的目录级别的设置,并行文件系统级和文件级均不支持。 用户需要具有“PutAccessLabel”权限才能设置对象AccessLabel。
  • 步骤一:购买Flexus应用服务器 L实例 登录Flexus应用服务器L实例控制台。 单击“购买Flexus L实例”,在下拉列表中选择“购买 Flexus应用服务器L实例”。 对Flexus应用服务器L实例进行资源配置。 参数 示例 说明 区域 北京-北京四 请就近选择靠近您业务的区域,可减少网络时延,提高访问速度。Flexus应用服务器L实例创建后无法更换区域,请谨慎选择。 场景镜像 Redmine 选择Redmine应用镜像。 实例规格 2核2G、系统盘40GiB 选择实例规格。 实例名称 Redmine-Example 请自定义方便您识别的实例名称,例如Redmine-Example。 您可能需要(可选) 数据盘:10GiB 主机安全 云备份:50GiB 请根据您的业务需要自主选择数据盘、主机安全、云备份附加服务并设置规格。 购买时长 1个月 单次购买最短为1个月,最长为3年。 Flexus应用服务器L实例支持自动续费功能。勾选后,在Flexus应用服务器L实例到期前自动续费。如果您购买时未开通自动续费,后续仍可以在控制台开通。按月购买的L实例每次续费1个月 ,次数不限。 关于自动续费的更多说明,请参考自动续费规则说明。 购买数量 1台 设置您购买的Flexus应用服务器L实例数量。 单击“立即购买”,进入订单详情页面。 根据界面提示,请确认配置信息,阅读并勾选协议。 单击“去支付”,根据页面提示完成支付。 单击“返回华为云Flexus云服务控制台”,查看已创建的Flexus应用服务器L实例。
  • 步骤二:配置安全组 配置安全组的入方向访问规则,放通80、443、9000、9001端口,确保可以正常访问应用。 在Flexus应用服务器L实例控制台,单击资源卡片,进入资源页面。 在左侧列表中选择“云主机 VM”,单击云主机名称,进入云主机详情页面。 选择“安全组”页签,单击“添加规则”,添加如下规则。 本例只添加基本规则,您可根据需要添加更多规则。 表1 安全组规则 优先级 策略 类型 协议端口 源地址 描述 1 允许 IPv4 TCP:80 0.0.0.0/0 应用内部转发端口。 1 允许 IPv4 TCP:443 0.0.0.0/0 允许访问HTTPS协议访问应用。 1 允许 IPv4 TCP:9000 0.0.0.0/0 允许外部访问应用的运维面板。 1 允许 IPv4 TCP:9001 0.0.0.0/0 允许外部访问应用的管理页面。
  • 步骤三:初始化Redmine 获取应用管理页面的管理员用户名及密码。 在本地浏览器输入“http://公网IP:9000”登录应用镜像运维面板。 登录运维面板的用户名密码为L实例的root用户名及密码。L实例默认没有初始密码,如果您尚未重置密码或遗忘了密码,请重置密码后,使用此密码登录运维面板。 重置密码前,请先根据本小节步骤2查看应用镜像管理页面是否能正常显示。请务必在管理页面正常显示后,再重置密码,否则管理页面将无法正常登录。 选择“我的应用”,单击应用图标。 选择“访问”,单击“初始账号”查看管理员用户名密码。 初始密码为随机生成的高强度密码,不便于记忆。初始化应用后,请及时在管理页面更改为便于记忆的密码以便管理。密码修改后,初始密码将失效,因此请牢记修改后的密码。 在服务器“概览”页“镜像信息”中,单击“管理”登录管理页面。 单击右上角“登录”,在弹出的登录界面上输入步骤1获取的初始用户名及密码,击“登录”。 进入管理页面后,请根据提示修改密码,单击“应用”。 密码修改后,初始密码将失效,因此请牢记修改后的密码。 至此,您已获得一台完备的Redmine应用L实例,接下来您即可在管理页面部署应用。
  • 资源和成本规划 资源 资源配置 说明 云主机 CPU:2核 内存:2GB Redmine应用镜像运行的最低配置为2核2GB,您可根据您的业务需求选择Flexus应用服务器L实例规格。 镜像 Redmine 选择Redmine应用镜像。 安全组 入方向规则: 协议/应用:TCP 端口:80、443、9000、9001 源地址:0.0.0.0/0 80:应用内部转发端口。 443:允许使用HTTPS协议访问云服务器。 9001:允许外部访问应用的管理页面。 9000:允许外部访问应用镜像的运维面板。
共100000条