华为云用户手册

  • 主机迁移服务重要声明有哪些? 源端服务器数据收集声明。 源端服务器上安装和配置完迁移Agent后,迁移Agent会把源端服务器信息发送给主机迁移服务校验,收集的源端服务器的详细信息请参见主机迁移服务会收集源端的哪些信息?。这些数据只用于迁移可行性判断,不做其他用途。若您使用主机迁移服务,表示您同意主机迁移服务对这些信息的收集。 License失效声明。 源端服务器的系统、应用、文件等数据迁移到目的端服务器后,服务器的SID、网卡MAC地址等信息发生改变,导致OS、应用等License失效。此类问题,主机迁移服务概不负责。对于Windows License可以使用华为云License服务器获取新License,应用License用户自行解决。 迁移过程中禁止对目的端服务器的系统、磁盘进行操作,包括但不限于切换操作系统、重装系统等。在迁移过程中对目的端服务器进行操作所产生的费用以及数据损坏等问题,主机迁移服务概不负责。 目的端服务器磁盘格式化说明。 迁移过程中,目的端服务器的磁盘会被格式化并重新进行分区,导致目的端服务器上所有数据丢失。请迁移前做好数据备份以及确认目的端服务器磁盘可被格式化。否则造成数据丢失,主机迁移服务概不负责。 源端磁盘数据安全性声明 迁移过程中,主机迁移服务无法感知磁盘内容,需要您自行保障源端磁盘数据的安全性。如果因为源端磁盘数据中存在木马或病毒等软件,导致迁移后目的端VPC内的主机受到影响,主机迁移服务概不负责。 源端服务器导致的迁移问题免责申明。 因源端服务器的硬件(如磁盘、网卡)、软件(如OS、应用)、数据(文件)等损坏/配置不当/不兼容/业务量大/网络慢等因素引发的迁移问题,非主机迁移服务的问题,包括但不限于下面列举的问题。您可自行解决,若自行解决无果,您可以向华为云提出咨询或请求华为云协助解决,但华为云不承诺解决问题。 源端服务器系统本身有问题,如:Windows的启动文件损坏或缺失。 源端服务器系统配置错乱,如:Linux的grub配置错乱缺失,fstab配置错乱。 网络问题,如:访问不了公网,网速慢,ssh问题,防火墙等。 IO读写慢,增量数据多,Windows有效簇分散,Linux小文件多导致的迁移慢,同步慢,同步时间比较久的问题。 源端平台服务或软件与华为云不兼容。 源端平台服务或软件把Agent关闭,或杀毒软件把IO监控关闭。 迁移到华为云后,若目的端服务器不能正常启动,华为云可以提供相应的技术支持,但是不承诺解决问题。 其中目的端服务器不能正常启动的原因可能包括以下几种: 源端服务器本身无法重启 源端服务器上有非OS标准的配置 源端服务器上安装了与华为云不兼容的驱动或软件等 为了适配华为云,主机迁移服务对目的端服务器的系统配置做了修改,详细的修改项请参见迁移后目的端与源端相比有哪些变化?。主机迁移服务可以保证迁移前后数据一致性,但无法保证业务能正常运行,需要您自己修改业务相关配置。 业务割接后,源端服务器、目的端服务器均有新增数据时,使用主机迁移服务,无法将源端新增数据与目的端新增数据进行合并,只能使用源端数据覆盖目的端数据。因此,建议您在业务割接前,不要在目的端服务器新增数据;业务割接后,不要在源端服务器新增数据。对于业务割接后,源端服务器、目的端服务器均有新增数据且需要合并的情况,需要您自行设计解决方案。 GPU服务器驱动问题声明 迁移到GPU服务器出现的驱动相关问题(如:不具备计算加速/图形加速能力),需要您自行安装相关驱动解决。若自行解决无果,华为云可以提供相应的技术支持,但是不承诺解决问题。 切换HCE功能声明 HCE系统是基于openEuler构建的云上操作系统。SMS在同步时,支持将CentOS 7、CentOS 8版本操作系统切换为HCE操作系统。切换之前需要使用应用兼容性评估工具x2hce-ca对CentOS系统运行的软件进行兼容性评估,做好版本适配后,再做OS切换。切换HCE操作系统后,若目的端业务无法正常运行,华为云可以提供相应的技术支持,但是不承诺解决问题。 Windows迁移过程中,会调用部分Windows API来获取参数,如果由于源端OS配置以及硬件问题,导致Windows API返回报错,SMS无法提供帮助,需要您自行解决。 关于业务隔离、业务冲突声明 主机迁移服务在迁移过程中,不会识别和感知用户业务,需要用户自行识别源端和目的端业务之间的冲突并保持隔离性,如果因为目的端启动后对源端造成业务冲突异常,主机迁移服务概不负责。 父主题: 系统兼容与迁移限制
  • 新增磁盘 可通过修改disk.cfg配置文件中的disk_add参数配置项新增磁盘。 disk_name:输入新增磁盘名称 adjust_size:输入新增磁盘大小(G为单位) 例如:在目的端新增磁盘vdd,大小10 G。 [disk_add] disk_name=/dev/vdd disk_size=10G 磁盘名称应该符合命名规则,且不可与已有磁盘重复。 磁盘大小应该限制在10G-32768G。
  • 调整磁盘大小 可通过修改disk.cfg配置文件中的disk_size_modify参数配置项调整磁盘大小。 disk_name:输入目标磁盘 adjust_size:输入修改后磁盘大小 例如:修改目标磁盘vdb大小为40G。 [disk_size_modify] disk_name=/dev/vdb adjust_size=40G 目标磁盘为系统盘时,大小应该限制在40G-1024G。 目标磁盘为数据盘时,大小应该限制在10G-32768G。
  • 解决方案 通过在源端修改SMS-Agent的配置文件,即可实现将源端多个磁盘中的分区迁移到目的端同一个磁盘内。 该方案对配置文件所做出的改动,仅涉及迁移后的目的端,不会对源端有影响。 使用该功能可能会出现迁移进度条不准确的现象,请知晓。 在源端服务器,执行如下命令,进入Agent安装目录下的config目录。 cd SMS-Agent/agent/config 执行如下命令,打开并编辑config目录下的disk.cfg配置文件。 vi disk.cfg 修改vol_disk_modify参数配置项。 vol_name:输入原分区名 new_vol_name:输入新分区名 disk_name:输入原分区所在磁盘 new_disk_name:输入目标磁盘 例如:将源端vdc盘中的vdc1分区、vdd盘中的vdd1分区,迁移到目的端后,合并至vdb盘vdb4、vdb5分区中。 [vol_disk_modify] vol_name=/dev/vdc1;/dev/vdd1 new_vol_name=/dev/vdb4;/dev/vdb5 disk_name=/dev/vdc;/dev/vdd new_disk_name=/dev/vdb;/dev/vdb 多个磁盘/分区之间使用英文分号分开,每个参数的值要保证数量一致(即包含同样个数的分号)。 合并之后磁盘的所有分区大小之和应小于目标磁盘的大小,若磁盘无剩余空间,可能会导致迁移失败。如需调整目标磁盘,请参见调整磁盘大小或新增磁盘。 新分区的名称应该遵循磁盘名+序号(如:vdb4)的命名规则,且不可与已有分区重复。 暂不支持lvm、btrfs的分区合并。 执行如下命令,保存disk.cfg配置文件并重启迁移Agent,进行后续迁移操作。 :wq
  • 响应示例 状态码: 200 OK { "unauth_result" : [ { "api_id" : "logic-api-fe84e858-49ec-41c6-80d7-a34fc22435c2", "app_id" : "logic-app-9b9acb40-6df6-4623-9f87-e0dae781d867", "success" : true } ] }
  • URI DELETE /v1/{project_id}/services/{service_id}/app-auth-apis/{api_id}/app-auth-api 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 用户项目ID。获取方法请参见获取项目ID。 service_id 是 String API所属的服务ID。 api_id 是 String API编号。
  • 响应参数 状态码: 200 表5 响应Header参数 参数 参数类型 描述 X-Request-Id String 链路追踪编号 表6 响应Body参数 参数 参数类型 描述 unauth_result Array of AppAuthResultInfo objects 取消授权结果。 表7 AppAuthResultInfo 参数 参数类型 描述 api_id String API的编号。 app_id String APP的编号,可通过查询APP列表获取。 auth_id String 授权编号,授权失败时为空。 reason String 授权或者取消授权失败原因,授权成功时为空。 success Boolean 授权或者取消授权是否成功。 状态码: 401 表8 响应Header参数 参数 参数类型 描述 X-Request-Id String 链路追踪编号 表9 响应Body参数 参数 参数类型 描述 error_code String ModelArts错误码 error_msg String 具体错误信息 状态码: 403 表10 响应Header参数 参数 参数类型 描述 X-Request-Id String 链路追踪编号 表11 响应Body参数 参数 参数类型 描述 error_code String ModelArts错误码 error_msg String 具体错误信息
  • 响应示例 状态码: 200 OK { "auth_result" : [ { "api_id" : "logic-api-fe84e858-49ec-41c6-80d7-a34fc22435c2", "app_id" : "logic-app-9b9acb40-6df6-4623-9f87-e0dae781d867", "success" : true }, { "api_id" : "logic-api-fe84e858-49ec-41c6-80d7-a34fc22435c2", "app_id" : "logic-app-ce0d0a41-451d-4563-94d9-acc75b5e440f", "success" : true } ] }
  • URI PUT /v1/{project_id}/services/{service_id}/app-auth-apis/{api_id}/app-auth-api 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 用户项目ID。获取方法请参见获取项目ID。 service_id 是 String API所属的服务ID。 api_id 是 String API编号。
  • 响应参数 状态码: 200 表5 响应Header参数 参数 参数类型 描述 X-Request-Id String 链路追踪编号 表6 响应Body参数 参数 参数类型 描述 auth_result Array of AppAuthResultInfo objects 授权结果列表 表7 AppAuthResultInfo 参数 参数类型 描述 api_id String API的编号。 app_id String APP的编号,可通过查询APP列表获取。 auth_id String 授权编号,授权失败时为空。 reason String 授权或者取消授权失败原因,授权成功时为空。 success Boolean 授权或者取消授权是否成功。 状态码: 401 表8 响应Header参数 参数 参数类型 描述 X-Request-Id String 链路追踪编号 表9 响应Body参数 参数 参数类型 描述 error_code String ModelArts错误码 error_msg String 具体错误信息 状态码: 403 表10 响应Header参数 参数 参数类型 描述 X-Request-Id String 链路追踪编号 表11 响应Body参数 参数 参数类型 描述 error_code String ModelArts错误码 error_msg String 具体错误信息 状态码: 404 表12 响应Header参数 参数 参数类型 描述 X-Request-Id String 链路追踪编号 表13 响应Body参数 参数 参数类型 描述 error_code String ModelArts错误码 error_msg String 具体错误信息
  • 请求示例 通过 patch 操作对服务进行更新。 PATCH https://{endpoint}/v1/{project_id}/services/{service_id} [ { "op" : "replace", "path" : "/config/0/envs", "value" : { } }, { "op" : "replace", "path" : "/config/0/model_id", "value" : "a9542b46-8dfd-4184-bd81-c8d8946edb47" }, { "op" : "replace", "path" : "/config/0/additional_properties", "value" : { "persistent_volumes" : [ { "storage_type" : "obs_pfs", "source_address" : "/dongcong4", "mount_path" : "/var/tmp", "storage_type_text" : "atelier_webservice_detail_model_config_volumes_type_obs" } ] } }, { "op" : "replace", "path" : "/config/0/specification", "value" : "modelarts.vm.ai1.a310" }, { "op" : "replace", "path" : "/config/0/pool_name", "value" : "pool-c8e2-04f258c84780d5a52f3bc00dc15aa5e7" } ]
  • 响应参数 状态码: 200 表4 响应Header参数 参数 参数类型 描述 X-Request-Id String 请求链路编号,可用于日志追踪 表5 响应Body参数 参数 参数类型 描述 update_time String 本次更新时间,仅触发服务配置升级时会返回,比如修改config参数,可根据此时间从服务更新记录中过滤出此次的更新结果;修改描述或启停服务不会返回此参数。 resource_ids String 更新的资源ID 状态码: 400 表6 响应Header参数 参数 参数类型 描述 X-Request-Id String 请求链路编号,可用于日志追踪 表7 响应Body参数 参数 参数类型 描述 error_code String ModelArts错误码 error_msg String 具体错误信息
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-ModelArts-User-ID 否 String 委托Token校验workspace时需要填写user id。 X-Auth-Token 是 String 用户token。 表3 请求Body参数 参数 是否必选 参数类型 描述 PatchServiceV2RequestBody 是 String 参照 json patch 的格式。目前 path 只能以 “/config” 为前缀,即只能修改模型数据。例如:[ {"op": "replace", "path": "/config/0/instance_count", "value": 4} ]。
  • URI POST /v1/{project_id}/services/{service_id}/app-auth-apis/{api_id}/app-auth-api 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 用户项目ID。获取方法请参见获取项目ID。 service_id 是 String API所属的服务ID。 api_id 是 String API编号。
  • 响应参数 状态码: 200 表5 响应Header参数 参数 参数类型 描述 X-Request-Id String 链路追踪编号 表6 响应Body参数 参数 参数类型 描述 auth_result Array of AppAuthResultInfo objects 授权结果列表 表7 AppAuthResultInfo 参数 参数类型 描述 api_id String API的编号。 app_id String APP的编号,可通过查询APP列表获取。 auth_id String 授权编号,授权失败时为空。 reason String 授权或者取消授权失败原因,授权成功时为空。 success Boolean 授权或者取消授权是否成功。 状态码: 401 表8 响应Header参数 参数 参数类型 描述 X-Request-Id String 链路追踪编号 表9 响应Body参数 参数 参数类型 描述 error_code String ModelArts错误码 error_msg String 具体错误信息 状态码: 403 表10 响应Header参数 参数 参数类型 描述 X-Request-Id String 链路追踪编号 表11 响应Body参数 参数 参数类型 描述 error_code String ModelArts错误码 error_msg String 具体错误信息 状态码: 404 表12 响应Header参数 参数 参数类型 描述 X-Request-Id String 链路追踪编号 表13 响应Body参数 参数 参数类型 描述 error_code String ModelArts错误码 error_msg String 具体错误信息 状态码: 500 表14 响应Header参数 参数 参数类型 描述 X-Request-Id String 链路追踪编号 表15 响应Body参数 参数 参数类型 描述 error_code String ModelArts错误码 error_msg String 具体错误信息
  • 响应参数 状态码: 204 表3 响应Header参数 参数 参数类型 描述 X-Request-Id String 链路追踪编号 状态码: 401 表4 响应Header参数 参数 参数类型 描述 X-Request-Id String 链路追踪编号 表5 响应Body参数 参数 参数类型 描述 error_code String ModelArts错误码 error_msg String 具体错误信息 状态码: 403 表6 响应Header参数 参数 参数类型 描述 X-Request-Id String 链路追踪编号 表7 响应Body参数 参数 参数类型 描述 error_code String ModelArts错误码 error_msg String 具体错误信息 状态码: 500 表8 响应Header参数 参数 参数类型 描述 X-Request-Id String 链路追踪编号 表9 响应Body参数 参数 参数类型 描述 error_code String ModelArts错误码 error_msg String 具体错误信息
  • 响应示例 状态码: 200 OK { "api" : { "api_id" : "b9c78dbb50d04230aab90e35e141fccf", "api_name" : "infer_456963f1737c4de08bee5b4f6f3a8fa3", "api_method" : "ANY", "predict_url" : "https://d566c7efafe04a26a83d3a8475602ee3.apig.cn-north-4.huaweicloudapis.com/v1/infers/456963f1-737c-4de0-8bee-5b4f6f3a8fa3", "support_app_code" : true, "service_id" : "456963f1-737c-4de0-8bee-5b4f6f3a8fa3", "service_name" : "service-129c-test" }, "auth_result" : [ { "api_id" : "b9c78dbb50d04230aab90e35e141fccf", "app_id" : "e2fb64be3be9418bb0f570c60f0ed93f", "success" : true } ] }
  • 响应参数 状态码: 200 表5 响应Header参数 参数 参数类型 描述 X-Request-Id String 链路追踪编号 表6 响应Body参数 参数 参数类型 描述 api AuthTypeApiBasicInfo object API详情 auth_result Array of AppAuthResultInfo objects 授权结果 表7 AuthTypeApiBasicInfo 参数 参数类型 描述 api_id String API编号。 api_method String 请求方式包含GET、POST、PUT、DELETE、HEAD、PATCH、OPTIONS、ANY,固定返回ANY。 api_name String API名称。 api_remark String API描述。字符长度不超过255 auth_type String API的认证方式。 NONE:无认证 APP:APP认证 IAM:IAM认证 predict_url String 预测地址。 service_id String 服务编号。 service_name String 服务名称。 support_app_code Boolean 是否支持APP CODE。 表8 AppAuthResultInfo 参数 参数类型 描述 api_id String API的编号。 app_id String APP的编号,可通过查询APP列表获取。 auth_id String 授权编号,授权失败时为空。 reason String 授权或者取消授权失败原因,授权成功时为空。 success Boolean 授权或者取消授权是否成功。 状态码: 400 表9 响应Header参数 参数 参数类型 描述 X-Request-Id String 链路追踪编号 表10 响应Body参数 参数 参数类型 描述 error_code String ModelArts错误码 error_msg String 具体错误信息 状态码: 401 表11 响应Header参数 参数 参数类型 描述 X-Request-Id String 链路追踪编号 表12 响应Body参数 参数 参数类型 描述 error_code String ModelArts错误码 error_msg String 具体错误信息 状态码: 403 表13 响应Header参数 参数 参数类型 描述 X-Request-Id String 链路追踪编号 表14 响应Body参数 参数 参数类型 描述 error_code String ModelArts错误码 error_msg String 具体错误信息 状态码: 500 表15 响应Header参数 参数 参数类型 描述 X-Request-Id String 链路追踪编号 表16 响应Body参数 参数 参数类型 描述 error_code String ModelArts错误码 error_msg String 具体错误信息
  • 请求参数 请求类为RasrRequest,其中参数详见下表 表7 RasrRequest 参数名称 是否必选 参数类型 描述 command 是 String 需设置为START,表示开始识别请求;发送END,表示识别结束请求。 config 是 Object 配置信息,详见表8。 表8 Config 参数名称 是否必选 参数类型 描述 audioFormat 是 String 音频格式,支持pcm,alaw,ulaw等,如pcm8k16bit,参见《API参考》中开始识别章节。 property 是 String 属性字符串,language_sampleRate_domain, 如chinese_16k_general,参见《API参考》中开始识别章节。 addPunc 否 String 表示是否在识别结果中添加标点,取值为yes 、 no,默认no。 digitNorm 否 String 表示是否将语音中的数字识别为阿拉伯数字,取值为yes 、 no,默认为yes。 vadHead 否 Integer 头部最大静音时间,[0, 60000],默认10000ms。 vadTail 否 Integer 尾部最大静音时间,[0, 3000],默认500ms。 maxSeconds 否 Integer 音频最长持续时间, [1, 60],默认30s。 intermediateResult 否 String 是否显示中间结果,yes 或 no,默认no。例如分3次发送音频,选择no结果一次性返回,选择yes分三次返回。 vocabularyId 否 String 热词表id,若没有则不填。 needWordInfo 否 String 表示是否在识别结果中输出分词结果信息,取值为“yes”和“no”,默认为“no”。
  • 初始化Client 初始化RasrClient,其中参数包含AuthInfo,SisHttpCnfig,RasrResponseListener,RasrConnProcessListener 表1 RasrClient 参数名称 是否必选 参数类型 描述 AuthInfo 是 Object 鉴权信息类。 SisHttpCnfig 是 Object 连接时网络的配置类。 RasrResponseListener 是 Object webSocket回调过程中,业务逻辑的Listener。 RasrConnProcessListener 否 Object webSocket生命周期的Listener。 表2 AuthInfo 参数名称 是否必选 参数类型 描述 ak 是 String 用户的ak,可参考AK/SK认证。 sk 是 String 用户的sk,可参考AK/SK认证。 serviceRegion 是 String 区域,如cn-north-4,参考终端节点。 projectId 是 String 项目ID,同region一一对应,参考获取项目ID。 serviceEndPoint 否 String 终端节点,参考地区和终端节点。 表3 SisHttpConfig 参数名称 是否必选 参数类型 描述 connectionTimeout 否 Integer 连接超时,默认10000,单位ms。 readTimeout 否 Integer 读取超时,默认10000,单位ms。 websocketWaitTimeout 否 Integer webSocket返回数据时等待时间,默认20000,单位毫秒。 ProxyHostInfo 否 ProxyHostInfo 代理类。 表4 ProxyHostInfo 参数名称 是否必选 参数类型 描述 userName 否 String 代理用户名(例:test)。 passWord 否 String 代理密码(例:test)。 hostName 否 String 代理地址(例:“proxy.huaweicloud.com”)。 port 否 int 代理端口号(例:8080)。 表5 RasrResponseListener 函数 描述 void onResponseBegin(AsrResponse response); 识别开始时回调。 void onResponseEnd(AsrResponse response); 识别结束时回调。 void onResponseError(AsrResponse response); 识别过程中出现异常,调用。 void onResponseMessage(AsrResponse message); 返回识别的结果。 void onVoiceStart(); 单句模式下,响应VOICE_START事件,表示检测到语音,此时IVR可以做打断(连续模式可忽略)。 void onVoiceEnd(); 单句模式下,响应VOICE_END事件,表示一句话结束,后续的音频将被忽略,不会再进行识别(连续模式可忽略)。 void onExcceededSilence(); 单句模式下,响应EXCEEDED_SILENCE事件,表示超过vad_head没有检测到声音,通常表示用户一直没有说话。此时后续的音频将被忽略,不会再进行识别(连续模式可忽略)。 表6 RasrConnProcessListener 函数 描述 void onTranscriptionConnect() webSocket连接建立后回调。 void onTranscriptionClose(); webSocket连接关闭后回调。 void onTranscriptionFail(AsrResponse var1); webSocket长连接连接失败是回调。
  • 示例代码 如下示例仅供参考,最新代码请前往获取SDK章节获取并运行。 import com.huawei.sis.bean.AuthInfo; import com.huawei.sis.bean.SisConfig; import com.huawei.sis.bean.SisConstant; import com.huawei.sis.bean.request.RasrRequest; import com.huawei.sis.bean.response.RasrResponse; import com.huawei.sis.bean.response.StateResponse; import com.huawei.sis.client.RasrClient; import com.huawei.sis.bean.RasrListener; import com.huawei.sis.util.JsonUtils; /** * 实时语音识别demo * * Copyright 2021 Huawei Technologies Co.,Ltd. */ public class RasrDemo { private static final int DEFAULT_HEAD_SILENCE_TIME = 1000; private static final int DEFAULT_TAIL_SILENCE_TIME = 500; private static final int DEFAULT_CONTINUE_SECONDS = 30; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全; // 本示例以ak和sk保存在环境变量中来实现身份验证为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK。 private String ak = System.getenv("HUAWEICLOUD_SDK_AK"); private String sk = System.getenv("HUAWEICLOUD_SDK_SK"); private String region = ""; // 区域,如cn-north-1、cn-north-4 private String projectId = ""; // 项目id。登录管理控制台,鼠标移动到右上角的用户名上,在下拉列表中选择我的凭证,在项目列表中查看项目id。多项目时,展开“所属区域”,从“项目ID”列获取子项目ID。 private String path = ""; // 本地音频路径,如D:/test.wav, 也可将音频文件、音频流转换为byte数组后进行传送。 private String audioFormat = ""; // 音频格式,如pcm16k16bit private String property = "chinese_16k_general"; // 属性字符串,language_sampleRate_domain,16模型推荐使用chinese_16k_general /** * 实时语音识别参数设置,所有参数设置均为可选,均有默认值。用户根据需求设置参数。 * * @param request request请求,包含各种参数 */ private void setParameters(RasrRequest request) { // 1. 设置是否添加标点符号,yes 或 no, 默认"no" request.setAddPunc("yes"); // 2. 设置头部的最大静音时间,[0,60000], 默认10000ms request.setVadHead(DEFAULT_HEAD_SILENCE_TIME); // 3. 设置尾部最大静音时间,[0, 3000], 默认500ms, request.setVadTail(DEFAULT_TAIL_SILENCE_TIME); // 4. 设置最长持续时间,仅在continue-stream,sentence-stream模式下起作用,[1, 60], 默认30s request.setMaxSeconds(DEFAULT_CONTINUE_SECONDS); // 5. 设置是否显示中间结果,yes或no,默认“no”。例如分3次发送音频,选择no结果一次性返回,选择yes分三次返回。 request.setIntermediateResult("no"); // 6. 设置热词表id, 若没有则设置,否则会报错。 // request.setVocabularyId(""); // 7. 设置是否将音频中数字转写为阿拉伯数字,yes or no,默认yes request.setDigitNorm("no"); } /** * 定义config,所有参数可选,设置超时时间等。 * * @return SisConfig */ private SisConfig getConfig() { SisConfig config = new SisConfig(); // 设置连接超时,默认10000ms config.setConnectionTimeout(SisConstant.DEFAULT_CONNECTION_TIMEOUT); // 设置读取超时,默认10000ms config.setReadTimeout(SisConstant.DEFAULT_READ_TIMEOUT); // 设置pingInterval,默认5000ms,当并发较大时,建议把此值设置大一些。如果不需要ping,可设置为-1 // config.setPingInterval(-1); // 设置代理, 一定要确保代理可用才启动此设置。 代理初始化也可用不加密的代理,new ProxyHostInfo(host, port); // ProxyHostInfo proxy = new ProxyHostInfo(host, port, username, password); // config.setProxy(proxy); return config; } /** * 获取监听器,监听器的监听函数。 * * @return RasrListener,用于监听实时语音识别的开始、识别结果、结束以及失败响应 */ private RasrListener getRasrListener() { RasrListener rasrListener = new RasrListener() { @Override /** * 连接成功回调 */ public void onTranscriptionConnect() { System.out.println("websocket connected"); } @Override /** * 断开连接回调 */ public void onTranscriptionClose() { System.out.println("websocket closed"); } @Override /** * 响应结果回调 */ public void onTranscriptionResponse(RasrResponse response) { printResponse(response); } @Override /** * 识别开始回调 */ public void onTranscriptionBegin(StateResponse response) { printResponse(response); } @Override /** * 识别结束回调 */ public void onSTranscriptionEnd(StateResponse response) { printResponse(response); } @Override /** * 识别出错回调 */ public void onTranscriptionFail(StateResponse response) { printResponse(response); } @Override public void onVoiceStart() { log.info("voice start event"); } @Override public void onVoiceEnd() { log.info("voice end event"); } @Override public void onExcceededSilence() { log.error("exceeded silence event"); } @Override public void onExceededAudio() { log.error("exceeded audio event"); } @Override public void onEvent(String event) { log.warn("receive event {}", event); } }; return rasrListener; } private void printResponse(Object response) { try { System.out.println(JsonUtils.obj2Str(response, true)); } catch (Exception e) { e.printStackTrace(); } } /** * 实时语音识别SDK的工作流程 */ private void process() { // 1. 实现监听器接口RasrListener,用户自定义收到响应的处理逻辑。 RasrListener rasrListener = getRasrListener(); // 2. 初始化RasrClient AuthInfo authInfo = new AuthInfo(ak, sk, region, projectId); RasrClient rasrClient = new RasrClient(authInfo, rasrListener, getConfig()); try { // 3. 配置参数 // audioFormat为支持格式、property为属性字符串 RasrRequest request = new RasrRequest(audioFormat, property); setParameters(request); // 4 选择连接模式,目前实时语音识别提供三种接口,流式一句话、实时语音识别连续模式、实时语音识别单句模式 // 选择1 流式一句话连接 // rasrClient.shortStreamConnect(request); // 选择2,实时语音识别单句模式 // rasrClient.sentenceStreamConnect(request); // 选择3,实时语音识别连续模式 rasrClient.continueStreamConnect(request); // 5. 发送开始请求、发送音频、发送end请求 // 发送开始请求,即将开始请求连带配置发送至服务端 rasrClient.sendStart(); // 发送数据,在实时语音连续模式下可多次发送。识别结果可以通过监听器获取 // 可以自己控制发送速率.byteLen为每次发送大小,sleepTime为每次发送后睡眠时间(ms),一些非持续获取音频场景不需要睡眠,可设置为0. rasrClient.sendAudio(path, 3200, 200); // rasrClient.sendAudio(path); // 可直接发送byte流,即byte数组 // byte[] data = IOUtils.getFileData(path); // rasrClient.sendByte(data); // rasrClient.sendByte(data, byteLen, sleepTime); // 发送结尾请求 rasrClient.sendEnd(); } catch (Exception e) { e.printStackTrace(); } finally { // 6. 关闭客户端。发送完毕后,此步一定要实施,否则服务端因为20s没有接受任何消息而报异常。 rasrClient.close(); } } public static void main(String[] args) { RasrDemo rasrDemo = new RasrDemo(); rasrDemo.process(); } }
  • 使用MRS客户端 在已安装客户端的节点,执行sudo su - omm命令切换用户。执行以下命令切换到客户端目录: cd /opt/client 执行以下命令配置环境变量: source bigdata_env 如果当前集群已启用Kerberos认证,执行以下命令认证当前用户。如果当前集群未启用Kerberos认证,则无需执行此命令。 kinit MRS集群用户 例如,kinit admin。 启用Kerberos认证的MRS集群默认创建“admin”用户账号,用于集群管理员维护集群。 直接执行组件的客户端命令。 例如:使用HDFS客户端命令查看HDFS根目录文件,执行hdfs dfs -ls /。
  • 在集群外节点上安装客户端 创建一个满足要求的弹性云服务器,要求如下: 针对MRS 3.x之前版本的集群,需要先确认当前MRS集群节点的CPU架构。针对MRS 3.x之前版本的集群,该弹性云服务器的CPU架构请和MRS集群节点保持一致,MRS 3.x及之后版本MRS客户端兼容两种CPU架构。 已准备一个弹性云服务器,主机操作系统及版本请参见表1。 表1 参考列表 CPU架构 操作系统 支持的版本号 x86计算 Euler 可用:Euler OS 2.2 可用:Euler OS 2.3 可用:Euler OS 2.5 鲲鹏计算(ARM) Euler 可用:Euler OS 2.8 例如,用户可以选择操作系统为Euler的弹性云服务器准备操作。 同时为弹性云服务分配足够的磁盘空间,例如“40GB”。 弹性云服务器的VPC需要与MRS集群在同一个VPC中。 弹性云服务器的安全组需要和MRS集群Master节点的安全组相同。 如果不同,请修改弹性云服务器安全组或配置弹性云服务器安全组的出入规则允许MRS集群所有安全组的访问。 需要允许用户使用密码方式登录Linux弹性云服务器(SSH方式),请参见SSH密码方式登录。 MRS集群安全组入方向将所有端口对客户端节点放开,具体操作请参考添加安全组规则。 登录MRS Manager页面,具体请参见访问MRS Manager(MRS 3.x之前版本),然后选择“服务管理”。 单击“下载客户端”。 在“客户端类型”选择“完整客户端”。 在“下载路径”选择“远端主机”。 将“主机IP”设置为ECS的IP地址,设置“主机端口”为“22”,并将“存放路径”设置为“/tmp”。 如果使用SSH登录ECS的默认端口“22”被修改,请将“主机端口”设置为新端口。 “存放路径”最多可以包含256个字符。 “登录用户”设置为“root”。 如果使用其他用户,请确保该用户对保存目录拥有读取、写入和执行权限。 在“登录方式”选择“密码”或“SSH私钥”。 密码:输入创建集群时设置的root用户密码。 SSH私钥:选择并上传创建集群时使用的密钥文件。 单击“确定”开始生成客户端文件。 若界面显示以下提示信息表示客户端包已经成功保存。单击“关闭”。客户端文件请到下载客户端时设置的远端主机的“存放路径”中获取。 下载客户端文件到远端主机成功。 若界面显示以下提示信息,请检查用户名密码及远端主机的安全组配置,确保用户名密码正确,及远端主机的安全组已增加SSH(22)端口的入方向规则。然后从2执行重新下载客户端。 连接到服务器失败,请检查网络连接或参数设置。 生成客户端会占用大量的磁盘IO,不建议在集群处于安装中、启动中、打补丁中等非稳态场景下载客户端。 使用VNC方式,登录弹性云服务器。参见远程登录(VNC方式)。 所有镜像均支持Cloud-init特性。Cloud-init预配置的用户名“root”,密码为创建集群时设置的密码。首次登录建议修改。 执行ntp时间同步,使集群外节点的时间与MRS集群时间同步。 检查安装NTP服务有没有安装,未安装请执行yum install ntp -y命令自行安装。 执行vim /etc/ntp.conf命令编辑NTP客户端配置文件,并增加MRS集群中Master节点的IP并注释掉其他server的地址。 server master1_ip prefer server master2_ip 图1 增加Master节点的IP 执行service ntpd stop命令关闭NTP服务。 执行如下命令,手动同步一次时间: /usr/sbin/ntpdate 192.168.10.8 192.168.10.8为主Master节点的IP地址。 执行service ntpd start或systemctl restart ntpd命令启动NTP服务。 执行ntpstat命令查看时间同步结果。 在弹性云服务器,切换到root用户,并将6中“存放路径”中的安装包复制到目录“/opt”,例如“存放路径”设置为“/tmp”时命令如下。 sudo su - root cp /tmp/MRS_Services_Client.tar /opt 在“/opt”目录执行以下命令,解压压缩包获取校验文件与客户端配置包。 tar -xvf MRS_Services_Client.tar 执行以下命令,校验文件包。 sha256sum -c MRS_Services_ClientConfig.tar.sha256 界面显示如下: MRS_Services_ClientConfig.tar: OK 执行以下命令,解压“MRS_Services_ClientConfig.tar”。 tar -xvf MRS_Services_ClientConfig.tar 执行以下命令,安装客户端到新的目录,例如“/opt/Bigdata/client”。安装时自动生成目录。 sh /opt/MRS_Services_ClientConfig/install.sh /opt/Bigdata/client 查看安装输出信息,如有以下结果表示客户端安装成功: Components client installation is complete. 验证弹性云服务器节点是否与集群Master节点的IP是否连通? 例如,执行以下命令:ping Master节点IP地址 是,执行18。 否,检查VPC、安全组是否正确,是否与MRS集群在相同VPC和安全组,然后执行18。 执行以下命令配置环境变量: source /opt/Bigdata/client/bigdata_env 如果当前集群已启用Kerberos认证,执行以下命令认证当前用户。如果当前集群未启用Kerberos认证,则无需执行此命令。 kinit MRS集群用户 例如, kinit admin 执行组件的客户端命令。 例如,执行以下命令查看HDFS目录: hdfs dfs -ls /
  • 使用约束 尽管容灾提供了实时的数据复制功能,但实际的数据同步进展,由多方面的因素决定的,例如,当前主集群业务的繁忙程度,备集群进程的健康状态等。因此,在正常情形下,备集群不应该接管业务。极端情形下是否可以接管业务,可由系统维护人员以及决策人员根据当前的数据同步指标来决定。 容灾功能当前仅支持一主一备。 通常情况下,不允许对备集群的灾备表进行表级别的操作,例如修改表属性、删除表等,一旦误操作备集群后会造成主集群数据同步失败、备集群对应表的数据丢失。 主集群的HBase表已启用容灾功能同步数据,用户每次修改表的结构时,需要手动修改备集群的灾备表结构,保持与主集群表结构一致。
  • 前提条件 主备集群都已经安装并启动成功,且获取集群的管理员权限。 必须保证主备集群间的网络畅通和端口的使用。 如果主集群部署为安全模式且不由一个FusionInsight Manager管理,主备集群必须已配置跨集群互信。如果主集群部署为普通模式,不需要配置跨集群互信。 主备集群必须已配置跨集群拷贝。 主备集群上的时间必须一致,而且主备集群上的NTP服务必须使用同一个时间源。 必须在主备集群的所有节点的hosts文件中,配置主备集群所有机器的机器名与业务IP地址的对应关系。 若主集群的客户端安装在集群外的节点上,也需在该节点的hosts文件中配置主备集群所有机器的机器名与业务IP地址的对应关系。 主备集群间的网络带宽需要根据业务流量而定,不应少于最大的可能业务流量。 主备集群安装的MRS版本需要保持一致。 备集群规模不小于主集群规模。
  • 前提条件 Hive和Oozie组件及客户端已经安装,并且正常运行。 已创建或获取访问Oozie服务的人机用户账号及密码。 该用户需要从属于hadoop、supergroup、hive组,同时添加Oozie的角色操作权限。若使用Hive多实例,该用户还需要从属于具体的Hive实例组,如hive3。 用户同时还需要至少有manager_viewer权限的角色。 获取运行状态的Oozie服务器(任意实例)URL,如“https://10.1.130.10:21003/oozie”。 获取运行状态的Oozie服务器主机名,如“10-1-130-10”。 获取Yarn ResourceManager主节点IP,如10.1.130.11。
  • 操作场景 该任务指导用户在使用Oozie客户端提交Hive任务 Hive任务有如下类型: Hive作业 使用JDBC方式连接的Hive作业。 Hive2作业 使用Beeline方式连接的Hive作业。 本文以使用Oozie客户端提交Hive作业为例介绍。 使用Oozie客户端提交Hive2作业与提交Hive作业操作步骤一致,只需将操作步骤中对应路径的“/Hive”改成“/Hive2”即可。 例如,Hive作业运行目录“/opt/client/Oozie/oozie-client-*/examples/apps/hive/”,则Hive2对应的运行目录为“/opt/client/Oozie/oozie-client-*/examples/apps/hive2/”。 建议下载使用最新版本的客户端。
  • 操作步骤 以客户端安装用户,登录安装Oozie客户端的节点。 执行以下命令,获取安装环境信息。其中“/opt/client”为客户端安装路径,该操作的客户端目录只是举例,请根据实际安装目录修改。 source /opt/client/bigdata_env 判断集群认证模式。 安全模式,执行kinit命令进行用户认证。 例如,使用oozieuser用户进行认证。 kinit oozieuser 普通模式,执行4。 执行以下命令,进入样例目录。 cd /opt/client/Oozie/oozie-client-*/examples/apps/hive/ 该目录下需关注文件如表1所示。 表1 文件说明 文件名称 描述 hive-site.xml Hive任务的配置文件。 job.properties 工作流的参数变量定义文件。 script.q Hive任务的SQL脚本。 workflow.xml 工作流的规则定制文件。 执行以下命令,编辑“job.properties”文件。 vi job.properties 修改如下内容: 更改“userName”的参数值为提交任务的人机用户名,例如“userName=oozieuser”。 执行oozie job命令,运行工作流文件。 oozie job -oozie https://oozie角色的主机名:21003/oozie/ -config job.properties -run 命令参数解释如下: -oozie:实际执行任务的Oozie服务器URL。 -config:工作流属性文件。 -run:运行工作流。 执行完工作流文件,显示job id表示提交成功,例如:job: 0000021-140222101051722-oozie-omm-W。登录Oozie管理页面,查看运行情况。 使用oozieuser用户,登录Oozie WebUI页面:https://oozie角色的ip地址:21003/oozie 。 Oozie的WebUI界面中,可在页面表格根据jobid查看已提交的工作流信息。
  • Hive数据脱敏 Ranger支持对Hive数据进行脱敏处理(Data Masking),可对用户执行的select操作的返回结果进行处理,以屏蔽敏感信息。 登录Ranger WebUI界面,在首页中单击“HADOOP SQL”区域的“Hive” 在“Masking”页签单击“Add New Policy”,添加Hive权限控制策略。 根据业务需求配置相关参数。 表3 Hive数据脱敏参数 参数名称 描述 Policy Name 策略名称,可自定义,不能与本服务内其他策略名称重复。 Policy Conditions IP过滤策略,可自定义,配置当前策略适用的主机节点,可填写一个或多个IP或IP段,并且IP填写支持“*”通配符,例如:192.168.1.10,192.168.1.20或者192.168.1.*。 Policy Label 为当前策略指定一个标签,您可以根据这些标签搜索报告和筛选策略。 Hive Database 配置当前策略适用的Hive中数据库名称。 Hive Table 配置当前策略适用的Hive中的表名称。 Hive Column 可添加列名。 Description 策略描述信息。 Audit Logging 是否审计此策略。 Mask Conditions 在“Select Role”、“Select Group”、“Select User”列选择已创建好的需要授予权限的对象,单击“Add Conditions”,添加策略适用的IP地址范围,然后在单击“Add Permissions”,勾选“select”权限。 单击“Select Masking Option”,选择数据脱敏时的处理策略: Redact:用x屏蔽所有字母字符,用0屏蔽所有数字字符。 Partial mask: show last 4:只显示最后的4个字符,其他用x代替。 Partial mask: show first 4:只显示开始的4个字符,其他用x代替。 Hash:用值的哈希值替换原值,采用的是hive的内置mask_hash函数,只对string、char、varchar类型的字段生效,其他类型的字段会返回NULL值。 Nullify:用NULL值替换原值。 Unmasked(retain original value):原样显示。 Date: show only year:仅显示日期字符串的年份部分,并将月份和日期默认为01/01。 Custom:可使用任何有效返回与被屏蔽的列中的数据类型相同的数据类型来自定义策略。 如需添加多列的脱敏策略,可单击按钮添加。 单击“Add”,在策略列表可查看策略的基本信息。 用户通过Hive客户端对配置了数据脱敏策略的表执行select操作,系统将对数据进行处理后进行展示。 处理数据需要用户同时具有向Yarn队列提交任务的权限。
  • 前提条件 Oozie组件及客户端已经安装,并且正常运行。 已创建或获取访问Oozie服务的人机用户账号及密码。 Shell任务: 该用户需要从属于hadoop、supergroup组,添加Oozie的角色操作权限,并确保Shell脚本在每个nodemanager节点都有执行权限。 SSH任务: 该用户需要从属于hadoop、supergroup组,添加Oozie的角色操作权限,并完成互信配置。 其他任务: 该用户需要从属于hadoop、supergroup组,添加Oozie的角色操作权限,并具备对应任务类型所需的权限。 用户同时还需要至少manager_viewer权限的角色。 获取运行状态的Oozie服务器(任意实例)URL,如“https://10.1.130.10:21003/oozie”。 获取运行状态的Oozie服务器主机名,如“10-1-130-10”。 获取Yarn ResourceManager主节点IP,如10.1.130.11。
共100000条