华为云用户手册

  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 error Error object 响应错误 result Key object 响应结果 status String 响应状态 表5 Error 参数 参数类型 描述 code String 错误码 message String 错误信息 表6 Key 参数 参数类型 描述 can_push Boolean 是否允许推送 created_at String 部署密钥新建时间 key String 部署密钥 key_id String 部署密钥id 最小长度:1 最大长度:40 key_title String 部署密钥名称
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token。 通过调用 IAM 服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。 表3 请求Body参数 参数 是否必选 参数类型 描述 application 是 String 部署key的来源 can_push 是 Boolean 部署key是否可以推送代码 key 是 String 部署key key_title 是 String 部署key名称
  • MRS 集群节点弹性伸缩指标说明 节点组维度策略 在添加规则时,可以参考表1配置相应的指标。 表1 弹性伸缩指标列表 集群类型 指标名称 数值类型 说明 流式集群 StormSlotAvailable 整型 Storm组件的可用slot数。 取值范围为[0~2147483646]。 StormSlotAvailablePercentage 百分比 Storm组件可用slot百分比。是可用slot数与总slot数的比值。 取值范围为[0~100]。 StormSlotUsed 整型 Storm组件的已用slot数。 取值范围为[0~2147483646]。 StormSlotUsedPercentage 百分比 Storm组件已用slot百分比。是已用slot数与总slot数的比值。 取值范围为[0~100]。 StormSupervisorMemAverageUsage 整型 Storm组件Supervisor的内存平均使用量。 取值范围为[0~2147483646]。 StormSupervisorMemAverageUsagePercentage 百分比 Storm组件Supervisor进程使用的内存占系统总内存的平均百分比。 取值范围[0 ~ 100]。 StormSupervisorCPUAverageUsagePercentage 百分比 Storm组件Supervisor进程使用的CPU占系统总CPU的平均百分比。 取值范围[0 ~ 6000]。 分析集群 YARNAppPending 整型 YARN组件挂起的任务数。 取值范围为[0~2147483646]。 YARNAppPendingRatio 比率 YARN组件挂起的任务数比例。是YARN挂起的任务数与YARN运行中的任务数比值。 取值范围为[0~2147483646]。 YARNAppRunning 整型 YARN组件运行中的任务数。 取值范围为[0~2147483646]。 YARNContainerAllocated 整型 YARN组件中已分配的container个数。 取值范围为[0~2147483646]。 YARNContainerPending 整型 YARN组件挂起的container个数。 取值范围为[0~2147483646]。 YARNContainerPendingRatio 比率 YARN组件挂起的container比率。是挂起的container数与运行中的container数的比值。 取值范围为[0~2147483646]。 YARNCPUAllocated 整型 YARN组件已分配的虚拟CPU核心数。 取值范围为[0~2147483646]。 YARNCPUAvailable 整型 YARN组件可用的虚拟CPU核心数。 取值范围为[0~2147483646]。 YARNCPUAvailablePercentage 百分比 YARN组件可用虚拟CPU核心数百分比。是可用虚拟CPU核心数与总虚拟CPU核心数比值。 取值范围为[0~100]。 YARNCPUPending 整型 YARN组件挂起的虚拟CPU核心数。 取值范围为[0~2147483646]。 YARNMemoryAllocated 整型 YARN组件已分配内存大小。单位为MB。 取值范围为[0~2147483646]。 YARNMemoryAvailable 整型 YARN组件可用内存大小。单位为MB。 取值范围为[0~2147483646]。 YARNMemoryAvailablePercentage 百分比 YARN组件可用内存百分比。是YARN组件可用内存大小与YARN组件总内存大小的比值。 取值范围为[0~100]。 YARNMemoryPending 整型 YARN组件挂起的内存大小。 取值范围为[0~2147483646]。 表1中指标数值类型为百分比或比率时,有效数值可精确到百分位。其中百分比类型指标数值为去除百分号(%)后的小数值,如16.80即代表16.80%。 混合集群的支持分析集群和流式集群的所有指标。 资源池维度策略 在添加规则时,可以参考表2配置相应的指标。 MRS 3.1.5及其之后的版本支持配置资源池维度策略。 表2 规则配置项说明 集群类型 指标名称 数值类型 说明 分析集群/自定义集群 ResourcePoolMemoryAvailable 整型 资源池YARN组件可用内存大小。单位为MB。 取值范围为[0~2147483646]。 ResourcePoolMemoryAvailablePercentage 百分比 资源池YARN组件可用内存百分比。是YARN组件可用内存大小与YARN组件总内存大小的比值。 取值范围为[0~100]。 ResourcePoolCPUAvailable 整型 资源池YARN组件可用的虚拟CPU核心数。 取值范围为[0~2147483646]。 ResourcePoolCPUAvailablePercentage 百分比 资源池YARN组件可用虚拟CPU核心数百分比。是可用虚拟CPU核心数与总虚拟CPU核心数比值。 取值范围为[0~100]。 在添加资源计划时,可以参考表3配置相应的参数。 表3 资源计划配置项说明 配置项 示例 说明 生效日期 周一 资源计划的生效日期。默认是每日生效,也可以选择周一至周日任意一天或几天生效。 时间范围 08:00-10:00 资源计划的起始时间和结束时间,精确到分钟,取值范围[00:00, 23:59]。例如资源计划开始于早上8:00,结束于10:00,则配置为8:00-10:00。结束时间必须晚于开始时间至少30分钟。 节点数量范围 4-5 资源计划内的节点数量上下限,取值范围[0,500],在资源计划时间内,集群Task节点数量小于最小节点数时,弹性伸缩会将集群Task节点一次性扩容到最小节点数。在资源计划时间内,集群Task节点数量大于最大节点数时,弹性伸缩会将集群Task节点一次性缩容到最大节点数。最小节点数必须小于或等于最大节点数。 当启用资源计划时,弹性伸缩配置中的“默认节点数量范围”将在资源计划外的时间段内强制生效。例如“默认节点数量范围”配置为1-2,配置资源计划:08:00-10:00之间节点数量范围为4-5,则在一天中的非资源计划时间段(0:00-8:00以及10:00-23:59)内,Task节点会被强制限制在1个到2个中间,若节点数量大于2则触发自动缩容,若节点数量小于1则触发自动扩容。 当不启用资源计划时,节点数量范围的“默认范围”会在全部时间范围生效,如果节点数量不在“节点数量范围”的默认范围,主动增减Task节点数量到默认范围内。 资源计划间时间段不可交叉,时间段交叉意为某个时间点存在两个生效的资源计划,例如配置资源计划1在08:00-10:00生效,资源计划2在09:00-11:00生效,则两个资源计划存在时间段交叉,交叉时间段09:00-10:00。 资源计划不能跨天配置,例如要配置23:00至次日01:00的资源计划,请配置时间段为23:00-00:00和00:00-01:00的两个资源计划。 自动化脚本 在添加自动化脚本时,可以参考表4配置相应参数。 表4 自动化脚本配置说明 配置项 示例 说明 名称 test 自动化脚本的名称。 只能由数字、英文字符、空格、中划线和下划线组成,且不能以空格开头。 可输入的字符串长度为1~64个字符。 说明: 同一集群内,不允许配置相同的名称。不同集群之间,可以配置相同的名称。 脚本路径 obs://mrs-samples/test.sh 脚本的路径。路径可以是OBS文件系统的路径或虚拟机本地的路径。 OBS文件系统的路径,必须以obs://开头,以.sh结尾。例如:obs://mrs-samples/xxx.sh 虚拟机本地的路径,脚本所在的路径必须以‘/’开头,以.sh结尾。例如,安装Zepelin的示例脚本路径如下:/opt/bootstrap/zepelin/zepelin_install.sh 执行节点 Mater节点 选择自动化脚本所执行的节点类型。 说明: 如果选择Master节点,您可以通过开关选择是否只在Active Master节点执行此脚本。 如果选择开启此功能,表示只在Active Master节点上执行。如果选择关闭,表示在所有Master节点执行。默认关闭。 参数 - 自动化脚本参数,支持通过传入以下预定义变量获得弹性伸缩相关信息: ${mrs_scale_node_num} :弹性伸缩节点数量,总是正数 ${mrs_scale_type} :弹性伸缩类型,扩容为“scale_out”,缩容为“scale_in” ${mrs_scale_node_hostnames} :弹性伸缩节点的主机名,多个主机名之间以“,”隔开 ${mrs_scale_node_ips} :弹性伸缩节点的IP,多个IP之间以“,”隔开 ${mrs_scale_rule_name}:触发弹性伸缩的规则名,如果是资源计划则为“resource_plan” 执行时机 扩容前 选择自动化脚本执行的时间。支持“扩容前”、“扩容后”、“缩容前”、“缩容后”四种类型。 说明: 假设执行节点类型中包含Task节点: 执行时机为扩容前的脚本不会在将要扩容出的Task节点上执行。 执行时机为扩容后的脚本会在扩容出的Task节点上执行。 执行时机为缩容前的脚本会在即将被删除的Task节点上执行。 执行时机为缩容后的脚本不会在已经被删除的Task节点上执行。 失败操作 继续 该脚本执行失败后,是否继续执行后续脚本和扩缩容操作。 说明: 建议您在调试阶段设置为“继续”,无论此脚本是否执行成功,则集群都能继续扩缩容操作。 若脚本执行失败,请到集群虚拟机的“/var/log/Bootstrap”路径下查看失败日志。 由于缩容成功不可回滚,缩容后执行的脚本失败操作只能选择“继续”。 自动化脚本只在弹性伸缩时触发,手动调整集群节点时不会运行。
  • 问题 Hive同步数据时报错: Caused by: java.sql.SQLException: Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Unable to alter table. The following columns have types incompatible with the existing columns in their respective positions : __col1,__col2
  • 回答 原因: Hudi表数据含有Decimal类型数据。 初始入库BULK_INSET方式会使用Spark内部parquet文件的写入类进行写入,Spark对不同精度的Decimal类型处理是不同的。 UPSERT操作时,Hudi使用Avro兼容的parquet文件写入类进行写入,这个和Spark的写入方式是不兼容的。 解决方案: 执行BULK_INSERT时指定设置“hoodie.datasource.write.row.writer.enable = false”,使hoodie采用Avro兼容的parquet文件写入类进行写入。
  • 解决方法 找到重启前的主NameNode,进入其数据目录(查看配置项“dfs.namenode.name.dir”可获取,例如/srv/BigData/namenode/current),得到最新的FSImage文件的序号。一般如下: 查看各JournalNode的数据目录(查看配置项“dfs.journalnode.edits.dir”可获取,例如/srv/BigData/journalnode/hacluster/current),查看序号从第一部获取到的序号开始的edits文件,看是否有不连续的情况(即前一个edits文件的最后一个序号 和 后一个edits文件的第一个序号 不是连续的,如下图中的edits_0000000000013259231-0000000000013259237就和后一个edits_0000000000013259239-0000000000013259246就是不连续的)。 如果有这种不连续的edits文件,则需要查看其它的JournalNode的数据目录或NameNode数据目录中,有没有连续的该序号相关的连续的edits文件。如果可以找到,复制一个连续的片段到该JournalNode。 如此把所有的不连续的edits文件全部都修复。 重启NameNode,观察是否成功。如还是失败,请联系技术支持。
  • Payload介绍 Payload是Hudi实现数据增量更新和删除的关键,它可以帮助Hudi在 数据湖 中高效的管理数据变更。Hudi Payload的格式是基于Apache Avro的,它使用了Avro的schema来定义数据的结构和类型。Payload可以被序列化和反序列化,以便在Hudi中进行数据的读取和写入。总之,Hudi Payload是Hudi的一个重要组成部分,它提供了一种可靠的、高效的、可扩展的方式来管理大规模数据湖中的数据变更。
  • 使用Payload Spark建表时指定Payload create table hudi_test(id int, comb int, price string, name string, par string) using hudi options( primaryKey = "id", preCombineField = "comb", payloadClass="org.apache.hudi.common.model.OverwriteWithLatestAvroPayload") partitioned by (par); Datasource方式写入时指定Payload data.write.format("hudi"). option("hoodie.datasource.write.table.type", COW_TABLE_TYPE_OPT_VAL). option("hoodie.datasource.write.precombine.field", "comb"). option("hoodie.datasource.write.recordkey.field", "id"). option("hoodie.datasource.write.partitionpath.field", "par"). option("hoodie.datasource.write.payload.class", "org.apache.hudi.common.model.DefaultHoodieRecordPayload"). option("hoodie.datasource.write.keygenerator.class", "org.apache.hudi.keygen.SimpleKeyGenerator"). option("hoodie.datasource.write.operation", "upsert"). option("hoodie.datasource.hive_sync.enable", "true"). option("hoodie.datasource.hive_sync.partition_fields", "par"). option("hoodie.datasource.hive_sync.partition_extractor_class", "org.apache.hudi.hive.MultiPartKeysValueExtractor"). option("hoodie.datasource.hive_sync.table", "hudi_test"). option("hoodie.datasource.hive_sync.use_jdbc", "false"). option("hoodie.upsert.shuffle.parallelism", 4). option("hoodie.datasource.write.hive_style_partitioning", "true"). option("hoodie.table.name", "hudi_test").mode(Append).save(s"/tmp/hudi_test")
  • 常用Payload DefaultHoodieRecordPayload Hudi中默认使用DefaultHoodieRecordPayload,该Payload通过比较增量数据与存量数据的preCombineField字段值的大小来决定同主键的存量数据是否能被同主键的增量数据更新。在同主键的增量数据的preCombineField字段值绝对大于同主键的存量数据的preCombineField字段值时,同主键的增量数据将会被更新。 OverwriteWithLatestAvroPayload 该Payload保证同主键的增量数据永远都会更新至同主键的存量数据中。 PartialUpdateAvroPayload 该Payload继承了OverwriteNonDefaultsWithLatestAvroPayload,它可以保证在任何场景下增量数据中的null值不会覆盖存量数据。
  • 操作步骤 以下参数有如下两个配置入口: 服务器端配置 进入Yarn服务参数“全部配置”界面,在搜索框中输入参数名称。具体操作请参考修改集群服务配置参数章节。 客户端配置 直接在客户端中修改相应的配置文件。 HDFS客户端配置文件路径:客户端安装目录/HDFS/hadoop/etc/hadoop/hdfs-site.xml。 Yarn客户端配置文件路径:客户端安装目录/HDFS/hadoop/etc/hadoop/yarn-site.xml。 MapReduce客户端配置文件路径:客户端安装目录/HDFS/hadoop/etc/hadoop/mapred-site.xml。 表1 多CPU内核设置 配置 描述 参数 默认值 Server/Client 影响 备注 节点容器槽位数 如下配置组合决定了每节点任务(map、reduce)的并发数。 “yarn.nodemanager.resource.memory-mb” “mapreduce.map.memory.mb” “mapreduce.reduce.memory.mb” yarn.nodemanager.resource.memory-mb 说明: 需要在 FusionInsight Manager系统进行配置。 16384 Server 如果所有的任务(map/reduce)需要读写数据至磁盘,多个进程将会同时访问一个磁盘。这将会导致磁盘的IO性能非常的低下。为了改善磁盘的性能,请确保客户端并发访问磁盘的数不大于3。 最大并发的container数量应该为[2.5 * Hadoop中磁盘配置数 ]。 mapreduce.map.memory.mb 说明: 需要在客户端进行配置,配置文件路径:客户端安装目录/HDFS/hadoop/etc/hadoop/mapred-site.xml。 4096 Client mapreduce.reduce.memory.mb 说明: 需要在客户端进行配置,配置文件路径:客户端安装目录/HDFS/hadoop/etc/hadoop/mapred-site.xml。 4096 Client Map输出与压缩 Map任务所产生的输出可以在写入磁盘之前被压缩,这样可以节约磁盘空间并得到更快的写盘速度,同时可以减少至Reducer的数据传输量。需要在客户端进行配置。 mapreduce.map.output.compress指定了Map任务输出结果可以在网络传输前被压缩。这是一个per-job的配置。 mapreduce.map.output.compress.codec指定用于压缩的编解码器。 mapreduce.map.output.compress 说明: 需要在客户端进行配置,配置文件路径:客户端安装目录/HDFS/hadoop/etc/hadoop/mapred-site.xml。 true Client 在这种情况下,磁盘的IO是主要瓶颈。所以可以选择一种压缩率非常高的压缩算法。 编解码器可配置为Snappy,Benchmark测试结果显示Snappy是非常平衡以及高效的编码器。 mapreduce.map.output.compress.codec 说明: 需要在客户端进行配置,配置文件路径:客户端安装目录/HDFS/hadoop/etc/hadoop/mapred-site.xml。 org.apache.hadoop.io.compress.Lz4Codec Client Spills mapreduce.map.sort.spill.percent mapreduce.map.sort.spill.percent 说明: 需要在客户端进行配置,配置文件路径:客户端安装目录/HDFS/hadoop/etc/hadoop/mapred-site.xml。 0.8 Client 磁盘IO是主要瓶颈,合理配置“mapreduce.task.io.sort.mb”可以使溢出至磁盘的内容最小化。 - 数据包大小 当HDFS客户端写数据至数据节点时,数据会被累积,直到形成一个包。然后这个数据包会通过网络传输。dfs.client-write-packet-size配置项可以指定该数据包的大小。这个可以通过每个job进行指定。 dfs.client-write-packet-size 说明: 需要在客户端进行配置,配置文件路径:客户端安装目录/HDFS/hadoop/etc/hadoop/hdfs-site.xml。 262144 Client 数据节点从HDFS客户端接收数据包,然后将数据包里的数据单线程写入磁盘。当磁盘处于并发写入状态时,增加数据包的大小可以减少磁盘寻道时间,从而提升IO性能。 dfs.client-write-packet-size = 262144
  • 现象描述 MRS 3.3.1及之后版本,HBase默认适配开启HDFS多路读功能(HDFS多路读相关介绍请参见配置HDFS多路读)以降低读取延迟及适应网络变化,相关参数如表1所示。 表1 HBase适配HDFS多路读相关参数 参数名称 参数描述 默认值 取值范围 dfs.client.hedged.read.threshold.millis HDFS客户端决定是否启动多路读取之前等待第一个数据块的第一个字节的时间,单位:毫秒。 250 大于等于1 dfs.client.hedged.read.threadpool.size 多路读取线程池的大小,设置参数值大于0时启用多路读功能。 200 大于等于0 由于HDFS多路读功能在磁盘IO负载高的情况下可能导致性能劣化,在此场景下,HBase侧需要参考操作步骤关闭HDFS多路读功能。
  • 回答 BulkLoad程序在客户端启动时会生成一个partitioner文件,用于划分Map任务数据输入的范围。此文件在BulkLoad客户端退出时会被自动删除。一般来说当所有Map任务都启动运行以后,退出BulkLoad客户端也不会导致已提交的作业失败。但由于Map任务存在重试机制和推测执行机制;Reduce任务下载一个已运行完成的Map任务的数据失败次数过多时,Map任务也会被重新执行。如果此时BulkLoad客户端已经退出,则重试的Map任务会因为找不到partitioner文件而执行失败,导致作业执行失败。因此,强烈建议BulkLoad程序在数据导入期间不要结束客户端程序。
  • Clustering架构 Hudi通过其写入客户端API提供了不同的操作,如insert/upsert/bulk_insert来将数据写入Hudi表。为了能够在文件大小和入湖速度之间进行权衡,Hudi提供了一个hoodie.parquet.small.file.limit配置来设置最小文件大小。用户可以将该配置设置为“0”,以强制新数据写入新的文件组,或设置为更高的值以确保新数据被“填充”到现有小的文件组中,直到达到指定大小为止,但其会增加摄取延迟。 为能够支持快速摄取的同时不影响查询性能,引入了Clustering服务来重写数据以优化Hudi数据湖文件的布局。 Clustering服务可以异步或同步运行,Clustering会添加了一种新的REPLACE操作类型,该操作类型将在Hudi元数据时间轴中标记Clustering操作。 Clustering服务基于Hudi的MVCC设计,允许继续插入新数据,而Clustering操作在后台运行以重新格式化数据布局,从而确保并发读写者之间的快照隔离。 总体而言Clustering分为两个部分: 调度Clustering:使用可插拔的Clustering策略创建Clustering计划。 识别符合Clustering条件的文件:根据所选的Clustering策略,调度逻辑将识别符合Clustering条件的文件。 根据特定条件对符合Clustering条件的文件进行分组。每个组的数据大小应为targetFileSize的倍数。分组是计划中定义的"策略"的一部分。此外还有一个选项可以限制组大小,以改善并行性并避免混排大量数据。 将Clustering计划以avro元数据格式保存到时间线。 执行Clustering:使用执行策略处理计划以创建新文件并替换旧文件。 读取Clustering计划,并获得ClusteringGroups,其标记了需要进行Clustering的文件组。 对于每个组使用strategyParams实例化适当的策略类(例如:sortColumns),然后应用该策略重写数据。 创建一个REPLACE提交,并更新HoodieReplaceCommitMetadata中的元数据。
  • 操作场景 Succinct Trie特性优化了HFile Block结构,开启后可以减少缓存空间的使用,降低缓存数据驱逐率,提升缓存命中率,适用于频繁读取数据的场景,优化了数据读取性能。 本章节内容仅适用于MRS 3.3.1及之后版本。 开启Succinct Trie后,HFile文件将不兼容开源版本,如果使用HFile进行数据迁移,且需要迁移到MRS 3.2.0及之前版本时,需要先关闭此特性,再对数据表执行major compaction生成新的HFile文件。
  • 回答 建议在使用Hudi时,schema应该以向后兼容的方式演进。此错误通常发生在使用向后不兼容的演进方式删除某些列如“col1”后,更新parquet文件中以旧的schema写入的列“col1”,在这种情况下,parquet尝试在传入记录中查找所有当前字段,当发现“col1”不存在时,发生上述异常。 解决这个问题的办法是使用所有schema演进版本来创建uber schema,并使用该schema作为target schema。用户可以从hive metastore中获取schema并将其与当前schema合并。
  • 回答 当试图从启用SSL的kafka数据源采集数据时,而安装程序无法读取jars.conf文件及其属性时,可能会发生这种情况。 要解决此问题,需要将所需的属性作为通过Spark提交的命令的一部分传递。如:--files jaas.conf,failed_tables.json --conf 'spark.driver.extraJavaOptions=-Djava.security.auth.login.config=jaas.conf' --conf 'spark.executor .extraJavaOptions=-Djava.security.auth.login.config=jaas.conf'
  • 问题 线程“main”报错 org.apache.kafka.common.KafkaException,构造kafka消费者失败,报错: java.lang.IllegalArgumentException: Could not find a 'KafkaClient' entry in the JAAS configuration. System property 'java.security.auth.login.config' is not set
  • Hudi Cleaning操作说明 Cleaning用于清理不再需要的版本数据。 Hudi使用Cleaner后台作业,不断清除不需要的旧版本数据。通过配置hoodie.cleaner.policy和hoodie.cleaner.commits.retained可以使用不同的清理策略和保存的commit数量。 执行cleaning有两种方式: 同步clean由参数hoodie.clean.automatic控制,默认自动开启。 关闭同步clean: datasource写入时可以通过.option("hoodie.clean.automatic", "false")来关闭自动clean。 spark-sql写入时可以通过set hoodie.clean.automatic=false;来关闭自动clean。 异步clean可以使用spark-sql来执行,详情可以参考章节CLEAN。 更多clean相关参数请参考compaction&cleaning配置章节。 父主题: 数据管理维护
  • 问题 使用Spark SQL删除MOR表后重新建表写入数据不能实时同步ro、rt表,报错如下: WARN HiveSyncTool: Got runtime exception when hive syncing, but continuing as ignoreExceptions config is set java.lang.IllegalArgumentException: Failed to get schema for table hudi_table2_ro does not exist at org.apache.hudi.hive.HoodieHiveClient.getTableSchema(HoodieHiveClient.java:183) at org.apache.hudi.hive.HiveSyncTool.syncHoodieTable(HiveSyncTool.java:286) at org.apache.hudi.hive.HiveSyncTool.doSync(HiveSyncTool.java:213)
  • 问题 CTBase访问启用Ranger插件的HBase服务时,如果创建聚簇表,提示权限不足。 ERROR: Create ClusterTable failed. Error: org.apache.hadoop.hbase.security.AccessDeniedException: Insufficient permissions for user 'ctbase2@HADOOP.COM' (action=create) at org.apache.ranger.authorization.hbase.AuthorizationSession.publishResults(AuthorizationSession.java:278) at org.apache.ranger.authorization.hbase.RangerAuthorizationCoprocessor.authorizeAccess(RangerAuthorizationCoprocessor.java:654) at org.apache.ranger.authorization.hbase.RangerAuthorizationCoprocessor.requirePermission(RangerAuthorizationCoprocessor.java:772) at org.apache.ranger.authorization.hbase.RangerAuthorizationCoprocessor.preCreateTable(RangerAuthorizationCoprocessor.java:943) at org.apache.ranger.authorization.hbase.RangerAuthorizationCoprocessor.preCreateTable(RangerAuthorizationCoprocessor.java:428) at org.apache.hadoop.hbase.master.MasterCoprocessorHost$12.call(MasterCoprocessorHost.java:351) at org.apache.hadoop.hbase.master.MasterCoprocessorHost$12.call(MasterCoprocessorHost.java:348) at org.apache.hadoop.hbase.coprocessor.CoprocessorHost$ObserverOperationWithoutResult.callObserver(CoprocessorHost.java:581) at org.apache.hadoop.hbase.coprocessor.CoprocessorHost.execOperation(CoprocessorHost.java:655) at org.apache.hadoop.hbase.master.MasterCoprocessorHost.preCreateTable(MasterCoprocessorHost.java:348) at org.apache.hadoop.hbase.master.HMaster$5.run(HMaster.java:2192) at org.apache.hadoop.hbase.master.procedure.MasterProcedureUtil.submitProcedure(MasterProcedureUtil.java:134) at org.apache.hadoop.hbase.master.HMaster.createTable(HMaster.java:2189) at org.apache.hadoop.hbase.master.MasterRpcServices.createTable(MasterRpcServices.java:711) at org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos$MasterService$2.callBlockingMethod(MasterProtos.java) at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:458) at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:133) at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:338) at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:318)
  • ClickHouse数据类型说明 MRS的ClickHouse服务数据类型如表1所示。 ClickHouse完整数据类型介绍,请参考开源官方数据类型介绍。 表1 ClickHouse数据类型 分类 关键字 数据类型 描述 数据类型 Int8 Int8 取值范围:-128~127 Int16 Int16 取值范围:-32768~32767 Int32 Int32 取值范围:-2147483648~2147483647 Int64 Int64 取值范围:-9223372036854775808~9223372036854775807 浮点类型 Float32 单精度浮点数 同C语言Float类型,单精度浮点数在机内占4个字节,用32位二进制描述。 Float64 双精度浮点数 同C语言Double类型,双精度浮点数在机内占8个字节,用64位二进制描述。 Decimal类型 Decimal Decimal 有符号的定点数,可在加、减和乘法运算过程中保持精度。支持几种写法: Decimal(P, S) Decimal32(S) Decimal64(S) Decimal128(S) 说明: P:精度,有效范围:[1:38],决定可以有多少个十进制数字(包括分数)。 S:规模,有效范围:[0:P],决定数字的小数部分中包含的小数位数。 字符串类型 String 字符串 字符串可以是任意长度的。它可以包含任意的字节集,包含空字节。因此,字符串类型可以代替其他DBMSs中的VARCHAR、BLOB、CLOB等类型。 FixedString 固定字符串 当数据的长度恰好为N个字节时,FixedString类型是高效的。在其他情况下,这可能会降低效率。可以有效存储在FixedString类型的列中的值的示例: 二进制表示的IP地址 语言代码(ru_RU, en_US … ) 货币代码(RUB … ) 二进制表示的哈希值(MD5使用FixedString(16),SHA256使用FixedString(32)) 时间日期类型 Date 日期 用两个字节存储,表示从1970-01-01(无符号)到当前的日期值。日期中没有存储时区信息。 DateTime 时间戳 用四个字节(无符号的)存储Unix时间戳。允许存储与日期类型相同的范围内的值。最小值为1970-01-01 00:00:00。时间戳类型值精确到秒(没有闰秒)。时区使用启动客户端或服务器时的系统时区。 DateTime64 DateTime64 此类型允许以日期(date)加时间(time)的形式来存储一个时刻的时间值。 布尔型 Boolean Boolean ClickHouse没有单独的类型来存储布尔值。可以使用UInt8类型,取值限制为0或1。 数组类型 Array Array Array(T),由T类型元素组成的数组。T可以是任意类型,包含数组类型。但不推荐使用多维数组,ClickHouse对多维数组的支持有限。例如,不能在MergeTree表中存储多维数组。 元组类型 Tuple Tuple Tuple(T1, T2, ...),元组,其中每个元素都有单独的类型,不能在表中存储元组(除了内存表)。它们可以用于临时列分组。在查询中,IN表达式和带特定参数的lambda函数可以来对临时列进行分组。 Domains数据类型 Domains Domains Domains类型是特定实现的类型: IPv4是与UInt32类型保持二进制兼容的Domains类型,用于存储IPv4地址的值。它提供了更为紧凑的二进制存储的同时支持识别可读性更加友好的输入输出格式。 枚举类型 Enum8 Enum8 取值范围:-128~127 Enum保存'string' = integer的对应关系,例如:Enum8('hello' = 1, 'world' = 2) Enum16 Enum16 取值范围:-32768~32767 可为空 Nullable Nullable 除非在ClickHouse服务器配置中另有说明,否则NULL是任何Nullable类型的默认值。Nullable类型字段不能包含在表索引中。 可以与TypeName的正常值存放一起。例如,Nullable(Int8)类型的列可以存储Int8类型值,而没有值的行将存储NULL。 嵌套类型 nested nested 嵌套的数据结构就像单元格内的表格。嵌套数据结构的参数(列名和类型)的指定方式与CREATE TABLE查询中的指定方式相同。每个表行都可以对应于嵌套数据结构中的任意数量的行。 示例:Nested(Name1 Type1, Name2 Type2, …)
  • 使用示例 --查询表t1的表结构 desc t1; ┌─name────┬─type─┬─default_type─┬─default_expression ┬─comment─┬─codec_expression─┬─ttl_expression─┐ │ id │ UInt8 │ │ │ │ │ │ │ name │ UInt8 │ │ │ │ │ │ │ address │ String │ │ │ │ │ │ └───────┴────┴────────┴────────── ┴───── ┴──────────┴─────────┘
  • 批量构建全局二级索引数据 只有处于INACTIVE状态的索引才能进行批量构建,如需重建索引数据,请先修改索引状态。 数据表中存在大量数据时,构建耗时较长,建议将nohup命令放在后台执行,避免操作被意外中断。 在HBase客户端执行以下命令可批量构建已有数据的索引数据: hbase org.apache.hadoop.hbase.hindex.global.mapreduce.GlobalTableIndexer -Dtablename.to.index='table' -Dindexnames.to.build='idx1' 相关参数介绍如下: tablename.to.index:表示需修改索引状态的数据表的名称。 indexnames.to.build:指定的需要批量生成数据的索引名,可以同时指定多个,用#号分隔。 hbase.gsi.cleandata.enabled(可选):表示构建索引数据前是否需要清空索引表,默认值为“false”。 hbase.gsi.cleandata.timeout(可选):表示构建索引数据前等待清空索引表超时时间,默认值为“1800”,单位为:秒。
  • Hudi Compaction操作说明 Compaction用于合并mor表Base和Log文件。 对于Merge-On-Read表,数据使用列式Parquet文件和行式Avro文件存储,更新被记录到增量文件,然后进行同步/异步compaction生成新版本的列式文件。Merge-On-Read表可减少数据摄入延迟,因而进行不阻塞摄入的异步Compaction很有意义。 异步Compaction会进行如下两个步骤: 调度Compaction:由入湖作业完成,在这一步,Hudi扫描分区并选出待进行compaction的FileSlice,最后CompactionPlan会写入Hudi的Timeline。 执行Compaction:一个单独的进程/线程将读取CompactionPlan并对FileSlice执行Compaction操作。 使用Compaction的方式分为同步和异步两种: 同步方式由参数hoodie.compact.inline控制,默认为true,自动生成compaction调度计划并执行compaction: 关闭同步compaction datasource写入时可以通过 .option("hoodie.compact.inline", "false") 来关闭自动compaction。 spark-sql写入时可以通过set hoodie.compact.inline=false;来关闭自动compaction。 仅同步生成compaction调度而不执行compaction ·datasource写入时可以通过以下option参数来实现: option("hoodie.compact.inline", "true"). option("hoodie.schedule.compact.only.inline", "true"). option("hoodie.run.compact.only.inline", "false"). ·spark-sql写入时可以通过set以下参数来实现: set hoodie.compact.inline=true; set hoodie.schedule.compact.only.inline=true; set hoodie.run.compact.only.inline=false; 异步方式由spark-sql来实现。 如果需要在异步compaction时只执行已经产生的compaction调度计划而不创建新的调度计划,则需要通过set命令设置以下参数: set hoodie.compact.inline=true; set hoodie.schedule.compact.only.inline=false; set hoodie.run.compact.only.inline=true; 更多compaction参数请参考compaction&cleaning配置章节。 为了保证入湖的最高效率,推荐使用同步产生compaction调度计划,异步执行compaction调度计划的方式。 父主题: 数据管理维护
  • Loader宏定义 目前Loader默认支持以下时间宏定义: 表1 Loader常用宏定义 名称 替换后效果 说明 @{dateformat("yyyy-MM-dd")}@ 2016-05-17 当前日期。 @{dateformat("yyyy-MM-dd HH:mm:ss")}@ 2016-05-17 16:50:00 当前日期和时间。 @{timestamp()}@ 1463476137557 从1970年到现在的毫秒数。 @{dateformat("yyyy-MM-dd HH:mm:ss",-7,DAYS)}@ 2016-05-10 16:50:00 最近7天,即当前时间减7天。 第二个参数支持加减运算。 第三个参数为时间运算的单位,参考“java.util.concurrent.TimeUnit.java”定义,分为DAYS、HOURS 、MINUTES、SECONDS。 在以下场景中,可以使用宏进行配置参数: 指定以当天时间命名的数据目录 参数项配置为“/user/data/inputdate_@{dateformat("yyyy-MM-dd")}@”。 通过SQL语句查询最近7天的数据 select * from table where time between '@{dateformat("yyyy-MM-dd HH:mm:ss",-7,DAYS)}@' and '@{dateformat("yyyy-MM-dd HH:mm:ss")}@' 指定当天的表名 参数项配置为“table_@{dateformat("yyyy-MM-dd")}@”。
  • 原因分析 HDFS进入安全模式后HBase服务异常,导致meta表下线;HDFS退出安全模式后,下线的meta表未上线,查看RegionServer日志存在“No namenode available to invoke create /hbase/WALs/xxxx.meta”报错。 由于meta表在HDFS故障恢复后的上线过程中无法记录上线状态,导致meta表无法正常上线,且Manager实例健康检查自动恢复重试存在重试次数限制,最终导致meta表上线失败。因此,HDFS退出安全模式后,需要手动介入进行恢复。
  • 应用场景 多云部署、容灾备份 为保证业务高可用,需要将业务同时部署在多个云的容器服务上,在某个云出现事故时,通过统一流量分发的机制,自动的将业务流量切换到其他云上。 流量分发、弹性伸缩 大型企业客户需要将业务同时部署在不同地域的云机房中,并能根据业务的波峰波谷进行自动弹性扩容和缩容,以节约成本。 业务上云、数据本地托管 对于金融、医疗等行业用户,由于安全合规要求,敏感数据要求存储在本地IDC中,而一般业务由于高并发、快响应等方面的特点需要部署在云上,并需要进行统一管理。 开发与部署分离 出于IP安全的考虑,用户希望将生产环境部署在公有云上,而将开发环境部署在本地的IDC。
  • 优势 云上容灾 通过云容器引擎,可以将业务系统同时部署在多个云的容器服务上,统一流量分发,单云故障后能够自动将业务流量切换到其他云上,并能快速自动解决现网事故。 统一架构,高弹性 云上云下同架构平台,可灵活根据流量峰值实现资源在云上云下的弹性伸缩、平滑迁移和扩容。 计算与数据分离,能力共享 通过云容器引擎,用户可以实现敏感业务数据与一般业务数据的分离,可以实现开发环境和生产环境分离,可以实现特殊计算能力与一般业务的分离,并能够实现弹性扩展和集群的统一管理,达到云上云下资源和能力的共享。 降低成本 业务高峰时,利用公有云资源池快速扩容,用户不再需要根据流量峰值始终保持和维护大量资源,节约成本。
  • 云容器引擎与其他服务的关系 表1 云容器引擎与其他服务的关系 服务名称 云容器引擎与其他服务的关系 主要交互功能 弹性云服务器 E CS 在云容器引擎中具有多个云硬盘的一台弹性云服务器就是一个节点,您可以在创建节点时指定弹性云服务器的规格。 购买节点 纳管已有节点到集群 虚拟私有云 VPC 在云容器引擎中创建的集群需要运行在虚拟私有云中,您在集群中创建节点池时,节点将会从VPC网段内分配私网IP地址,为您的集群提供相对隔离的网络环境。 购买CCE集群 弹性负载均衡 ELB 云容器引擎支持将创建的应用对接到弹性负载均衡,弹性负载均衡可以将外部访问流量分发到不同的后端容器应用中。 您可以通过弹性负载均衡,从外部网络访问容器负载。 创建无状态负载(Deployment) 创建有状态负载(StatefulSet) 负载均衡(LoadBalancer) NAT网关 NAT网关能够为VPC内的容器实例提供 网络地址转换 (Network Address Translation)服务,SNAT功能通过绑定弹性公网IP,实现私有IP向公有IP的转换,可实现VPC内的容器实例共享弹性公网IP访问Internet。 您可以通过NAT网关设置SNAT规则,使得容器能够访问Internet。 创建无状态负载(Deployment) 创建有状态负载(StatefulSet) DNAT网关(DNAT) 容器镜像服务 SWR 容器 镜像服务 提供的镜像仓库是用于存储、管理docker容器镜像的场所,可以让使用人员轻松存储、管理、部署docker容器镜像。 您可以使用容器镜像服务中的镜像创建负载。 创建无状态负载(Deployment) 创建有状态负载(StatefulSet) 云容器实例 CCI 云容器实例的Serverless Container是从使用角度,无需创建、管理Kubernetes集群,也就是从使用的角度看不见服务器(Serverless),直接通过控制台、kubectl、Kubernetes API创建和使用容器负载,且只需为容器所使用的资源付费。 当CCE集群资源不足时,支持将Pod弹性部署到CCI集群。 virtual kubelet插件 CCE容器实例弹性伸缩到CCI服务 云硬盘 EVS 可以将云硬盘挂载到云服务器,并可以随时扩容云硬盘容量。 在云容器引擎中一个节点就是具有多个云硬盘的一台弹性云服务器,您可以在创建节点时指定云硬盘的大小。 使用云硬盘存储卷 对象存储服务 OBS 对象存储服务是一个基于对象的海量存储服务,为客户提供海量、安全、高可靠、低成本的数据存储能力,包括:创建、修改、删除桶,上传、下载、删除对象等。 云容器引擎支持创建OBS对象存储卷并挂载到容器的某一路径下。 使用对象存储卷 弹性文件服务 SFS 弹性文件服务提供托管的共享文件存储,符合标准文件协议(NFS),能够弹性伸缩至PB规模,具备可扩展的性能,为海量数据、高带宽型应用提供有力支持。 您可以使用弹性文件服务作为容器的持久化存储,在创建任务负载的时候挂载到容器上。 使用文件存储卷 应用运维管理 AOM 云容器引擎对接了AOM,AOM会采集容器日志存储中的“.log”等格式日志文件,转储到AOM中,方便您查看和检索;并且云容器引擎基于AOM进行资源监控,为您提供弹性伸缩能力。 容器日志 云审计 服务 CTS 云审计服务提供云服务资源的操作记录,记录内容包括您从公有云管理控制台或者开放API发起的云服务资源操作请求以及每次请求的结果,供您查询、审计和回溯使用。 云审计服务支持的CCE操作列表
  • 云硬盘备份 您可以通过云备份(Cloud Backup and Recovery,CBR)中的云硬盘备份功能为云硬盘创建在线备份,无需关闭云服务器。针对病毒入侵、人为误删除、软硬件故障等导致数据丢失或者损坏的场景,可通过任意时刻的备份恢复数据,以保证用户数据正确性和安全性,确保您的数据安全。 当前,普通IO(上一代产品)、高IO、通用型SSD、超高IO、极速型SSD云硬盘支持云备份。 父主题: 基本概念
共100000条