华为云用户手册

  • 多流Join场景支持配置表级别的TTL时间 本章节适用于 MRS 3.3.0及以后版本。 在Flink双流Join场景下,如果Join的左表和右表其中一个表数据变化快,需要较短时间的过期时间,而另一个表数据变化较慢,需要较长时间的过期时间。目前Flink只有表级别的TTL(Time To Live:生存时间),为了保证Join的准确性,需要将表级别的TTL设置为较长时间的过期时间,此时状态后端中保存了大量的已经过期的数据,给状态后端造成了较大的压力。为了减少状态后端的压力,可以单独为左表和右表设置不同的过期时间。不支持where子句。 可通过使用Hint方式单独为左表和右表设置不同的过期时间,如左表(state.ttl.left)设置TTL为60秒,右表(state.ttl.right)设置TTL为120秒: Hint方式格式: /*+ OPTIONS('state.ttl.left'='60S', 'state.ttl.right'='120S') */ 在SQL语句中配置示例: 示例1: CREATE TABLE user_info (`user_id` VARCHAR, `user_name` VARCHAR) WITH ( 'connector' = 'kafka', 'topic' = 'user_info_001', 'properties.bootstrap.servers' = '192.168.64.138:21005', 'properties.group.id' = 'testGroup', 'scan.startup.mode' = 'latest-offset', 'value.format' = 'csv' ); CREATE table print( `user_id` VARCHAR, `user_name` VARCHAR, `score` INT ) WITH ('connector' = 'print'); CREATE TABLE user_score (user_id VARCHAR, score INT) WITH ( 'connector' = 'kafka', 'topic' = 'user_score_001', 'properties.bootstrap.servers' = '192.168.64.138:21005', 'properties.group.id' = 'testGroup', 'scan.startup.mode' = 'latest-offset', 'value.format' = 'csv' ); INSERT INTO print SELECT t.user_id, t.user_name, d.score FROM user_info as t JOIN -- 为左表和右表设置不同的TTL时间 /*+ OPTIONS('state.ttl.left'='60S', 'state.ttl.right'='120S') */ user_score as d ON t.user_id = d.user_id; 示例2 INSERT INTO print SELECT t1.user_id, t1.user_name, t3.score FROM t1 JOIN -- 为左表和右表设置不同的TTL时间 /*+ OPTIONS('state.ttl.left' = '60S', 'state.ttl.right' = '120S') */ ( select UPPER(t2.user_id) as user_id, t2.score from t2 ) as t3 ON t1.user_id = t3.user_id; 父主题: Flink企业级能力增强
  • 回答 针对avro格式表查询报错,根本原因是avro格式表schema不匹配导致,需要考虑增量和存量avro格式表查询两个场景: 增量avro格式表,需要创建表之前设置参数spark.sql.forceConvertSchema.enabled=true,会将avro表格式强转指定数据类型,一次性修改schema。 存量avro格式表,查询avro表之前设置参数spark.sql.forceConvertSchema.enabled=true,如果查询失败,可能avro格式表schema被缓存,执行refresh table命令,清除缓存后再设置参数进行查询,会将avro表格式强转指定数据类型,客户端临时修改schema。
  • 配置参数 在Spark客户端的“spark-defaults.conf”配置文件中进行设置。 参数 说明 默认值 spark.sql.streaming.stateStore.providerClass 用于管理有状态流查询中的状态数据的类。此类必须是StateStoreProvider的子类,并且必须具有零参数构造函数。 配置参数值为org.apache.spark.sql.execution.streaming.state.RocksDBStateStoreProvider即可选择RocksDB作为状态后端。 org.apache.spark.sql.execution.streaming.state.HDFSBackedStateStoreProvider
  • ALTER TABLE修改表数据 建议慎用delete、update的mutation操作 标准SQL的更新、删除操作是同步的,即客户端要等服务端返回执行结果(通常是int值);而ClickHouse的update、delete是通过异步方式实现的,当执行update语句时,服务端立即返回执行成功还是失败结果,但是实际上此时数据还没有修改完成,而是在后台排队等着进行真正的修改,可能会出现操作覆盖的情况,也无法保证操作的原子性。 业务场景要求有update、delete等操作,建议使用ReplacingMergeTree、CollapsingMergeTree、VersionedCollapsingMergeTree引擎,使用方式参见:https://clickhouse.tech/docs/zh/engines/table-engines/mergetree-family/collapsingmergetree/。 建议少或不增删数据列 业务提前规划列个数,如果将来有更多列要使用,可以规划预留多列,避免在生产系统跑业务过程中进行大量的alter table modify列操作,导致不可以预知的性能、数据一致性问题。 父主题: ClickHouse常用SQL语法
  • 前提条件 集群已安装CDL、Hudi服务且运行正常。 ThirdKafka数据库的Topic需要能被MRS集群消费,操作步骤请参考ThirdPartyKafka前置准备。 在 FusionInsight Manager中创建一个人机用户,例如“cdluser”,加入用户组cdladmin、hadoop、kafka、supergroup,主组选择“cdladmin”组,关联角色“System_administrator”。
  • 前提条件 集群已安装CDL、Hudi服务且运行正常。 ThirdKafka数据库的Topic需要能被MRS集群消费,操作步骤请参考ThirdPartyKafka前置准备。 在FusionInsight Manager中创建一个人机用户,例如“cdluser”,加入用户组cdladmin、hadoop、kafka、supergroup,主组选择“cdladmin”组,关联角色“System_administrator”。
  • 日志描述 日志路径:Guardian相关日志的存储路径为:“/var/log/Bigdata/guardian/token-server”。 日志归档规则:Guardian的运行日志启动了自动压缩归档功能,当日志大小超过50MB的时候(此日志文件大小可进行配置),会自动压缩,压缩后的日志文件名规则为:“token-server.log.[编号]”。最多保留最近的20个压缩文件,压缩文件保留个数和压缩文件阈值可以配置。
  • 问题 安装集群外客户端或使用集群外客户端时,有时会出现连接Spark任务端口失败的问题。 异常信息:Failed to bind SparkUi Cannot assign requested address: Service ‘sparkDriver’ failed after 16 retries (on a random free port)! Consider explicitly setting the appropriate binding address for the service ‘sparkDriver’ (for example spark.driver.bindAddress for SparkDriver) to the correct binding address.
  • 解决方法 应用无法访问到SparkUI的IP:PORT。可能有以下原因: 可能原因一:集群节点与客户端节点网络不通。 解决方法: 查看客户端节点“/etc/hosts”文件中是否配置集群节点映射,在客户端节点执行命令: ping sparkui的IP 如果ping不通,检查映射配置与网络设置。 可能原因二:客户端节点防火墙未关闭。 解决方法: 执行如下命令可查看是否关闭: systemctl status firewalld(不同的操作系统查询命令不一致,此命令以CentOS为例) 如下图所示:dead表示关闭。 防火墙开则影响通信,执行如下命令关闭防火墙: service firewalld stop(不同的操作系统查询命令不一致,此命令以CentOS为例) 可能原因三:端口被占用,每一个Spark任务都会占用一个SparkUI端口,默认为22600,如果被占用则依次递增端口重试。但是有个默认重试次数,为16次。16次重试都失败后,会放弃该任务的运行。 查看端口是否被占用: ssh -v -p port username@ip 如果输出“Connection established”,则表示连接成功,端口已被占用。 Spark UI端口范围由配置文件spark-defaults.conf中的参数“spark.random.port.min”和“spark.random.port.max”决定,如果该范围端口都已被占用,则 导致无端口可用从而连接失败。 解决方法:调节重连次数spark.port.maxRetries=50,并且调节executor随机端口范围spark.random.port.max+100 可能原因四:客户端Spark配置参数错误。 解决方法: 在客户端节点执行命令cat spark-env.sh,查看SPARK_LOCAL_HOSTNAME,是否为本机IP。 该问题容易出现在从其他节点直接复制客户端时,配置参数未修改。 需修改SPARK_LOCAL_HOSTNAME为本机IP。 注:如果集群使用EIP通信,则需要设置以下参数。 spark-default.conf中添加spark.driver.host = EIP(客户端节点弹性公网IP) spark-default.conf中添加spark.driver.bindAddress=本地IP spark-env.sh中修改SPARK_LOCAL_HOSTNAME=EIP(客户端节点弹性公网IP) 可能原因五:代码问题。 解决方法: Spark在启动任务时会在客户端创建sparkDriverEnv并绑定DRIVER_BIND_ADDRESS,该逻辑并没有走到服务端,所以该问题产生的原因也是客户端节点操作系统环境问题导致sparkDriver获取不到对应的主机IP。 可以尝试执行export SPARK_LOCAL_HOSTNAME=172.0.0.1或者设置spark.driver.bindAddress=127.0.0.1,使提交任务driver端可以加载到loopbackAddress,从而规避问题。
  • 使用方法 配置Flink作业时,可通过在FlinkServer Web UI的作业开发界面添加自定义参数“over.window.interval”,且值配置为大于或等于“0”时开启窗口支持数据超期功能,创建作业可参考如何创建FlinkServer作业。该设置会对作业中的所有over窗口生效,建议对单over窗口的作业使用此功能。 SQL示例: CREATE TABLE OverSource ( `rowtime` TIMESTAMP_LTZ(3), `groupId` INT, `value` INT, `name` STRING, `additional_field` STRING, `proctime` as PROCTIME(), WATERMARK FOR rowtime AS rowtime ) WITH ( 'connector' = 'kafka', 'topic' = 'test_source', 'properties.bootstrap.servers' = 'Kafka的Broker实例业务IP:Kafka端口号', 'properties.group.id' = 'testGroup', 'scan.startup.mode' = 'latest-offset', 'format' = 'csv', 'properties.sasl.kerberos.service.name' = 'kafka', --FlinkServer所在集群为非安全模式去掉此参数 'properties.security.protocol' = 'SASL_PLAINTEXT', --FlinkServer所在集群为非安全模式去掉此参数 'properties.kerberos.domain.name' = 'hadoop.系统 域名 ' --FlinkServer所在集群为非安全模式去掉此参数 ); CREATE TABLE LD_SINK( `name` STRING, `groupId` INT, `rowtime` TIMESTAMP_LTZ(3),`count_zw` BIGINT,`sum_zw` BIGINT ) WITH ( 'connector' = 'print' ); SELECT `name`, `groupId`, COUNT(`value`) OVER ( PARTITION BY groupId ORDER BY proctime RANGE BETWEEN INTERVAL '10' second PRECEDING AND CURRENT ROW ) as count_zw, SUM(`value`) OVER ( PARTITION BY groupId ORDER BY proctime RANGE BETWEEN INTERVAL '10' second PRECEDING AND CURRENT ROW ) as sum_zw FROM OverSource
  • FlinkSQL窗口函数支持迟到数据 FlinkSQL新增窗口函数支持迟到数据特性,解决迟到数据需要处理的场景。目前支持TUMBLE、HOP、OVER、CUMULATE窗口函数的迟到数据,示例如下: CREATE TABLE T1 ( `int` INT, `double` DOUBLE, `float` FLOAT, `bigdec` DECIMAL(10, 2), `string` STRING, `name` STRING, `rowtime` TIMESTAMP(3), WATERMARK for `rowtime` AS `rowtime` - INTERVAL '1' SECOND ) WITH ( 'connector' = 'values', ); -- 该Sink的字段必须和窗口的输入数据保持一致,但顺序不要求一致 CREATE TABLE LD_SINK( `float` FLOAT, `string` STRING, `name` STRING, `rowtime` TIMESTAMP(3) ) WITH ( 'connector' = 'print', ); SELECT /*+ LATE_DATA_SINK('sink.name'='LD_SINK') */ `name`, MIN(`float`), COUNT(DISTINCT `string`) FROM TABLE( TUMBLE(TABLE T1, DESCRIPTOR(rowtime), INTERVAL '5' SECOND)) GROUP BY `name`, window_start, window_end 该特性还支持窗口接收到迟到数据时输出当前窗口的开始时间和结束时间,可通过添加在Hint中'window.start.field'和'window.end.field'使用,字段类型必须是timestamp,示例如下: CREATE TABLE LD_SINK( `float` FLOAT, `string` STRING, `name` STRING, `rowtime` TIMESTAMP(3), `windowStart` TIMESTAMP(3), `windowEnd` TIMESTAMP(3) ) WITH ( 'connector' = 'print', ); SELECT /*+ LATE_DATA_SINK('sink.name'='LD_SINK', 'window.start.field'='windowStart', 'window.end.field'='windowEnd') */ `name`, MIN(`float`), COUNT(DISTINCT `string`) FROM TABLE( TUMBLE(TABLE T1, DESCRIPTOR(rowtime), INTERVAL '5' SECOND)) GROUP BY `name`, window_start, window_end
  • FlinkSQL支持设置Source的并发 本章节适用于MRS 3.3.0及以后版本。 FlinkSQL支持通过使用参数“source.parallelism”设置Source算子的并发数,解决下游算子的并发数引起的一些问题,例如下游算子发送数据倾斜、背压、作业性能慢等问题。 该特性会将Source和下游算子的Forward分区改为Rebalance分区,所以当Source算子的并发数和下游算子的并发数(parallelism数)不一致时,且作业不允许数据乱序,需要在启用该特性的同时开启DISTRIBUTEBY特性,可参考Flink SQL语法增强。 如设置Source并发数为“2”并开启DISTRIBUTEBY特性: CREATE TABLE KafkaSource ( `user_id` VARCHAR, `user_name` VARCHAR, `age` INT ) WITH ( 'connector' = 'kafka', 'topic' = 'test_source', 'properties.bootstrap.servers' = 'Kafka的Broker实例业务IP:Kafka端口号', 'properties.group.id' = 'testGroup', 'scan.startup.mode' = 'latest-offset', 'format' = 'csv', 'properties.sasl.kerberos.service.name' = 'kafka', 'properties.security.protocol' = 'SASL_PLAINTEXT', 'properties.kerberos.domain.name' = 'hadoop.系统域名', -- 设置Source并发数 'source.parallelism' = '2' ); CREATE TABLE KafkaSink( `user_id` VARCHAR, `user_name` VARCHAR, `age` INT ) WITH ( 'connector' = 'kafka', 'topic' = 'test_sink', 'properties.bootstrap.servers' = 'Kafka的Broker实例业务IP:Kafka端口号', 'value.format' = 'csv', 'properties.sasl.kerberos.service.name' = 'kafka', 'properties.security.protocol' = 'SASL_PLAINTEXT', 'properties.kerberos.domain.name' = 'hadoop.系统域名' ); -- Insert into KafkaSink select user_id, user_name, age from KafkaSource;(未开启DISTRIBUTEBY特性) -- 开启DISTRIBUTEBY特性 Insert into KafkaSink select/*+ DISTRIBUTEBY('user_id') */ user_id, user_name, age from KafkaSource;
  • FlinkSQL DISTRIBUTEBY FlinkSQL新增DISTRIBUTEBY特性,根据指定的字段进行分区,支持单字段及多字段,解决数据仅需要分区的场景。示例如下: SELECT /*+ DISTRIBUTEBY('id') */ id, name FROM t1; SELECT /*+ DISTRIBUTEBY('id', 'name') */ id, name FROM t1; SELECT /*+ DISTRIBUTEBY('id1') */ id as id1, name FROM t1;
  • 使用约束 新增列在设置默认值前,如果数据已经进行了重写,则查询历史数据不支持返回列的默认值,返回NULL。数据入库、更新、执行Compaction、Clustering都会导致部分或全部数据重写。 列的默认值设置要与列的类型一致,如不一致会进行类型强转,导致默认值精度丢失或者默认值为NULL。 历史数据的默认值与列第一次设置的默认值一致,多次修改列的默认值不会影响历史数据的查询结果。 设置默认值后rollback不能回滚默认值配置。 Spark SQL暂不支持查看列默认值信息,可以通过Hive beeline执行show create table命令查看。
  • 示例 SQL语法具体参考Hudi SQL语法参考章节。 示例: 建表指定列默认值 create table if not exists h3( id bigint, name string, price double default 12.34 ) using hudi options ( primaryKey = 'id', type = 'mor', preCombineField = 'name' ); 添加列指定列默认值 alter table h3 add columns(col1 string default 'col1_value'); alter table h3 add columns(col2 string default 'col2_value', col3 int default 1); 修改列默认值 alter table h3 alter column price set default 14.56; 插入数据使用列默认值 insert into h3(id, name) values(1, 'aaa'); insert into h3(id, name, price) select 2, 'bbb', 12.5;
  • 使用HetuEngine查询容错执行能力须知 容错不适用于已损坏的查询或其他用户错误场景。例如:不会花费资源重试由于无法解析SQL而失败的查询任务。 不同数据源对SQL语句的容错支持能力存在差异: 所有数据源都支持读操作的容错执行。 Hive数据源支持写操作的容错执行。 容错能力非常适合大批量查询,如果用户在容错集群上同时运行大量短时间小查询,则可能会遇到延迟。因此,建议处理批处理操作时使用专用的容错计算实例,与进行交互式查询的更高查询量的计算实例分开。
  • HetuEngine查询容错执行能力介绍 当集群中的节点因网络、硬件或软件问题发生故障时,在故障节点上运行的所有查询任务都将丢失。这可能会严重影响集群生产力并造成资源浪费,尤其对于长时间运行的查询影响较大。HetuEngine提供一种故障恢复机制,即容错执行能力。集群可通过自动重新运行受影响的查询或其组件任务来降低查询失败概率。可降低人工干预并提高了容错性,但会延长总执行时间。 当前支持如下两种容错执行机制: QUERY级重试策略:开启QUERY级别容错不会进行中间数据落盘,如果查询任务失败,将自动重试该查询任务的所有task。当集群的大部分工作由小查询组成时建议使用此策略。 TASK级重试策略:开启TASK级别容错会默认配置HDFS作为交换区,将exchange中间数据落盘,如果查询任务失败,将重试失败的task。建议在执行大批量查询时使用此策略,集群可以更高效的重试查询中的小颗粒任务,而不是整个查询。 本示例介绍设置“TASK”重试策略容错执行机制。
  • 操作步骤 使用Ranger管理员用户rangeradmin登录Ranger管理页面,具体操作可参考登录Ranger WebUI界面。 在首页中单击“EXTERNAL AUTHORIZATION”区域的组件插件名称“OBS”。 单击“Add New Policy”,添加OBS权限控制策略。 根据业务需求配置相关参数。 表1 OBS权限参数 参数名称 描述 Policy Name 策略名称,可自定义,不能与本服务内其他策略名称重复。 Policy Label 为当前策略指定一个标签,可以根据这些标签搜索报告和筛选策略。 Resource Path 资源路径,配置当前策略适用的OBS路径文件夹,可填写多个值,不支持使用通配符“*”。且配置的OBS路径文件夹必须是已存在的,否则会授权失败。 OBS默认开启权限的递归(且不支持修改),无任何权限的子目录会默认继承父目录所有的权限。 Description 策略描述信息。 Audit Logging 是否审计此策略。 Allow Conditions 策略允许条件,配置本策略内允许的权限。 “Select Group”列选择已创建好的需要授予权限的用户组(配置“Select Role”和“Select User”将不会生效) 单击“Add Permissions”,添加对应权限。 Read:读权限 Write:写权限 Select/Deselect All:全选/取消全选 如需添加多条权限控制规则,可单击按钮添加。如需删除权限控制规则,可单击按钮删除。 例如,为用户组“hs_group1”(该用户组仅由数字0~9、字母a~Z、下划线或#组成,且最大长度为52个字符,否则将导致策略添加失败)添加“obs://hs-test/user/hive/warehouse/o4”表的读写权限,配置如下: 单击“Add”,在策略列表可查看策略的基本信息。等待策略生效后,验证相关权限是否正常。 如果不再使用策略,可单击按钮删除策略。
  • 查看作业健康步骤 访问Flink WebUI,请参考访问FlinkServer WebUI界面。 单击“作业管理”进入作业管理页面。 查看作业健康度 在作业管理页面查看当前作业的健康状态: 空:作业未运行,无健康状态 绿色图标:健康 黄色图标:亚健康 红色图标:不健康 导出所有作业健康报告 单击“作业健康报告”,系统会自动将所有作业的健康状态信息导出至本地,包括作业名称,健康度,提交用户,告警信息,配置信息和启动时间等。 健康度为“0”:健康 健康度为“1”:亚健康 健康度为“2”:不健康
  • 前提条件 集群运行正常,并已安装集群客户端。 提交作业前,需配置“客户端安装路径/Flink/flink/conf/flink-conf.yaml”文件,开启作业注册到FlinkServer功能和作业告警功能,参数设置如下: 表1 开启作业注册和作业告警功能 参数 值 描述 job.register.enable true 是否开启作业注册到FlinkServer: true:开启 false:不开启 job.alarm.enable true 是否开启作业告警: true:开启 false:不开启 通过客户端注册到FlinkServer的作业,如果未开启作业注册到FlinkServer功能,暂不支持在FlinkServer WebUI执行启动、开发、停止等操作。 需确保未使用“Session模式”提交作业并且需要指定作业名。
  • 作业健康状态说明 当集群运行大量Flink作业时,为方便用户对每个作业进行健康状态评估,FlinkServer WebUI提供Flink作业健康度管理功能,用户可直接在页面查看当前作业的健康情况,并可一键导出所有作业的健康度信息。作业状态分如下情况: 健康:作业运行正常,作业状态健康。 亚健康: 出现“ALM-45637 Flink作业task持续背压”告警,根据告警信息修复告警后,健康状态自动恢复至健康。 出现“ALM-45639 Flink作业checkpoint完成时间超过阈值”告警,根据告警信息修复告警后,健康状态自动恢复至健康。 不健康: 出现“ALM-45636 Flink作业连续checkpoint失败”告警,根据告警信息修复告警后,健康状态自动恢复至健康。 出现“ALM-45638 Flink作业失败重启次数超阈值”告警,根据告警信息修复告警后,需重启该作业,作业自动恢复至健康。
  • 返回结果 参数 描述 path_num 指定目录的子目录数量 file_num 指定目录的文件数量 storage_size 该目录的Size(bytes) storage_size(unit) 该目录的Size(KB) storage_path 指定目录的完整FS绝对路径 space_consumed 返回文件/目录在集群中占用的实际空间,即它考虑了为集群设置的复制因子 quota 名称配额(名称配额是对当前目录树中的文件和目录名称数量的硬性限制) space_quota 空间配额(空间配额是对当前目录树中的文件所使用的字节数量的硬性限制)
  • 返回结果 参数 描述 action instant_time对应的commit所属的action类型,如compaction、deltacommit、clean等 partition_path 指定的instant所更新或插入的文件位于哪个分区 file_id 指定的instant所更新或插入的文件的ID previous_commit 指定的instant所更新或插入文件名中的时间戳 total_records_updated 该文件中多少个record被更新 total_records_written 该文件中新插入了多少个record total_bytes_written 该文件新增多少bytes的数据 total_errors 指定的instant在更新或者插入过程中的报错 file_size 该文件的大小(bytes)
  • 参数描述 表1 参数描述 参数 描述 是否必填 op 生成compaction计划(op指定为“schedule”),或者执行已经生成的compaction计划(op指定为“run”) 是 table 需要查询表的表名,支持database.tablename格式 否 path 需要查询表的路径 否 timestamp 在op指定为“run”时,可以指定timestamp来执行该时间戳对应的compaction计划以及该时间戳之前未执行的compaction计划 否
  • 参数描述 表1 参数描述 参数 描述 是否必填 table 需要查询表的表名,支持database.tablename格式 是 clean_policy 清理老版本数据文件的策略,默认KEEP_LATEST_COMMITS 否 retain_commits 仅对KEEP_LATEST_COMMITS策略有效 否 hours_retained 仅对KEEP_LATEST_BY_HOURS策略有效 否 file_version_retained 仅对KEEP_LATEST_FILE_VERSIONS策略有效 否
  • 操作场景 开启级联授权功能的集群极大地提升了鉴权易用性,用户只需在Ranger页面上对业务表进行一次授权,系统就会自动细粒度关联数据存储源的权限,不需要感知表的存储路径,无需进行二次授权。同时也补齐了基于存算分离授权功能缺陷,可以在Ranger上实现对存算分离表的授权鉴权。Hive表的级联授权功能主要体现为: 开启Ranger级联授权后,Ranger中创建策略对表授权时,只需创建表的Hive策略,无需对表存储源进行二次授权。 针对已授权的库/表,当存储源发生变动时,周期同步关联新存储源HDFS/OBS,生成对应权限。 不支持对视图表进行级联授权。 仅支持对数据库/表进行级联授权操作,不支持对分区做级联权限,如果分区路径不在表路径下,则需要用户手动授权分区路径。 不支持对Hive Ranger策略中的“Deny Conditions”进行级联授权,即“Deny Conditions”的权限仅限制表权限,不能生成HDFS/OBS存储源端的权限。 不支持在Hive Ranger中创建“database”为“*”且“table”为“*”的策略。 级联授权生成的HDFS/OBS存储源端的权限弱于HDFS Ranger策略的权限,即如果已经对表的HDFS存储源设置了HDFS Ranger权限,则级联权限将不会生效。 不支持对存储源为OBS的表级联授权后直接进行alter操作,需要给对应用户组额外授予OBS表路径的父目录的“Read”和“Write”权限才能使用alter功能,且用户组仅由数字0~9、字母a~Z、下划线或#组成,且最大长度为52个字符,否则将导致策略添加失败,可参考管理MRS集群用户组修改用户组信息。
  • 操作场景 该章节主要介绍如何在HBase Shell命令行查询慢请求或超大请求信息。慢请求是指通过hbase shell命令查询服务端时,RPC请求响应时长超过阈值(即HBase服务端配置参数“hbase.ipc.warn.response.time”,默认值为“3000”ms)的请求;超大请求是指通过hbase shell命令查询服务端时,RPC请求一次返回数据量大小超过阈值(即HBase服务端配置参数“hbase.ipc.warn.response.size”,默认值为“5MB”)的请求。 每个RegionServer节点默认会缓存最近的256条慢请求和超大请求,可以通过FusionInsight Manager中HBase服务端配置参数“hbase.regionserver.slowlog.ringbuffer.size”调整缓存的大小。 该章节内容适用于MRS 3.3.0 及之后版本。
  • 命令说明 该操作主要涉及新增的hbase shell命令如下: get_slowlog_responses:查询慢请求信息。 get_largelog_responses:查询超大请求信息。 clear_slowlog_responses:清理RegionServer缓存中的数据。 可以在hbase shell中执行如下命令查看相关命令如何使用: help 'cmdName' 例如,执行help 'clear_slowlog_responses'查看clear_slowlog_responses命令的使用方法:
  • 操作场景 原子性是指事务是一个不可分割的工作单元,一个事务可以包含多个操作,这些操作要么全部执行,要么全都不执行。但是由于事务在执行过程中,可能出现一些意外,例如用户回滚了事务、连接断开、断电等,导致事务被中断执行。 ClickHouse支持原子性写入能力,支持事务能力。实现事务的原子性,在事务的某个操作失败后,支持回滚到事务执行之前的状态。 本章节主要介绍如何开启ClickHouse事务。 使用本地表场景进行数据写入性能更优,故推荐本地表的数据增、删、改、查场景的多副本分布式事务支持。 对于使用分布式表进行数据写入场景的分布式事务,需要结合分布式表事务insert_distributed_sync+本地表事务(Mergetree/ReplicateMergeTree)完整的事务支持数据写入。
  • 参数说明 表1 JobGateway参数说明 参数 参数说明 默认值 HTTP_INSTANCE_PORT JobServer服务http端口。 默认值:29973 取值范围:29970~29979 HTTPS_INSTANCE_PORT JobServer服务https端口。 默认值:29972 取值范围:29970~29979 JAVA_OPTS 用于JVM的gc参数。需确保GC_OPT设置正确,否则进程启动会失败。 见页面默认配置。 job.record.batch.delete.count 25 JobServer每一批老化数据的条数。 job.record.expire.count 500000 JobServer老化数据的条数。 job.record.expire.day 7 JobServer作业过期的时间。 logging.level.org.apache.tomcat JobServer服务端tomcat日志的日志级别。 默认值:INFO 取值范围:DEBUG、INFO、WARN、ERROR、FATAL root.level JobServer服务端日志的日志级别。 默认值:INFO 取值范围:DEBUG、INFO、WARN、ERROR、FATAL NGINX_PORT JobBalancer服务通信端口。 默认值:https默认端口29970 http默认端口29971 取值范围:29970~29979 client_body_buffer_size 设置读取客户端请求正文的缓冲区大小。如果请求主体大于缓冲区,则将整个主体或仅将其部分写入临时文件。 默认值:10240 取值范围:大于0 client_body_timeout 定义读取客户端请求正文的超时时间。超时仅针对两次连续读取操作之间的一段时间设置,而不是针对整个请求主体的传输。如果客户端在此时间内未传输任何内容,则请求将终止并出现408(请求超时)错误。单位:秒。 默认值:60 取值范围:[1,86400] client_header_buffer_size 设置读取客户端请求标头的缓冲区大小。对于大多数请求,1K字节的缓冲区就足够了。但是,如果请求包含长cookie,或者来自WAP客户端,则它可能不适合1K。如果请求行或请求头字段不适合此缓冲区,则分配由large_client_header_buffers指令配置的更大缓冲区。 默认值:1024 取值范围:大于0 client_header_timeout 定义读取客户端请求标头的超时时间。如果客户端没有在这段时间内传输整个标头,请求将终止并出现408(请求超时)错误。 默认值:60 取值范围:[1,86400] client_max_body_size http请求体最大值,单位mb。 默认值:80 取值范围:1~10240 keepalive_requests 设置可以通过一个保持活动连接提供服务的最大请求数。在发出最大请求数后,连接将关闭。定期关闭连接对于释放每个连接的内存分配是必要的。因此,使用过高的最大请求数可能会导致过多的内存使用,因此不推荐使用。 默认值:1000 取值范围:[1,100000] keepalive_time 限制可以通过一个保持活动连接处理请求的最长时间。达到此时间后,将在后续请求处理后关闭连接。单位:秒。 默认值:3600 取值范围:[1,86400] keepalive_timeout 设置一个超时时间,在此期间保持活动的客户端连接将在服务器端保持打开状态。零值禁用保持活动的客户端连接。单位:秒。 默认值:75 取值范围:[0,86400] large_client_header_buffers.size 设置用于读取大型客户端请求标头的缓冲区的最大数量(large_client_header_buffers.number)和大小。一个请求行不能超过一个缓冲区的大小,否则会向客户端返回414(Request-URI Too Large)错误。请求头字段也不能超过一个缓冲区的大小,否则返回400(Bad Request)错误给客户端。缓冲区仅按需分配。如果在请求处理结束后连接转换为保持活动状态,则释放这些缓冲区。 默认值:4096 取值范围:大于0 lb_limit_req_burst 当大量请求过来时,超过访问频次限制的请求将会放到缓冲区,超过缓冲区大小的请求会返回503错误。 默认值:50 取值范围:1~1000 lb_limit_zone_rate http请求表示允许相同标识的客户端的访问频次,单位r/s、r/m。例如:30r/s,表示允许每秒访问30次。 默认值:30r/s 取值范围:1-100r/s或1-6000r/m lb_limit_zone_size http内存缓冲区的大小,单位mb。 默认值:20 取值范围:1~10240 lb_req_timeout Nginx读写的超时时间。 默认值:60s 取值范围:1~3600s proxy_connect_timeout 定义与代理服务器建立tcp连接的超时时间。使用数字和单位组合,m表示分钟,s表示秒。 默认值:3m 取值范围:1-60m或1-3600s proxy_timeout 与代理服务器的tcp连接上两次连续读取或写入操作之间的超时。如果在此时间内没有数据传输,则连接关闭。使用数字和单位组合,m表示分钟,s表示秒。 默认值:3m 取值范围:1-60m或1-3600s
共100000条