云服务器内容精选

  • MRS Administrator策略内容 { "Depends": [ { "catalog": "BASE", "display_name": "Server Administrator" }, { "catalog": "BASE", "display_name": "Tenant Guest" } ], "Version": "1.0", "Statement": [ { "Action": [ "MRS:MRS:*" ], "Effect": "Allow" } ] }
  • MRS CommonOperations策略内容 { "Version": "1.1", "Statement": [ { "Action": [ "mrs:*:get*", "mrs:*:list*", "ecs:*:get*", "ecs:*:list*", "bms:*:get*", "bms:*:list*", "evs:*:get*", "evs:*:list*", "vpc:*:get*", "vpc:*:list*", "mrs:job:submit", "mrs:job:stop", "mrs:job:delete", "mrs:job:checkSql", "mrs:job:batchDelete", "mrs:file:create", "mrs:file:delete", "mrs:tag:batchOperate", "mrs:tag:create", "mrs:tag:delete", "mrs:manager:access", "mrs:patch:install", "mrs:patch:uninstall", "mrs:ops:grant", "mrs:ops:shareLog", "mrs:alarm:subscribe", "mrs:alarm:delete", "kms:*:get*", "kms:*:list*", "rds:*:get*", "rds:*:list*", "mrs:bootstrap:*", "bss:*:view*" ], "Effect": "Allow" }, { "Action": [ "mrs:cluster:create", "mrs:cluster:resize", "mrs:cluster:scaleUp", "mrs:cluster:delete", "mrs:cluster:policy" ], "Effect": "Deny" } ] }
  • MRS FullAccess策略内容 { "Version": "1.1", "Statement": [ { "Action": [ "mrs:*:*", "ecs:*:*", "bms:*:*", "evs:*:*", "vpc:*:*", "kms:*:*", "rds:*:*", "bss:*:*" ], "Effect": "Allow" } ] }
  • MRS ReadOnlyAccess策略内容 { "Version": "1.1", "Statement": [ { "Action": [ "mrs:*:get*", "mrs:*:list*", "mrs:tag:count", "ecs:*:get*", "ecs:*:list*", "bms:*:get*", "bms:*:list*", "evs:*:get*", "evs:*:list*", "vpc:*:get*", "vpc:*:list*", "kms:*:get*", "kms:*:list*", "rds:*:get*", "rds:*:list*", "bss:*:view*" ], "Effect": "Allow" }, { "Action": [ "mrs:cluster:create", "mrs:cluster:resize", "mrs:cluster:scaleUp", "mrs:cluster:delete", "mrs:cluster:policy", "mrs:job:submit", "mrs:job:stop", "mrs:job:delete", "mrs:job:batchDelete", "mrs:file:create", "mrs:file:delete", "mrs:tag:batchOperate", "mrs:tag:create", "mrs:tag:delete", "mrs:manager:access", "mrs:patch:install", "mrs:patch:uninstall", "mrs:ops:grant", "mrs:ops:shareLog", "mrs:alarm:subscribe" ], "Effect": "Deny" } ] }
  • MRS权限说明 默认情况下,管理员创建的 IAM 用户没有任何权限,需要将其加入用户组,并给用户组授予策略或角色,才能使得用户组中的用户获得对应的权限,这一过程称为授权。授权后,用户就可以基于被授予的权限对云服务进行操作。 MRS部署时通过物理区域划分,为项目级服务。授权时,“作用范围”需要选择“区域级项目”,然后在指定区域(如华北-北京1)对应的项目(cn-north-1)中设置相关权限,并且该权限仅对此项目生效;如果在“所有项目”中设置权限,则该权限在所有区域项目中都生效。访问MRS时,需要先切换至授权区域。 权限模型根据授权精细程度分为角色和策略。 角色:IAM最初提供的一种根据用户的工作职能定义权限的粗粒度授权机制。该机制以服务为粒度,提供有限的服务相关角色用于授权。由于各服务之间存在业务依赖关系,因此给用户授予角色时,可能需要一并授予依赖的其他角色,才能正确完成业务。角色并不能满足用户对精细化授权的要求,无法完全达到企业对权限最小化的安全管控要求。 策略:IAM最新提供的一种细粒度授权的能力,可以精确到具体服务的操作、资源以及请求条件等。基于策略的授权是一种更加灵活的授权方式,能够满足企业对权限最小化的安全管控要求。例如:针对MRS服务,管理员能够控制IAM用户仅能对集群进行指定的管理操作。如不允许某用户组删除集群,仅允许操作MRS集群基本操作,如创建集群、查询集群列表等。多数细粒度策略以API接口为粒度进行权限拆分,MRS支持的API授权项请参见权限策略和授权项。 如表1所示,包括了MRS的所有默认系统策略。 表1 MRS系统策略 策略名称 描述 策略类别 MRS FullAccess MRS管理员权限,拥有该权限的用户可以拥有MRS所有权限。 细粒度策略 MRS CommonOperations MRS服务普通用户权限,拥有该权限的用户可以拥有MRS服务使用权限,无新增、删除资源权限。 细粒度策略 MRS ReadOnlyAccess MRS服务只读权限,拥有该权限的用户仅能查看MRS的资源。 细粒度策略 MRS Administrator 操作权限: 对MRS服务的所有执行权限。 拥有该权限的用户必须同时拥有Tenant Guest和Server Administrator权限。 RBAC策略 表2列出了MRS常用操作与系统权限的授权关系,您可以参照该表选择合适的系统权限。 表2 常用操作与系统策略的授权关系 操作 MRS FullAccess MRS CommonOperations MRS ReadOnlyAccess MRS Administrator 创建集群 √ x x √ 调整集群 √ x x √ 升级节点规格 √ x x √ 删除集群 √ x x √ 查询集群详情 √ √ √ √ 查询集群列表 √ √ √ √ 设置弹性伸缩策略 √ x x √ 查询主机列表 √ √ √ √ 查询操作日志 √ √ √ √ 创建并执行作业 √ √ x √ 停止作业 √ √ x √ 删除单个作业 √ √ x √ 批量删除作业 √ √ x √ 查询作业详情 √ √ √ √ 查询作业列表 √ √ √ √ 新建文件夹 √ √ x √ 删除文件 √ √ x √ 查询文件列表 √ √ √ √ 批量操作集群标签 √ √ x √ 创建单个集群标签 √ √ x √ 删除单个集群标签 √ √ x √ 按照标签查询资源列表 √ √ √ √ 查询集群标签 √ √ √ √ 访问Manager页面 √ √ x √ 查询补丁列表 √ √ √ √ 安装补丁 √ √ x √ 卸载补丁 √ √ x √ 运维通道授权 √ √ x √ 运维通道日志共享 √ √ x √ 查询告警列表 √ √ √ √ 订阅告警消息提醒 √ √ x √ 提交SQL语句 √ √ x √ 查询SQL结果 √ √ x √ 取消SQL执行任务 √ √ x √
  • Hadoop 一个分布式系统框架。用户可以在不了解分布式底层细节的情况下,开发分布式程序,充分利用了集群的高速运算和存储。Hadoop能够对大量数据以可靠的、高效的、可伸缩的方式进行分布式处理。Hadoop是可靠的,因为它假设计算单元和存储会失败,因此维护多个工作数据副本,确保对失败节点重新分布处理;Hadoop是高效的,因为它以并行的方式工作,从而加快处理速度;Hadoop是可伸缩的,能够处理PB级数据。Hadoop主要由HDFS、MapReduce、HBase和Hive等组成。
  • 堆内存(Heap Memory) 堆是JVM运行时数据区域,所有类实例和数组的内存均从此处分配。初始堆内存根据JVM启动参数-Xms控制。 最大堆内存(Maximum Heap Memory):系统可以分配给程序的最大堆内存,JVM启动参数-Xmx指定。 分配的堆内存(Committed Heap Memory):为保证程序运行系统分配的堆内存总量,在程序运行期间根据使用情况,会在初始堆内存和最大堆内存之间波动变化。 使用的堆内存(Used Heap Memory):当前程序运行时已经使用的堆内存,这个内存小于分配的堆内存。 非堆内存:在JVM中堆之外的内存称为非堆内存(Non Heap Memory),JVM自身运行时所需要的内存区域,非堆内存有多个内存池,通常包括以下3个部分: 代码缓存区(Code Cache):主要用于存放JIT所编译的代码。默认限制240MB,可以通过JVM启动参数-XX:InitialCodeCacheSize -XX:ReservedCodeCacheSize进行设置。 类指针压缩空间(Compressed Class Space):存储类指针的元数据,默认限制1024MB,通过JVM启动参数-XX:CompressedClassSpaceSize进行设置。 元空间(Metaspace):用于存放元数据,通过JVM启动参数-XX:MetaspaceSize -XX:MaxMetaspaceSize进行设置。 最大非堆内存(Maximum Non Heap Memory):系统可以分配给程序的最大非堆内存。其值为代码缓存区、类指针压缩空间、元空间最大值之和。 分配的非堆内存(Committed Non Heap Memory):为保证程序运行的系统非堆内存总量,在程序运行期间根据使用的非堆内存情况,会在初始非堆内存和最大非堆内存之间波动变化。 使用非堆内存(Used Non Heap Memory):当前程序运行时已经使用的非堆内存,这个值小于分配的非堆内存。
  • 数据完整性 通过数据校验,保证数据在存储、传输过程中的数据完整性。 MRS的用户数据保存在HDFS中,HDFS默认采用CRC32C算法校验数据的正确性,同时也支持CRC32校验算法,CRC32C校验速度快于CRC32。HDFS的DataNode节点负责存储校验数据,如果发现客户端传递过来的数据有异常(不完整)就上报给客户端,让客户端重新写入数据。客户端从DataNode读数据的时候也一样要检查数据是否完整,如果发现数据不完整,会尝试从其他的DataNode节点上读取数据。
  • 数据保密性 MRS分布式文件系统在Apache Hadoop版本基础上提供对文件内容的加密存储功能,避免敏感数据明文存储,提升数据安全性。 业务应用只需对指定的敏感数据进行加密,加解密过程业务完全不感知。在文件系统 数据加密 基础上,Hive服务支持列加密(参见使用Hive列加密功能),可以在创建表时指定加密算法实现对敏感数据的加密存储。HBase支持加密HFile和WAL内容,用户可以配置AES和SM4(也称为 SMS 4)算法进行数据的加密存储(参见加密HFile和WAL内容)。
  • MemArtsCC结构 MemArtsCC由C CS ideCar和CCWorker两个角色组成。 在存算架构下,Spark、Hive等计算分析应用的数据存储在 对象存储服务 (OBS)中。在MemArtsCC集群上一个服务实例称为Worker,对于OBS上的对象数据,Worker缓存其中部分或全部分片到本地的持久化存储(SSD/HDD)中。上层应用通过MemArtsCC SDK读取某个对象时,基于分片索引到特定的Worker上读取分片数据,如果命中缓存则Worker返回对应分片,如果未命中则直接从OBS中读取数据,同时Worker端会异步的加载未命中的分片到本地存储中,供后续使用。 图1 MemArtsCC结构 表1 MemArtsCC结构图说明 名称 说明 MemArtsCC SDK 提供OBSA(OBSA,Hadoop客户端插件)客户端使用的可访问OBS服务器对象的SDK。 CCSideCar MemArtsCC的管理面服务,提供MemArtsCC服务监控采集、配置下发、服务启停等能力。 CCWorker MemArtsCC的数据面服务,支持MemArtsCC的缓存数据读写、存储、淘汰等能力。
  • HoodieDeltaStreamer流式写入 Hudi自带HoodieDeltaStreamer工具支持流式写入,也可以使用SparkStreaming以微批的方式写入。HoodieDeltaStreamer提供以下功能: 支持Kafka,DFS多种数据源接入 。 支持管理检查点、回滚和恢复,保证exactly once语义。 支持自定义转换操作。 示例: 准备配置文件kafka-source.properties #hudi配置 hoodie.datasource.write.recordkey.field=id hoodie.datasource.write.partitionpath.field=age hoodie.upsert.shuffle.parallelism=100 #hive config hoodie.datasource.hive_sync.table=hudimor_deltastreamer_partition hoodie.datasource.hive_sync.partition_fields=age hoodie.datasource.hive_sync.partition_extractor_class=org.apache.hudi.hive.MultiPartKeysValueExtractor hoodie.datasource.hive_sync.use_jdbc=false hoodie.datasource.hive_sync.support_timestamp=true # Kafka Source topic hoodie.deltastreamer.source.kafka.topic=hudimor_deltastreamer_partition #checkpoint hoodie.deltastreamer.checkpoint.provider.path=hdfs://hacluster/tmp/huditest/hudimor_deltastreamer_partition # Kafka props # The kafka cluster we want to ingest from bootstrap.servers= xx.xx.xx.xx:xx auto.offset.reset=earliest #auto.offset.reset=latest group.id=hoodie-delta-streamer offset.rang.limit=10000 指定HoodieDeltaStreamer执行参数(具体参数配置,请查看官网https://hudi.apache.org/ )执行如下命令: spark-submit --master yarn --jars /opt/hudi-java-examples-1.0.jar // 指定spark运行时需要的hudi jars路径 --driver-memory 1g --executor-memory 1g --executor-cores 1 --num-executors 2 --conf spark.kryoserializer.buffer.max=128m --driver-class-path /opt/client/Hudi/hudi/conf:/opt/client/Hudi/hudi/lib/*:/opt/client/Spark2x/spark/jars/*:/opt/hudi-examples-0.6.1-SNAPSHOT.jar:/opt/hudi-examples-0.6.1-SNAPSHOT-tests.jar // 指定spark driver需要的hudi jars路径 --class org.apache.hudi.utilities.deltastreamer.HoodieDeltaStreamer spark-internal --props file:///opt/kafka-source.properties // 指定配置文件,注意:使用yarn-cluster模式提交任务时,请指定配置文件路径为HDFS路径。 --target-base-path /tmp/huditest/hudimor1_deltastreamer_partition // 指定hudi表路径 --table-type MERGE_ON_READ // 指定要写入的hudi表类型 --target-table hudimor_deltastreamer_partition // 指定hudi表名 --source-ordering-field name // 指定hudi表预合并列 --source-class org.apache.hudi.utilities.sources.JsonKafkaSource // 指定消费的数据源为JsonKafkaSource, 该参数根据不同数据源指定不同的source类 --schemaprovider-class com.huawei.bigdata.hudi.examples.DataSchemaProviderExample // 指定hudi表所需要的schema --transformer-class com.huawei.bigdata.hudi.examples.TransformerExample // 指定如何处理数据源拉取来的数据,可根据自身业务需求做定制 --enable-hive-sync // 开启hive同步,同步hudi表到hive --continuous // 指定流处理模式为连续模式
  • 背景信息 假定用户开发一个应用程序,用于管理企业中的使用A业务的用户信息,使用Impala客户端实现A业务操作流程如下: 普通表的操作: 创建用户信息表user_info。 在用户信息中新增用户的学历、职称信息。 根据用户编号查询用户姓名和地址。 A业务结束后,删除用户信息表。 表1 用户信息 编号 姓名 性别 年龄 地址 12005000201 A 男 19 A城市 12005000202 B 女 23 B城市 12005000203 C 男 26 C城市 12005000204 D 男 18 D城市 12005000205 E 女 21 E城市 12005000206 F 男 32 F城市 12005000207 G 女 29 G城市 12005000208 H 女 30 H城市 12005000209 I 男 26 I城市 12005000210 J 女 25 J城市
  • 操作场景 在现有的缺省DFSclient failover proxy provider中,一旦某进程中的一个NameNode发生故障,在同一进程中的所有HDFS client实例都会尝试再次连接NameNode,导致应用长时间等待超时。 当位于同一JVM进程中的客户端对无法访问的NameNode进行连接时,会对系统造成负担。为了避免这种负担,MRS集群搭载了NameNode blacklist功能。 在新的Blacklisting DFSClient failover provider中,故障的NameNode将被记录至一个列表中。DFSClient会利用这些信息,防止客户端再次连接这些NameNode。该功能被称为NameNode blacklisting。 例如,有如下集群配置: NameNode:nn1、nn2 dfs.client.failover.connection.retries:20 单JVM中的进程:10个客户端 在上述集群中,如果当前处于active状态的nn1无法访问,client1将会对nn1进行20次重新连接,之后发生故障转移,client1将会连接至nn2。与此相同,client2至client10也会在对nn1进行20次重新连接后连接至nn2。这样会延长NameNode的整体故障恢复时间。 针对该情况,当client1试图连接当前处于active状态的nn1,但其已经发生故障时,nn1将会被添加至blacklist。这样其余client就不会连接已被添加至blacklist的nn1,而是会选择连接nn2。 图1 NameNode blacklisting状态图 若在任一时刻,所有NameNode都被添加至blacklist,则其内容会被清空,client会按照初始的NameNode list重新尝试连接。若再次出现任何故障,NameNode仍会被添加至blacklist。
  • 问题排查步骤 磁盘或其他存储介质问题导致merge过慢或者中止。 登录Manager页面,检查是否存在磁盘容量不足或其他磁盘告警,如果存在,请按照告警指导处理。 如果是磁盘容量不足,也可以联系客户删除部分过期数据,释放空间,快速恢复业务。 Zookeeper异常导致merge无法正常执行。 登录Manager页面,检查ZooKeeper是否存在服务不可用、ClickHouse服务在ZooKeeper的数量配额使用率超过阈值等相关告警,如果存在,请按照告警指导处理。 执行如下SQL排查是否存在副本同步队列任务积压: select FQDN() as node,type,count() from clusterAllReplicas(default_cluster, system.replication_queue) group by node,type; 如果存在积压,请查看副本队列中的任务是否报错,并根据报错信息处理。 执行如下SQL排查是否存在节点间表结构不一致。 select FQDN(), create_table_query from clusterAllReplicas(default_cluster,system.tables) where name = '${table_name}' group by FQDN(),create_table_query; 如果存在,请将不一致的表结构修改一致。 执行如下SQL排查是否存在mutation任务异常: select FQDN(), database, table, mutation_id, create_time, command from clusterAllReplicas(default_cluster, system.mutations) where is_done = '0' order by create_time asc; 如果mutation任务正常,等待mutation任务完成,如果mutation任务异常,清理异常的mutation任务。 业务写入压力过大导致merge速度小于insert速度。 可以用以下SQL语句检查报错节点最近一小时的写入条数和频次: select tables,written_rows,count() from system.query_log where type='QueryFinish' and query_start_time between (toUnixTimestamp(now()) - 3600) AND toUnixTimestamp(now()) and query_kind = 'Insert' group by tables,written_rows order by written_rows limit 10; 业务上建议一次写入一个分区,写入频率不要太快,不要小批量数据的插入,适当增大每次插入的时间间隔。 如果没有触发Merge,或者Merge较慢,需要调整参数加快Merge。 加速Merge,需要调整如下参数,请参考加速Merge操作: 配置项 参考值 max_threads CPU核数*2 background_pool_size CPU核数 merge_max_block_size 8192的整数倍,根据CPU内存资源大小调整 cleanup_delay_period 适当小于默认值30
  • 为已有的租户关联ClickHouse服务 在 FusionInsight Manager页面,选择“租户资源”,选中需要操作的租户,选择“服务关联”页签,单击“关联服务”,具体参数如下表所示: 参数 描述 服务 选择“ClickHouse” 关联类型 选择“共享” 关联逻辑集群 如果ClickHouse没有开启逻辑集群,则默认关联default_cluster,如果已经开启逻辑集群,则按需选择需要关联的逻辑集群 CPU优先级 CPU优先级取值范围为-20~19,该值关联OS的NICE值,取值越小,CPU优先级越高。如需开启CPU优先级请参考开启ClickHouse租户CPU优先级配置 内存 内存限制为百分比,如该值设置为80,则当前租户可使用的内存总额为:服务可使用内存 * 80% 在弹出的页签中按照业务需求进行租户配置,单击“确定”,租户关联服务。 如果需要解除关联ClickHouse服务: 在FusionInsight Manager页面,选择“租户资源”,选中需要操作的租户,在“操作”列单击“删除”,在弹窗中单击“确定”,解除关联ClickHouse服务。 当租户解除关联ClickHouse服务后,该租户将不再拥有ClickHouse逻辑集群的权限。同时绑定该租户的用户也不再拥有ClickHouse逻辑集群的权限。
提示

您即将访问非华为云网站,请注意账号财产安全