云服务器内容精选

  • 操作流程 开始使用如下样例前,请务必按准备工作指导完成必要操作。 创建LakeFormation实例:创建一个独享型LakeFormation实例。 创建存储元数据的OBS路径:创建用于存储元数据的OBS路径。 创建Catalog:创建一个名称为“catalog1”的Catalog。 创建LakeFormation角色:创建一个名为“lakeformation_role”的角色,并为当前用户绑定该角色。 为角色授予操作Catalog的权限:为“lakeformation_role”授予“catalog1”的修改、创建数据库的权限。
  • 操作场景 本入门提供从零开始创建LakeFormation实例及其Catalog元数据,并创建LakeFormation角色,对角色授予修改Catalog、创建数据库的权限。授权后,绑定该角色的用户将同时拥有该角色的权限。 用户可以在管理控制台的LakeFormation实例界面,针对该实例下的所有授权类型(Catalog、数据库、数据表、函数、OBS路径),授予授权主体(用户组、角色、 IAM 用户、委托用户)细粒度的数据访问权限。
  • 操作流程 开始使用如下样例前,请务必按准备工作指导完成必要操作。 创建LakeFormation实例:创建一个独享型LakeFormation实例。 创建存储元数据的OBS路径:创建用于存储元数据的OBS路径。 创建Catalog:创建一个名称为“catalog1”的Catalog。 创建数据库:在名称为“catalog1”的Catalog下创建一个名称为“database1”的数据库。 创建数据表:在名称为“database1”的数据库下创建一个名称为“table_A”的数据表。
  • 入门实践 当用户完成LakeFormation实例创建后,可以根据自身的业务需求使用LakeFormation提供的一系列常用实践。 表1 常用最佳实践 实践 描述 与开源组件对接使用 配置LakeFormation对接开源Spark组件 本实践指导用户对接开源Spark组件的操作,并提供以下二次开发样例。 自定义认证信息获取类:用于获取访问LakeFormation服务的IAM认证信息。 自定义用户信息获取类:用于获取当前访问LakeFormation的用户。 配置LakeFormation对接开源Hive组件 本实践指导用户对接开源Hive组件的操作,并提供以下二次开发样例。 自定义认证信息获取类:用于获取访问LakeFormation服务的IAM认证信息。 自定义用户信息获取类:用于获取当前访问LakeFormation的用户。 数据迁移 配置LakeFormation对接 MRS 本实践指导用户在创建MRS 3.3.0-LTS集群时配置LakeFormation数据连接,并在创建完成后配置MRS集群相关参数完成与LakeFormation的对接。
  • MRS对接LakeFormation约束说明 MRS对接LakeFormation前,需要注意以下约束限制: MRS集群和LakeFormation实例必须同在一个云账户下且属于同一个Region。 LakeFormation侧创建的接入客户端所在虚拟私有云,必须与MRS集群在同一虚拟私有云下。 MRS集群仅支持对接LakeFormation实例中名称为hive的Catalog。 MRS存量集群需要先完成元数据库和权限策略向LakeFormation实例上迁移,再配置对接。 如果需要迁移多个MRS集群中的元数据到同一个LakeFormation实例,MRS集群之间的Database名称不能重复。 MRS对接LakeFormation后,MRS组件功能约束限制: Hive暂不支持临时表功能。 Hive暂不支持跨集群的列加密表功能。 Hive WebHCat暂不支持对接LakeFormation。 Hive创建内表时如果表目录不为空,则禁止创建表。 Hudi表创建前,需要先在LakeFormation上添加Hudi表目录的路径授权,赋予OBS读写权限。 Hudi表不支持在LakeFormation管理面编辑表的字段,只能通过Hudi客户端增删改表的字段。 Flink读写Hudi场景下同步Hive表,仅支持使用hive_sync.mode=jdbc,不支持hms方式。 Spark使用小权限用户登录客户端创建数据库时,如果用户没有default库的OBS路径权限,将提示缺少权限,实际创建数据库成功。 MRS对接LakeFormation后,权限策略约束限制: 通过LakeFormation授权仅支持将LakeFormation角色作为授权主体,不支持IAM用户或IAM用户组作为授权主体。 PolicySync进程不会修改集群内RangerAdmin Hive模块的默认策略,默认策略仍然生效。 PolicySync进程启动后,会与LakeFormation实例的权限进行比对,删除LakeFormation上不存在的非默认策略,请先完成权限策略迁移到LakeFormation实例上。 RangerAdmin WebUI界面的Hive模块,禁止执行添加、删除权限非默认策略的操作,统一在LakeFormation实例的数据权限界面进行授权操作。 MRS集群取消对接LakeFormation后,RangerAdmin的非默认策略不会清理,需要人工进行清理。 Hive暂不支持Grant授权的SQL语句,需统一在LakeFormation实例的数据权限界面进行授权操作。 MRS暂不支持LakeFormation行过滤权限能力。
  • 创建集群时配置LakeFormation数据连接 进入购买MRS集群页面。 单击“购买集群”,进入“购买集群”页面。 在购买集群页面,选择“自定义购买”。 参考购买自定义拓扑集群进行配置并创建集群,且集群需满足表1中要求。 表1 LakeFormation数据连接参数说明 参数 参数说明 版本类型 LTS版 集群版本 选择配置对接的MRS集群版本。 当前仅MRS 3.3.0-LTS及之后版本支持在创建集群时配置LakeFormation数据连接。 组件选择 必须包含Hadoop、Ranger、Hive、Guardian、Spark(可选)、Flink(可选)等组件。 例如,配置如下图所示,不同版本集群可能存在差异,具体界面显示以实际为准。 元数据 选择“外置数据连接”,并配置以下参数: LakeFormation元数据:单击按钮开启。 LakeFormation连接实例:选择创建LakeFormation数据连接已创建的LakeFormation数据连接名称。 数据连接类型:保持默认。 例如,配置如下图所示,不同版本集群可能存在差异,具体界面显示以实际为准。 虚拟私有云 与LakeFormation数据连接所在的虚拟私有云保持一致。 子网 选择子网名称。 拓扑调整 选择“开启”,并确认Ranger组件至少添加1个PolicySync(PSC)实例(该实例部署节点需要同时包含RangerAdmin实例)、Guardian组件至少添加2个TokenSever(TS)实例。 例如,配置如下图所示,不同版本集群可能存在差异,具体界面显示以实际为准。 Kerberos认证 开启 委托 勾选“高级配置”后的“现在配置”,“委托”选择“现有委托”,并选择创建对接E CS /BMS云服务委托创建的委托。 例如,配置如下图所示,不同版本集群可能存在差异,具体界面显示以实际为准。 等待集群创建完成后,在“现有集群”页面单击已创建的MRS集群名称,在“概览”页签单击“IAM用户同步”后的“同步”,根据界面提示同步当前用户。 参考配置MRS 3.3.0-LTS版本集群配置组件存算分离、下载客户端等操作。
  • 创建LakeFormation数据连接 创建LakeFormation数据连接的功能,需要联系技术支持申请开通白名单。 登录MRS控制台,在导航栏选择“数据连接”。 单击“新建数据连接 ”。 参考表1配置相关参数,单击“确定”完成创建。 表1 配置LakeFormation数据连接 参数 示例 说明 类型 LakeFormation 选择“LakeFormation”,当前仅MRS 3.3.0-LTS及之后版本支持连接该类型。 名称 mrs_LakeFormation 数据连接的名称。 LakeFormation实例 - 选择LakeFormation实例名称。 该实例需要先在LakeFormation实例创建后在此处引用,具体请参考创建LakeFormation实例。单击“查看LakeFormation实例”查看已创建的实例。 虚拟私有云 - 需要与待对接的MRS集群在同一虚拟私有云。 子网 - 选择子网名称。 VPC终端节点 - 选择VPC终端节点,或单击“创建对应LakeFormation实例的VPC终端节点”进行创建。 选择VPC终端节点后,产生的费用将由VPCEP服务收取。 LakeFormation委托 现有委托 选择“现有委托”,并选择创建对接LakeFormation权限的委托创建的委托,例如“visit_lakeformation_agency”。 图3 新建LakeFormation数据连接 创建完成后,在“数据连接”页面记录已创建数据连接的ID。
  • 创建对接ECS/BMS云服务委托 登录华为云管理控制台,选择“ 统一身份认证 服务”。 在左侧导航栏选择“委托”,单击右上角的“创建委托”,设置相关参数,单击“下一步”。 参数选择如下: 委托名称:例如“lakeformation_test” 委托类型:选择“云服务” 云服务:选择“ECS BMS” 持续时间:根据实际情况自定义 在选择策略界面右上角单击“新建策略”,配置如下信息,单击“下一步”。 策略名称:自定义 策略配置方式:选择JSON视图 策略内容:配置如下信息 授予给自身账号具备访问LakeFormation权限的委托ID:可参考步骤 6获取。 授予给自身账号具备访问OBS权限的委托ID:可参考步骤 6获取。 { "Version": "1.1", "Statement": [ { "Action": [ "iam:agencies:assume" ], "Resource": { "uri": [ "/iam/agencies/授予给自身账号具备访问LakeFormation权限的委托ID", "/iam/agencies/授予给自身账号具备访问OBS权限的委托ID" ] }, "Effect": "Allow" } ] } 选择新创建的自定义委托名称,单击“下一步”。 “设置最小授权范围”根据实际情况选择授权的资源范围,单击“确定”,创建委托完成。
  • 创建对接LakeFormation权限的委托 登录华为云管理控制台,选择“统一身份认证服务 IAM”。 在左侧导航栏选择“委托”,单击右上角的“创建委托”,配置相关参数,单击“下一步”。 参数配置如下: 委托名称:例如“visit_lakeformation_agency” 委托类型:选择“普通账号” 委托的账号:输入被委托的华为云账号名称 持续时间:根据实际情况自定义 图1 创建委托 在选择策略界面右上角单击“新建策略”,配置如下信息,单击“下一步”。 策略名称:例如“dev_visit_lakeformation” 策略配置方式:“可视化视图”或“JSON视图” 策略内容: 策略中必须包含“lakeformation:policy:export”和“lakeformation:role:describe”。其他参数按照实际需求进行配置。 可视化视图:“云服务”选择“ 湖仓构建 ”;“操作”中选择所需操作权限。其他参数按照实际需求进行配置。 JSON视图,例如配置策略内容如下: { "Version": "1.1", "Statement": [ { "Effect": "Allow", "Action": [ "lakeformation:table:create", "lakeformation:database:alter", "lakeformation:table:alter", "lakeformation:database:drop", "lakeformation:database:create", "lakeformation:role:describe", "lakeformation:policy:create", "lakeformation:policy:export", "lakeformation:function:alter", "lakeformation:function:describe", "lakeformation:table:drop", "lakeformation:catalog:describe", "lakeformation:table:describe", "lakeformation:function:drop", "lakeformation:database:describe", "lakeformation:function:create", "lakeformation:transaction:operate", "lakeformation:policy:drop", "lakeformation:policy:describe" ] } ] } 勾选新建的策略名称例如“dev_visit_lakeformation”,单击“下一步”。 “设置最小授权范围”根据实际情况选择授权的资源范围,单击“确定”,创建委托。 在“委托”页面,将鼠标移动到新创建的委托名称上,获取具备访问LakeFormation权限的委托ID。 图2 查看委托ID
  • 创建对接OBS权限的委托 登录华为云管理控制台,选择“统一身份认证服务”。 在左侧导航栏选择“委托”,单击右上角的“创建委托”,选择相关参数,单击“下一步”。 参数选择如下: 委托名称:例如“visit_obs_agency” 委托类型:选择“普通账号” 委托的账号:输入被委托的华为云账号名称 持续时间:根据实际情况自定义 在选择策略界面右上角单击“新建策略”,配置如下信息,单击“下一步”。 策略名称:例如“dev_visit_obs” 策略配置方式:JSON视图 策略内容:填入如下信息 { "Version": "1.1", "Statement": [ { "Effect": "Allow", "Action": [ "obs:bucket:GetBucketLocation", "obs:bucket:ListBucketMultipartUploads", "obs:object:GetObject", "obs:object:ModifyObjectMetaData", "obs:object:DeleteObject", "obs:object:ListMultipartUploadParts", "obs:bucket:HeadBucket", "obs:object:AbortMultipartUpload", "obs:bucket:ListBucket", "obs:object:PutObject" ], "Resource": [ "OBS:*:*:bucket:*", "OBS:*:*:object:*" ] } ] } Resource参数中“bucket”的参数值表示OBS桶名称,“object”的参数值表示OBS对象名称,可根据需要指定名称。配置为“*”表示对所有OBS桶或OBS对象适用此策略。 其他参数按照实际需求进行配置。 勾选新建的策略名称例如“dev_visit_obs”,单击“下一步”。 “设置最小授权范围”根据实际情况选择授权的资源范围,单击“确定”,创建委托。 在“委托”页面,将鼠标移动到新创建的委托名称上,获取具备访问OBS权限的委托ID。
  • 对接OBS 在“spark/conf/spark-defaults.conf”中添加以下配置: # 对接OBS固定配置,Endpoint需要根据区域进行配置 spark.hadoop.fs.obs.impl=org.apache.hadoop.fs.obs.OBSFileSystem spark.hadoop.fs.AbstractFileSystem.obs.impl=org.apache.hadoop.fs.obs.OBS spark.hadoop.fs.obs.endpoint=obs.xxx.huawei.com # 指定访问OBS凭证获取类为LakeFormationObsCredentialProvider spark.hadoop.fs.obs.credentials.provider=com.huawei.cloud.dalf.lakecat.client.obs.LakeFormationObsCredentialProvider # 可选参数,关闭OBS文件系统缓存,长任务需要增加该配置,避免缓存中的临时AKSK失效 spark.hadoop.fs.obs.impl.disable.cache=true Endpoint:不同服务不同区域的Endpoint不同。您可以从地区和终端节点中获取。 将上述配置添加到core-site.xml文件中亦可生效,添加时需要去除“spark.hadoop”前缀。
  • 集成SQL鉴权插件 使用鉴权插件必须实现并指定自定义用户信息获取类,详细操作请参考自定义用户信息获取类。 在spark-default.conf配置文件中添加如下配置: com.huawei.cloud.dalf.lakecat.client.spark.v31.authorizer.LakeFormationSparkSQLExtension spark.sql.extensions=com.huawei.cloud.dalf.lakecat.client.spark.authorizer.LakeFormationSparkSQLExtension 集成权限插件后,如果当前用户(通过自定义用户信息获取类指定)无对应元数据权限,在执行SQL时将抛出异常。 当前用户如果拥有IAM LakeFormation:policy:create权限,且当前用户(可通过自定义用户信息获取类指定)和认证信息(可通过自定义认证信息获取类指定)为统一用户,将跳过SQL鉴权。 当前,过滤相关功能暂未支持,包括库、表、行过滤,列掩码等。
  • 对接通用配置 在“spark/conf/spark-defaults.conf”中添加以下配置: # 项目ID,必选参数,此处配置值仅作为参考 spark.hadoop.lakeformation.project.id=项目ID # LakeFormation实例ID,可选参数,通过LakeFormation实例界面获取,如不填写则连接到默认实例,此处配置值仅作为参考 spark.hadoop.lakeformation.instance.id=LakeFormation实例ID #访问lakeformation IAM认证AK信息,可选参数,如果为自定义认证信息获取类可忽略 spark.hadoop.lakeformation.authentication.access.key=AK信息 #访问lakeformation IAM认证SK信息,可选参数,如果为自定义认证信息获取类可忽略 spark.hadoop.lakeformation.authentication.secret.key=SK信息 #访问lakeformation IAM认证信息securitytoken,可选参数,搭配临时AK/SK使用,如果使用永久AK/SK或自定义认证信息获取类可忽略 spark.hadoop.lakeformation.authentication.security.token=securitytoken信息 其中项目ID为必选配置,其他为可选配置,根据实际情况进行填写。 项目ID:可参考获取项目ID获取。 LakeFormation实例ID:可参考如何获取LakeFormation实例ID获取。 AK/SK信息可参考如何获取AK/SK获取。 securitytoken可参考通过token获取临时访问密钥和securitytoken获取。 将上述配置添加到hive-site.xml或core-site.xml中亦可生效,添加时需要去除“spark.hadoop”前缀。
  • 响应示例 状态码:400 Bad Request { "error_code" : "common.01000001", "error_msg" : "failed to read http request, please check your input, code: 400, reason: Type mismatch., cause: TypeMismatchException" } 状态码:401 Unauthorized { "error_code": 'APIG.1002', "error_msg": 'Incorrect token or token resolution failed' } 状态码:403 Forbidden { "error" : { "code" : "403", "message" : "X-Auth-Token is invalid in the request", "error_code" : null, "error_msg" : null, "title" : "Forbidden" }, "error_code" : "403", "error_msg" : "X-Auth-Token is invalid in the request", "title" : "Forbidden" } 状态码:404 Not Found { "error_code" : "common.01000001", "error_msg" : "response status exception, code: 404" } 状态码:408 Request Timeout { "error_code" : "common.00000408", "error_msg" : "timeout exception occurred" } 状态码:500 Internal Server Error { "error_code" : "common.00000500", "error_msg" : "internal error" }
  • 响应参数 状态码:400 表3 响应Body参数 参数 参数类型 描述 error_code String 错误码。 error_msg String 错误描述。 common_error_code String CBC公共错误码。 solution_msg String 解决方案描述。 状态码:401 表4 响应Body参数 参数 参数类型 描述 error_code String 错误码。 error_msg String 错误描述。 common_error_code String CBC公共错误码。 solution_msg String 解决方案描述。 状态码:403 表5 响应Body参数 参数 参数类型 描述 error Error object 错误信息。 error_code String 错误码。 error_msg String 错误描述。 title String 标题。 表6 Error 参数 参数类型 描述 error_code String 错误码。 error_msg String 错误描述。 title String 标题。 message String 错误信息。 code String 状态码。 状态码:404 表7 响应Body参数 参数 参数类型 描述 error_code String 错误码。 error_msg String 错误描述。 common_error_code String CBC公共错误码。 solution_msg String 解决方案描述。 状态码:408 表8 响应Body参数 参数 参数类型 描述 error_code String 错误码。 error_msg String 错误描述。 common_error_code String CBC公共错误码。 solution_msg String 解决方案描述。 状态码:500 表9 响应Body参数 参数 参数类型 描述 error_code String 错误码。 error_msg String 错误描述。 common_error_code String CBC公共错误码。 solution_msg String 解决方案描述。