华为云用户手册

  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token。 用于获取操作API的权限。 获取Token 接口响应消息头中X-Subject-Token的值即为Token。 Content-Type 是 String 消息体的类型(格式),参数值为“application/json”。 表3 请求Body参数 参数 是否必选 参数类型 说明 session_id 是 String 会话ID,由任意字符串组成,由用户自定义产生,用来区分不同的会话。 具体获取方式请参见开启会话章节。 user_id 否 String 用户ID,用来区分唯一用户信息。 question 是 String 用户问题。 extends 否 Extends object 扩展参数项。 threshold_enable 否 Boolean true:启动内部阈值,返回经过阈值处理之后的答案。 false:不启用内部阈值,返回原答案。 chat_enable 否 Boolean 默认true true:使用内部闲聊语料进行兜底。 false:不使用闲聊兜底。 operate_type 否 Integer 调用接口时候传入,用以标记的问答的行为,默认为0,最终会展示在问答日志里。 0 用户输入 1 单击热点问题 3 单击推荐问题 4 单击问题提示 表4 Extends 参数 是否必选 参数类型 描述 domains 否 Array of strings 领域列表,多个领域用分号隔开。如果设置了领域且领域不为空,就从这些领域中匹配答案,否则就从该用户的全部知识库匹配答案。 当前最多支持10个领域。 top 否 Integer 返回答案数量,默认为5,取值范围1~10。
  • 响应消息 状态码: 200 表5 响应Body参数 参数 参数类型 描述 request_id String 请求ID。 调用失败时无此字段。 question String 问题。 调用失败时无此字段。 answers Array of Answers objects 最相似的问题集。调用失败时无此字段。 extends Extends object 扩展参数项。调用失败时无此字段。 表6 Answers 参数 参数类型 描述 qa_pair_id String 问答对ID。 st_question String 标准问题。 ex_questions Array of ExQuestions objects 扩展问。 answer String 答案。 score Float 相似度得分,精确到小数点后3位。 domain String 问题类别。 表7 ExQuestions 参数 参数类型 描述 content String 扩展问题。 表8 Extends 参数 是否必选 参数类型 描述 domains 否 Array of strings 领域列表,多个领域用分号隔开。如果设置了领域且领域不为空,就从这些领域中匹配答案,否则就从该用户的全部知识库匹配答案。 当前最多支持10个领域。 top 否 Integer 返回答案数量,默认为5,取值范围1~10。 状态码: 400 表9 响应Body参数 参数 参数类型 描述 error_code String 调用失败时的错误码。 调用成功时无此字段。 error_msg String 调用失败时的错误信息。 调用成功时无此字段。
  • URI POST https://{endpoint}/v1/{project_id}/qabots/{qabot_id}/requests 表1 路径参数 参数 是否必选 参数类型 描述 endpoint 是 String 终端节点,即调用API的请求地址。 不同服务不同区域的endpoint不同,您可以从终端节点中获取。 例如,CBS服务在“华北-北京四”区域的“endpoint”为“cbs-ext.cn-north-4.myhuaweicloud.com”。 project_id 是 String 项目ID,用于资源隔离。请参见获取项目ID。 qabot_id 是 String qabot编号,UUID格式,如:303a0a00-c88a-43e3-aa2f-d5b8b9832b02。 进入 问答机器人 的Console界面,在“机器人名称/ID”列显示对应的qabot_id。
  • 调用API获取项目ID 项目ID还可以通过调用查询指定条件下的项目信息API获取。 获取项目ID的接口为“GET https://{Endpoint}/v3/projects”,其中{Endpoint}为 IAM 的终端节点,可以从地区和终端节点获取。接口的认证鉴权请参见认证鉴权。 响应示例如下,例如, 对话机器人服务 部署的区域为“cn-north-4”,响应消息体中查找“name”为“cn-north-4”,其中projects下的“id”即为项目ID。 { "projects": [ { "domain_id": "65382450e8f64ac0870cd180d14e684b", "is_domain": false, "parent_id": "65382450e8f64ac0870cd180d14e684b", "name": "project_name", "description": "", "links": { "next": null, "previous": null, "self": "https://www.example.com/v3/projects/a4a5d4098fb4474fa22cd05f897d6b99" }, "id": "a4a5d4098fb4474fa22cd05f897d6b99", "enabled": true } ], "links": { "next": null, "previous": null, "self": "https://www.example.com/v3/projects" } }
  • 错误码说明 当您调用API时,如果遇到“APIGW”开头的错误码,请参见API网关错误码进行处理。 表1 错误码 状态码 错误码 错误信息 处理措施 401 CBS.0000 用户无公测权限。 请根据界面提示,申请公测权限。 401 CBS.0011 认证失败。 检查Token是否正确,使用正确的Token重新尝试。 401 CBS.0012 认证信息缺失。 补全正确的认证信息后重新尝试。 401 CBS.0013 认证信息获取失败。 检查Token是否正确,使用正确的Token重新尝试。 400 CBS.0021 请求参数异常。 检查请求参数字段名,修改正确后重新尝试。 400 CBS.0022 请求参数内容错误。 检查请求参数内容,修改正确后重新尝试。 500 CBS.9999 db error。 服务后台错误,请联系专业工程师。 500 CBS.9998 iam error。 服务后台错误,请联系专业工程师。 500 CBS.9997 lab内部有core异常。 服务后台错误,请联系专业工程师。 400 CBS.1114 服务未开通。 按根据界面提示开通或购买服务。 400 CBS.1124 服务开通失败。 检查是否符合服务开通条件,然后重新尝试。 500 CBS.1134 请求下发失败。 服务后台错误,请联系专业工程师。 500 CBS.0031 内部服务异常。 服务后台错误,请联系专业工程师。 500 CBS.0032 ES资源不存在。 服务后台错误,请联系专业工程师。 400 CBS.1214 查询的数据集资源不存在。 检查数据集id是否正确,使用正确的id重新尝试。 400 CBS.1611 OBS访问失败。 确认OBS认证信息是否正确,使用正确的认证信息重新尝试。 400 CBS.1612 OBS资源不存在。 确认OBS资源是否存在,然后重新尝试。 400 CBS.1613 文件格式异常。 确认文件格式符合要求后重新尝试。 400 CBS.2114 查询的qabot资源不存在。 检查qabot id是否正确,使用正确的id重新尝试。 400 CBS.2122 qabot创建参数错误。 检查qabot参数,使用正确的参数重新尝试。 400 CBS.2125 机器人个数超过限制。 检查已创建的机器人个数是否已超过3个,再重新尝试。 400 CBS.2145 lab相关的知识库、词典、模型等资源没有删除。 检查lab内的知识库、词典、模型等资源是否已被删除,再重新尝试。 400 CBS.2154 待重启的qabot资源不存在。 检查qabot id是否正确,使用正确的id重新尝试。 400 CBS.2202 知识库的导入参数错误。 检查知识库的导入参数,使用正确的参数重新尝试。 400 CBS.2203 待导入知识库的文件格式异常。 检查文件格式,修改正确后重新尝试。 400 CBS.2205 待导入知识库的qa对个数超过限制。 检查待导入的qa对个数是否已超过100万条,再重新尝试。 400 CBS.2611 OBS访问失败。 确认该账号有无访问OBS权限,再重新尝试。 400 CBS.2624 桶资源不存在。 确认桶资源是否存在,然后重新尝试。 400 CBS.2641 uri中的path参数异常。 检查uri参数中的path字段名,修改正确后重新尝试。 400 CBS.2312 body参数错误。 检查body中的参数,使用正确的参数重新尝试。 400 CBS.2322 问答请求参数错误。 检查body中的参数,使用正确的参数重新尝试。 400 CBS.2334 待评价的问答资源不存在。 检查请求id是否正确,使用正确的id重新尝试。 400 CBS.2344 待转成人工的问答资源不存在。 检查请求id是否正确,使用正确的id重新尝试。 400 CBS.2412 待检测文本序列参数错误。 检查body中的参数,使用正确的参数重新尝试。 400 CBS.2413 待检测文本序列格式异常。 检查文本序列的格式,修改正确后重新尝试。 400 CBS.0001 用户请求参数错误 请根据错误提示检查请求参数并修改。 401 CBS.0002 认证失败 检查token是否正确,使用正确token重新尝试。 400 CBS.0003 无法找到请求资源 请根据错误提示,检查请求的资源id是否填写正确。
  • 基本概念 账号 用户注册华为云时的账号,账号对其所拥有的资源及云服务具有完全的访问权限,可以重置用户密码、分配用户权限等。由于账号是付费主体,为了确保账号安全,建议您不要直接使用账号进行日常管理工作,而是创建用户并使用用户进行日常管理工作。 用户 用户是服务的使用人员,具有身份凭证(密码和访问密钥)。 在我的凭证下,您可以查看账号ID和用户ID。通常在调用API的鉴权过程中,您需要用到账号、用户和密码等信息。 区域(Region) 从地理位置和网络时延维度划分,同一个Region内共享弹性计算、块存储、对象存储、VPC网络、弹性公网IP、镜像等公共服务。Region分为通用Region和专属Region,通用Region指面向公共租户提供通用云服务的Region;专属Region指只承载同一类业务或只面向特定租户提供业务服务的专用Region。 详情请参见区域和可用区。 可用区(AZ,Availability Zone) 一个AZ是一个或多个物理数据中心的集合,有独立的风火水电,AZ内逻辑上再将计算、网络、存储等资源划分成多个集群。一个Region中的多个AZ间通过高速光纤相连,以满足用户跨AZ构建高可用性系统的需求。 项目 华为云区域默认对应一个项目,这个项目由系统预置,用来隔离物理区域间的资源(计算资源、存储资源和网络资源),以默认项目为单位进行授权,用户可以访问您账号中该区域的所有资源。如果您希望进行更加精细的权限控制,可以在区域默认的项目中创建子项目,并在子项目中购买资源,然后以子项目为单位进行授权,使得用户仅能访问特定子项目中资源,使得资源的权限控制更加精确。 图1 项目隔离模型 父主题: 使用前必读
  • 查看策略及详情 在 DataArts Studio 控制台首页,选择实例,单击“进入控制台”,选择对应工作空间的“数据安全”模块,进入数据安全页面。 图1 选择数据安全 单击左侧导航树中的“成员管理”,进入成员管理页面。 图2 进入成员管理 单击操作栏中的“编辑”,在弹窗中可以为成员添加或删除所在的角色/权限集,管理其权限。 图3 编辑角色/权限集 单击操作栏中的“查看权限”,可以查看当前成员的基本信息,以及拥有的权限以及权限来源。
  • 回答 HetuEngine计算实例的启动依赖Python文件,需确保各节点“/usr/bin/”路径下面存在Python文件。 登录 FusionInsight Manager,单击“主机”,查看并记录所有主机的业务IP。 以root用户登录1记录的节点,在所有节点都执行以下命令,在“/usr/bin/”目录下添加“python3”的软连接。 cd /usr/bin ln -s python3 python 重新启动HetuEngine计算实例。
  • 回答 Linux的netcat命令没有与Zookeeper服务器安全通信的选项,所以当启用安全的netty配置时,它不能支持Zookeeper四个字母的命令。 为了避免这个问题,用户可以使用下面的Java API来执行四个字母的命令。 org.apache.zookeeper.client.FourLetterWordMain 例如: String[] args = new String[]{host, port, "stat"}; org.apache.zookeeper.client.FourLetterWordMain.main(args); netcat命令只能用于非安全的netty配置。
  • 回答 当nodeSelectPolicy为SEQUENCE,且第一个连接到RM的NM不可用时,RM会在“yarn.nm.liveness-monitor.expiry-interval-ms”属性中指定的周期内,一直尝试为同一个NM分配任务。 可以通过两种方式来避免上述问题: 使用其他的nodeSelectPolicy,如RANDOM。 参考修改集群服务配置参数,进入Yarn“全部配置”页面。在搜索框搜索以下参数,通过“yarn-site.xml”文件更改以下属性: “yarn.resourcemanager.am-scheduling.node-blacklisting-enabled” = “true”; “yarn.resourcemanager.am-scheduling.node-blacklisting-disable-threshold” = “0.5”。
  • 示例 假设表包含4个列,分别命名为a1,b1,c1和d1。 删除单个列: ALTER TABLE carbon DROP COLUMNS (b1); ALTER TABLE test_db.carbon DROP COLUMNS (b1); 删除多个列: ALTER TABLE carbon DROP COLUMNS (b1,c1); ALTER TABLE test_db.carbon DROP COLUMNS (b1,c1);
  • 操作步骤 以omm用户登录到需要配置SSL的DBService节点上。 进入“$BIGDATA_HOME/FusionInsight_BASE_x.x.x/install/FusionInsight-dbservice-2.7.0/sbin/”目录,执行以下命令: ./proceed_ha_ssl_cert.sh DBService安装目录 节点IP地址。 例如: cd $BIGDATA_HOME/FusionInsight_BASE_x.x.x/install/FusionInsight-dbservice-2.7.0/sbin/ ./proceed_ha_ssl_cert.sh $BIGDATA_HOME/FusionInsight_BASE_x.x.x/install/FusionInsight-dbservice-2.7.0 10.10.10.10 “$BIGDATA_HOME/FusionInsight_BASE_x.x.x/install/FusionInsight-dbservice-2.7.0”为DBService工作区安装目录,请按照实际环境进行修改。 进入“$BIGDATA_HOME/FusionInsight_BASE_x.x.x/install/FusionInsight-dbservice-2.7.0/ha/module/hacom/script/”目录,执行以下命令重启HA: ./stop_ha.sh ./start_ha.sh 在以上节点执行以下命令获取HA进程的“pid”: ps -ef |grep "ha.bin" |grep DBSERVICE 执行以下命令,查看协议是否全部变更为TCP: netstat -nap | grep pid | grep -v unix 是,结束操作。 否,执行2。 (Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.) tcp 0 0 127.0.0.1:20054 0.0.0.0:* LISTEN 11896/ha.bin tcp 0 0 10.10.10.10:20052 10.10.10.14:20052 ESTABLISHED 11896/ha.bin tcp 0 0 10.10.10.10:20053 10.10.10.14:20053 ESTABLISHED 11896/ha.bin
  • 操作场景 本章节根据超过50个测试用例总结得出建议,帮助用户创建拥有更高查询性能的CarbonData表。 表1 CarbonData表中的列 Column name Data type Cardinality Attribution msname String 3千万 dimension BEGIN_TIME bigint 1万 dimension host String 1百万 dimension dime_1 String 1千 dimension dime_2 String 500 dimension dime_3 String 800 dimension counter_1 numeric(20,0) NA measure ... ... NA measure counter_100 numeric(20,0) NA measure
  • 返回结果 参数 描述 path_num 指定目录的子目录数量 file_num 指定目录的文件数量 storage_size 该目录的Size(bytes) storage_size(unit) 该目录的Size(KB) storage_path 指定目录的完整FS绝对路径 space_consumed 返回文件/目录在集群中占用的实际空间,即它考虑了为集群设置的复制因子 quota 名称配额(名称配额是对当前目录树中的文件和目录名称数量的硬性限制) space_quota 空间配额(空间配额是对当前目录树中的文件所使用的字节数量的硬性限制)
  • 基本语法 方法一:使用INSERT VALUES方式进行数据写入。 UPSERT INTO [database_name.]table [(c1, c2, c3)] VALUES (v11, v12, v13), (v21, v22, v23), ... 方法二:使用INSERT SELECT方式进行数据写入。 UPSERT INTO [database_name.]table [(c1, c2, c3)] SELECT ...
  • 注意事项 MergeTree和ReplicatedMergeTree建表要指定primary key或order by字段作为去重唯一键。如果未指定主键,只指定了order by建表属性,去重键以order by字段为准。 数据去重的key需要提前在应用中进行sharding计算,保证相同的key会sharding到同一个shard,才能保证后续相同的key字段数据sharding到同一个shard进行数据的精确去重。
  • 使用示例 建表样例: CREATE TABLE default.upsert_tab ON CLUSTER default_cluster ( `id` Int32, `pdate` Date, `name` String )ENGINE = ReplicatedMergeTree('/clickhouse/tables/default/{shard}/upsert_tab', '{replica}') PARTITION BY toYYYYMM(pdate) PRIMARY KEY id ORDER BY id SETTINGS index_granularity = 8192; Upsert数据去重写入: Upsert into upsert_tab(id, pdate, name) values (1, rand() % 365, 'abc'), (2, rand() % 365, 'bcd'), (1, rand() % 365, 'def'); 查询test_upsert表数据 select * from upsert_tab; ┌─id─┬───pdate─┬─name─┐ │ 2 │ 1970-06-09│ bcd │ │ 1 │ 1970-11-30│ def │ └───┴── ────┴────┘ Upsert支持事务 与其他SQL语法类型一样,upsert语法也支持显式和隐式事务,使用事务前需要进行相应的事务功能开启配置。
  • 配置参数 在Spark客户端的“{客户端安装目录}/Spark/spark/conf/spark-defaults.conf”配置文件中进行设置,修改如下参数: 参数 说明 默认值 spark.sql.mergeSmallFiles.enabled 设置为true,Spark写入目标表时会判断是否写入了小文件,如果发现有小文件,则会启动合并小文件的job。 false spark.sql.mergeSmallFiles.threshold.avgSize 如果某个分区的平均文件大小小于该值,则启动小文件合并。 16MB spark.sql.mergeSmallFiles.maxSizePerTask 合并后的每个文件大小目标大小。 256MB spark.sql.mergeSmallFiles.moveParallelism 当不需要合并小文件后时,将临时文件移动到最终目录的并行度。 10000
  • 操作步骤 使用安装客户端的用户登录客户端所在节点,具体操作请参见使用客户端运行Loader作业。 执行以下命令,进入“backup.properties”文件所在目录。例如,Loader客户端安装目录为 “/opt/client/Loader/”。 cd /opt/client/Loader/loader-tools-1.99.3/loader-backup/conf 执行以下命令,修改“backup.properties”文件的配置参数,参数具体说明如表1所示。 vi backup.properties server.url = 10.0.0.1:21351,10.0.0.2:12000 authentication.type = kerberos authentication.user = authentication.password= job.jobId = 1 use.keytab = true client.principal = loader/hadoop client.keytab = /opt/client/conf/loader.keytab 表1 配置参数说明 配置参数 说明 示例 server.url Loader服务的浮动IP地址和端口(21351)。 为了兼容性,此处支持配置多个IP地址和端口,并以“,”进行分隔。其中第一个必须是Loader服务的浮动IP地址和端口(21351),其余的可根据业务需求配置。 10.0.0.1:21351,10.0.0.2:12000 authentication.type 登录认证的方式。 “kerberos”,表示使用安全模式,进行Kerberos认证。Kerberos认证提供两种认证方式:密码和keytab文件。 “simple”,表示使用普通模式,不进行Kerberos认证。 kerberos authentication.user 普通模式或者使用密码认证方式时,登录使用的用户。 keytab登录方式,则不需要设置该参数。 bar authentication.password 使用密码认证方式时,登录使用的用户密码。 普通模式或者keytab登录方式,则不需要设置该参数。 用户需要对密码加密,加密方法: 进入“encrypt_tool”所在目录。例如,Loader客户端安装目录为“/opt/hadoopclient/Loader”,则执行如下命令。 cd /opt/hadoopclient/Loader/loader-tools-1.99.3 执行以下命令,对非加密密码进行加密。命令中如果携带认证密码信息可能存在安全风险,在执行命令前建议关闭系统的history命令记录功能,避免信息泄露。 ./encrypt_tool 未加密的密码 得到加密后的密文,作为“authentication.password”的取值。 说明: 非加密密码中含有特殊字符时需要转义。例如,$符号属于特殊字符,可使用单引号进行转义;非加密密码中含有单引号时可用双引号进行转义,非加密密码中含有双引号应使用反斜杠\进行转义。可参考Shell的转义字符规则。 - job.jobId 需要执行数据备份的作业ID。 作业ID可通过登录Loader webUI在已创建的作业查看。 1 use.keytab 是否使用keytab方式登录。 true,表示使用keytab文件登录 false,表示使用密码登录。 true client.principal 使用keytab认证方式时,访问Loader服务的用户规则。 普通模式或者密码登录方式,则不需要设置该参数。 loader/hadoop client.keytab 使用keytab认证方式登录时,使用的keytab文件所在目录。 普通模式或者密码登录方式,则不需要设置该参数。 /opt/client/conf/loader.keytab 执行以下命令,进入备份脚本“run.sh”所在目录。例如,Loader客户端安装目录为“/opt/hadoopclient/Loader”。 cd /opt/hadoopclient/Loader/loader-tools-1.99.3/loader-backup 执行以下命令,运行备份脚本“run.sh”,进行Loader作业数据备份。系统将数据备份到作业的输出路径同一层目录。 ./run.sh 备份数据的输入目录 例如,备份数据的输入目录为“/user/hbase/”,作业的输出路径为/opt/client/sftp/sftp1,其中sftp1只起到一个占位符的作用。执行如下命令,数据将备份到/opt/client/sftp/hbase目录。 ./run.sh /user/hbase/
  • 参数描述 表1 ALTER TABLE COMPACTION参数描述 Parameter Description db_name 数据库名。如果未指定,则选择当前数据库。 table_name 表名。 MINOR Minor合并,详见合并Segments。 MAJOR Major合并,详见合并Segments。 SEGMENT_INDEX 这会将一个segment内的所有Carbon索引文件(.carbonindex)合并为一个Carbon索引合并文件(.carbonindexmerge)。 这增强了首次查询性能。详见表1。 CUSTOM Custom合并,详见合并Segments。
  • 示例 ALTER TABLE ProductDatabase COMPACT 'MINOR'; ALTER TABLE ProductDatabase COMPACT 'MAJOR'; ALTER TABLE ProductDatabase COMPACT 'SEGMENT_INDEX'; ALTER TABLE ProductDatabase COMPACT 'CUSTOM' WHERE SEGMENT.ID IN (0, 1);
  • 系统响应 由于为后台运行,ALTER TABLE COMPACTION命令不会显示压缩响应。 如果想要查看MINOR合并和MAJOR合并的响应结果,用户可以检查日志或运行SHOW SEGMENTS命令查看。 示例: +------+------------+--------------------------+------------------+------------+------------+-------------+--------------+--+ | ID | Status | Load Start Time | Load Time Taken | Partition | Data Size | Index Size | File Format | +------+------------+--------------------------+------------------+------------+------------+-------------+--------------+--+ | 3 | Success | 2020-09-28 22:53:26.336 | 3.726S | {} | 6.47KB | 3.30KB | columnar_v3 | | 2 | Success | 2020-09-28 22:53:01.702 | 6.688S | {} | 6.47KB | 3.30KB | columnar_v3 | | 1 | Compacted | 2020-09-28 22:51:15.242 | 5.82S | {} | 6.50KB | 3.43KB | columnar_v3 | | 0.1 | Success | 2020-10-30 20:49:24.561 | 16.66S | {} | 12.87KB | 6.91KB | columnar_v3 | | 0 | Compacted | 2020-09-28 22:51:02.6 | 6.819S | {} | 6.50KB | 3.43KB | columnar_v3 | +------+------------+--------------------------+------------------+------------+------------+-------------+--------------+--+ 其中, Compacted表示该数据已被合并。 0.1表示segment0与segment1合并之后的结果。 数据合并前后的其他操作没有差别。 被合并的segments(例如segment0和segment1)即成为无用的segments,会占用空间,因此建议合并之后使用CLEAN FILES命令进行彻底删除,再进行其他操作。CLEAN FILES命令的使用方法可参考CLEAN FILES。
  • 示例 创建示例所需视图: Create schema test1; Use test1; Create table t1(id int, name string); Create view v1 as select * from t1; Create view v2 as select * from t1; Create view t1view as select * from t1; Create view t2view as select * from t1; Show views; Table -------- t1view t2view v1 v2 (4 rows) Show views like 'v1'; Table ------- v1 (1 row) Show views 'v_'; Table ------- v1 v2 (2 rows) show views like 't*'; Table -------- t1view t2view Show views in test1; Table -------- t1view t2view v1 v2 (4 rows)
  • Hive ACL权限 表1 CarbonData表级操作所需的Hive ACL权限 场景 所需权限 DESCRIBE TABLE SELECT (of table) SELECT SELECT (of table) EXPLAIN SELECT (of table) CREATE TABLE CREATE (of database) CREATE TABLE As SELECT CREATE (on database), INSERT (on table), RW on data file, and SELECT (on table) LOAD INSERT (of table) RW on data file DROP TABLE OWNER (of table) DELETE SEGMENTS DELETE (of table) SHOW SEGMENTS SELECT (of table) CLEAN FILES DELETE (of table) INSERT OVERWRITE / INSERT INTO INSERT (of table) RW on data file and SELECT (of table) CREATE INDEX OWNER (of table) DROP INDEX OWNER (of table) SHOW INDEXES SELECT (of table) ALTER TABLE ADD COLUMN OWNER (of table) ALTER TABLE DROP COLUMN OWNER (of table) ALTER TABLE CHANGE DATATYPE OWNER (of table) ALTER TABLE RENAME OWNER (of table) ALTER TABLE COMPACTION INSERT (on table) FINISH STREAMING OWNER (of table) ALTER TABLE SET STREAMING PROPERTIES OWNER (of table) ALTER TABLE SET TABLE PROPERTIES OWNER (of table) UPDATE CARBON TABLE UPDATE (of table) DELETE RECORDS DELETE (of table) REFRESH TABLE OWNER (of main table) REGISTER INDEX TABLE OWNER (of table) SHOW PARTITIONS SELECT (on table) ALTER TABLE ADD PARTITION OWNER (of table) ALTER TABLE DROP PARTITION OWNER (of table) 如果数据库下的表由多个用户创建,那么执行Drop database命令会失败,即使执行的用户是数据库的拥有者。 在二级索引中,当父表(parent table)触发时,insert和compaction将在索引表上触发。 如果选择具有过滤条件匹配索引表列的查询,用户应该为父表和索引表提供选择权限。 LockFiles文件夹和LockFiles文件夹中创建的锁定文件将具有完全权限,因为LockFiles文件夹不包含任何敏感数据。 如果使用ACL,确保不要为DDL或DML配置任何被其他进程使用中的路径,建议创建新路径。 以下配置项需要配置路径: 1) carbon.badRecords.location 2) 创建数据库时Db_Path及其他。 对于非安全集群中的Carbon ACL权限,hive-site.xml中的参数hive.server2.enable.doAs必须设置为false。 将此属性设置为false,查询将以hiveserver2进程运行的用户身份运行。
  • 问题 Spark应用执行过程中,当driver连接RM失败时,会报下面的错误,且较长时间不退出。 16/04/23 15:31:44 INFO RetryInvocationHandler: Exception while invoking getApplicationReport of class ApplicationClientProtocolPBClientImpl over 37 after 1 fail over attempts. Trying to fail over after sleeping for 44160ms. java.net.ConnectException: Call From vm1/192.168.39.30 to vm1:8032 failed on connection exception: java.net.ConnectException: Connection refused; For more details see: http://wiki.apache.org/hadoop/ConnectionRefused
  • 回答 在Spark中有个定期线程,通过连接RM监测AM的状态。由于连接RM超时,就会报上面的错误,且一直重试。RM中对重试次数有限制,默认是30次,每次间隔默认为30秒左右,每次重试时都会报上面的错误。超过次数后,driver才会退出。 RM中关于重试相关的配置项如表1所示。 表1 参数说明 参数 描述 默认值 yarn.resourcemanager.connect.max-wait.ms 连接RM的等待时间最大值。 900000 yarn.resourcemanager.connect.retry-interval.ms 重试连接RM的时间频率。 30000 重试次数=yarn.resourcemanager.connect.max-wait.ms/yarn.resourcemanager.connect.retry-interval.ms,即重试次数=连接RM的等待时间最大值/重试连接RM的时间频率。 在Spark客户端机器中,通过修改“conf/yarn-site.xml”文件,添加并配置“yarn.resourcemanager.connect.max-wait.ms”和“yarn.resourcemanager.connect.retry-interval.ms”,这样可以更改重试次数,Spark应用可以提早退出。
  • 参数描述 表1 CREATE TABLE As SELECT参数描述 参数 描述 database_name Database名称,由字母、数字和下划线(_)组成。 table_name Database中的表名,由字母、数字和下划线(_)组成。 using 参数hudi,定义和创建Hudi table。 table_comment 表的描述信息。 location_path HDFS路径,指定该路径Hudi表会创建为外表。 options_list Hudi table属性列表。 query_statement select查询表达式
  • 示例 创建分区表 create table h2 using hudi options (type = 'cow', primaryKey = 'id') partitioned by (dt) as select 1 as id, 'a1' as name, 10 as price, 1000 as dt; 创建非分区表 create table h3 using hudi as select 1 as id, 'a1' as name, 10 as price; 从parquet表加载数据到hudi表 # 创建parquet表 create table parquet_mngd using parquet options(path=’hdfs:///tmp/parquet_dataset/*.parquet’); # CTAS创建hudi表 create table hudi_tbl using hudi location 'hdfs:///tmp/hudi/hudi_tbl/' options ( type = 'cow', primaryKey = 'id', preCombineField = 'ts' ) partitioned by (datestr) as select * from parquet_mngd;
  • HetuEngine预留关键字 表1罗列了系统预留的关键字,以及它们在其他SQL标准中是否为预留关键字。如果需要使用这些关键字作为标识符,请加注双引号。 表1 关键字 Keyword SQL:2016 SQL-92 ALTER reserved reserved AND reserved reserved AS reserved reserved BETWEEN reserved reserved BY reserved reserved CASE reserved reserved CAST reserved reserved CONSTRAINT reserved reserved CREATE reserved reserved CROSS reserved reserved CUBE reserved reserved CURRENT_DATE reserved reserved CURRENT_PATH reserved reserved CURRENT_ROLE reserved reserved CURRENT_TIME reserved reserved CURRENT_TIMESTAMP reserved reserved CURRENT_USER reserved reserved DEALLOCATE reserved reserved DELETE reserved reserved DESCRIBE reserved reserved DISTINCT reserved reserved DROP reserved reserved ELSE reserved reserved END reserved reserved ESCAPE reserved reserved EXCEPT reserved reserved EXECUTE reserved reserved EXISTS reserved reserved EXTRACT reserved reserved FALSE reserved reserved FOR reserved reserved FROM reserved reserved FULL reserved reserved GROUP reserved reserved GROUPING reserved reserved HAVING reserved reserved IN reserved reserved INNER reserved reserved INSERT reserved reserved INTERSECT reserved reserved INTO reserved reserved IS reserved reserved JOIN reserved reserved LEFT reserved reserved LIKE reserved reserved LOCALTIME reserved reserved LOCALTIMESTAMP reserved reserved NATURAL reserved reserved NORMALIZE reserved reserved NOT reserved reserved NULL reserved reserved ON reserved reserved OR reserved reserved ORDER reserved reserved OUTER reserved reserved PREPARE reserved reserved RECURSIVE reserved reserved RIGHT reserved reserved ROLLUP reserved reserved SELECT reserved reserved TABLE reserved reserved THEN reserved reserved TRUE reserved reserved UESCAPE reserved reserved UNION reserved reserved UNNEST reserved reserved USING reserved reserved VALUES reserved reserved WHEN reserved reserved WHERE reserved reserved WITH reserved reserved 父主题: HetuEngine常见SQL语法说明
  • 操作步骤 写数据服务端调优 参数入口: 进入HBase服务参数“全部配置”界面,具体操作请参考修改集群服务配置参数章节。 表1 影响实时写数据配置项 配置参数 描述 默认值 hbase.wal.hsync 控制HLog文件在写入到HDFS时的同步程度。如果为true,HDFS在把数据写入到硬盘后才返回;如果为false,HDFS在把数据写入OS的缓存后就返回。 把该值设置为false比true在写入性能上会更优。 true hbase.hfile.hsync 控制HFile文件在写入到HDFS时的同步程度。如果为true,HDFS在把数据写入到硬盘后才返回;如果为false,HDFS在把数据写入OS的缓存后就返回。 把该值设置为false比true在写入性能上会更优。 true GC_OPTS HBase利用内存完成读写操作。提高HBase内存可以有效提高HBase性能。GC_OPTS主要需要调整HeapSize的大小和NewSize的大小。调整HeapSize大小的时候,建议将Xms和Xmx设置成相同的值,这样可以避免JVM动态调整HeapSize大小的时候影响性能。调整NewSize大小的时候,建议把其设置为HeapSize大小的1/8。 HMaster:当HBase集群规模越大、Region数量越多时,可以适当调大HMaster的GC_OPTS参数。 RegionServer:RegionServer需要的内存一般比HMaster要大。在内存充足的情况下,HeapSize可以相对设置大一些。 说明: 主HMaster的HeapSize为4G的时候,HBase集群可以支持100000 region数的规模。根据经验值,集群每增加35000个region,HeapSize增加2G,主HMaster的HeapSize不建议超过32GB。 HMaster -server -Xms4G -Xmx4G -XX:NewSize=512M -XX:MaxNewSize=512M -XX:MetaspaceSize=128M -XX:MaxMetaspaceSize=512M -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=65 -XX:+PrintGCDetails -Dsun.rmi.dgc.client.gcInterval=0x7FFFFFFFFFFFFFE -Dsun.rmi.dgc.server.gcInterval=0x7FFFFFFFFFFFFFE -XX:-OmitStackTraceInFastThrow -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=1M Region Server -server -Xms6G -Xmx6G -XX:NewSize=1024M -XX:MaxNewSize=1024M -XX:MetaspaceSize=128M -XX:MaxMetaspaceSize=512M -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=65 -XX:+PrintGCDetails -Dsun.rmi.dgc.client.gcInterval=0x7FFFFFFFFFFFFFE -Dsun.rmi.dgc.server.gcInterval=0x7FFFFFFFFFFFFFE -XX:-OmitStackTraceInFastThrow -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=1M hbase.regionserver.handler.count 表示在RegionServer上启动的RPC侦听器实例数。如果设置过高会导致激烈线程竞争,如果设置过小,请求将会在RegionServer长时间等待,降低处理能力。根据资源情况,适当增加处理线程数。 建议根据CPU的使用情况,可以选择设置为100至300之间的值。 200 hbase.hregion.max.filesize HStoreFile的最大大小(单位:Byte)。如果任何一个列族HStoreFile超过此参数值,则托管Hregion将会一分为二。 10737418240 hbase.hregion.memstore.flush.size 在RegionServer中,当写操作内存中存在超过memstore.flush.size大小的memstore,则MemStoreFlusher就启动flush操作将该memstore以hfile的形式写入对应的store中。 如果RegionServer的内存充足,而且活跃Region数量也不是很多的时候,可以适当增大该值,可以减少compaction的次数,有助于提升系统性能。 同时,这种flush产生的时候,并不是紧急的flush,flush操作可能会有一定延迟,在延迟期间,写操作还可以进行,Memstore还会继续增大,最大值为“memstore.flush.size” * “hbase.hregion.memstore.block.multiplier”。当超过最大值时,将会阻塞操作。适当增大“hbase.hregion.memstore.block.multiplier”可以减少阻塞,减少性能波动。单位:字节。 134217728 hbase.regionserver.global.memstore.size 更新被锁定以及强制冲洗发生之前一个RegionServer上支持的所有MemStore的大小。RegionServer中,负责flush操作的是MemStoreFlusher线程。该线程定期检查写操作内存,当写操作占用内存总量达到阈值,MemStoreFlusher将启动flush操作,按照从大到小的顺序,flush部分相对较大的memstore,直到所占用内存小于阈值。 阈值 = “hbase.regionserver.global.memstore.size” * “hbase.regionserver.global.memstore.size.lower.limit” * “HBase_HEAPSIZE” 说明: 该配置与“hfile.block.cache.size”的和不能超过0.8,也就是写和读操作的内存不能超过HeapSize的80%,这样可以保证除读和写外其它操作的正常运行。 0.4 hbase.hstore.blockingStoreFiles 在region flush前首先判断file文件个数,是否大于hbase.hstore.blockingStoreFiles。 如果大于需要先compaction并且让flush延时90s(这个值可以通过hbase.hstore.blockingWaitTime进行配置),在延时过程中,将会继续写从而使得Memstore还会继续增大超过最大值 “memstore.flush.size” * “hbase.hregion.memstore.block.multiplier”,导致写操作阻塞。当完成compaction后,可能就会产生大量写入。这样就导致性能激烈震荡。 增加hbase.hstore.blockingStoreFiles,可以减低BLOCK几率。 15 hbase.regionserver.thread.compaction.throttle 大于此参数值的压缩将被大线程池执行,单位:Byte。控制一次Minor Compaction时,进行compaction的文件总大小的阈值。Compaction时的文件总大小会影响这一次compaction的执行时间,如果太大,可能会阻塞其它的compaction或flush操作。 1610612736 hbase.hstore.compaction.min 每次执行minor compaction的HStoreFile的最小数量。当一个Store文件超过该值时,会进行compact,适当增大该值,可以减少文件被重复执行compaction。但是如果过大,会导致Store文件数过多而影响读取的性能。 6 hbase.hstore.compaction.max 每次执行minor compaction的HStoreFile的最大数量。与“hbase.hstore.compaction.max.size”的作用基本相同,主要是控制一次compaction操作的时间不要太长。 10 hbase.hstore.compaction.max.size 如果一个HFile文件的大小大于该值,那么在Minor Compaction操作中不会选择这个文件进行compaction操作,除非进行Major Compaction操作。 这个值可以防止较大的HFile参与compaction操作。在禁止Major Compaction后,一个Store中可能存在几个HFile,而不会合并成为一个HFile,这样不会对数据读取造成太大的性能影响。单位:字节。 9223372036854775807 hbase.hregion.majorcompaction 单个区域内所有HStoreFile文件主压缩的时间间隔,单位:毫秒。由于执行Major Compaction会占用较多的系统资源,如果正在处于系统繁忙时期,会影响系统的性能。 如果业务没有较多的更新、删除、回收过期数据空间时,可以把该值设置为0,以禁止Major Compaction。 如果必须要执行Major Compaction,以回收更多的空间,可以适当增加该值,同时配置参数“hbase.offpeak.end.hour”和“hbase.offpeak.start.hour”以控制Major Compaction发生在业务空闲的时期。单位:毫秒。 604800000 hbase.regionserver.maxlogs hbase.regionserver.hlog.blocksize 表示一个RegionServer上未进行Flush的Hlog的文件数量的阈值,如果大于该值,RegionServer会强制进行flush操作。 表示每个HLog文件的最大大小。如果HLog文件大小大于该值,就会滚动出一个新的HLog文件,旧的将被禁用并归档。 这两个参数共同决定了RegionServer中可以存在的未进行Flush的hlog数量。当这个数据量小于MemStore的总大小的时候,会出现由于HLog文件过多而触发的强制flush操作。这个时候可以适当调整这两个参数的大小,以避免出现这种强制flush的情况。单位:字节。 32 134217728 写数据客户端调优 写数据时,在场景允许的情况下,更适合使用Put List的方式,可以极大的提升写性能。每一次Put的List的长度,需要结合单条Put的大小,以及实际环境的一些参数进行设定。建议在选定之前先做一些基础的测试。 写数据表设计调优 表2 影响实时写数据相关参数 配置参数 描述 默认值 COMPRESSION 配置数据的压缩算法,这里的压缩是HFile中block级别的压缩。对于可以压缩的数据,配置压缩算法可以有效减少磁盘的IO,从而达到提高性能的目的。 说明: 并非所有数据都可以进行有效压缩。例如一张图片的数据,因为图片一般已经是压缩后的数据,所以压缩效果有限。常用的压缩算法是SNAPPY,因为它有较好的Encoding/Decoding速度和可以接受的压缩率。 NONE BLOCKSIZE 配置HFile中block块的大小,不同的block块大小,可以影响HBase读写数据的效率。越大的block块,配合压缩算法,压缩的效率就越好;但是由于HBase的读取数据是以block块为单位的,所以越大的block块,对于随机读的情况,性能可能会比较差。 如果要提升写入的性能,一般扩大到128KB或者256KB,可以提升写数据的效率,也不会影响太大的随机读性能。单位:字节 65536 IN_MEMORY 配置这个表的数据优先缓存在内存中,这样可以有效提升读取的性能。对于一些小表,而且需要频繁进行读取操作的,可以设置此配置项。 false
共100000条