华为云用户手册

  • 解决方法 JDBC应该: 登录 FusionInsight Manager管理界面,修改JD BCS erver的参数“spark.authenticate.enableSaslEncryption”值为“false”,并重启对应的实例。 客户端作业: 客户端应用在提交应用的时候,修改spark-defaults.conf配置文件的“spark.authenticate.enableSaslEncryption”值为“false”。
  • 添加ClickHouse数据源约束 HetuEngine支持对接ClickHouse操作的SQL语法:SHOW CATA LOG S/SCHEMAS/TABLES/COLUMNS、DESCRIBE、USE、SELECT 表/视图。 HetuEngine支持对接ClickHouse操作的表和视图: 名称 支持对接ClickHouse操作的表、视图 HetuEngine支持对ClickHouse操作的表 本地表(MergeTree) 复制表(ReplicatedReplacingMergeTree) 分布式表(Distributed) HetuEngine支持对ClickHouse操作的视图 普通视图(Normal) 物化视图(Materialized)
  • ClickHouse数据类型映射 ClickHouse数据类型到HetuEngine数据类型映射 ClickHouse类型 HetuEngine类型 BOOLEAN BOOLEAN UInt8 SMALLINT UInt16 INTEGER UInt32 BIGINT UInt64 DECIMAL(20, 0) Int8 TINYINT Int16 SMALLINT Int32 INTEGER Int64 BIGINT Float32 REAL Float64 DOUBLE Decimal(P, S) DECIMAL(P, S) Decimal32(S) DECIMAL(P, S) Decimal64(S) DECIMAL(P, S) Decimal128(S) DECIMAL(P, S) IPv4 VARCHAR IPv6 VARCHAR UUID VARCHAR Enum8 VARCHAR Enum16 VARCHAR String VARCHAR / VARBINARY Fixedstring(N) VARCHAR / VARBINARY Date DATE DateTime TIMESTAMP
  • 基本语法 CREATE DATABASE [IF NOT EXISTS] database_name [ON CLUSTER ClickHouse集群名] ON CLUSTER ClickHouse集群名的语法,使得该DDL语句执行一次即可在集群中所有实例上都执行。集群名信息可以使用以下语句的cluster字段获取: select cluster,shard_num,replica_num,host_name from system.clusters;
  • 操作场景 在使用CDL服务前,需集群管理员创建用户并指定其操作权限以满足业务使用需求。 CDL用户分为管理员用户和普通用户,系统默认的CDL管理员用户组为“cdladmin”,CDL普通用户对应用户组为“cdl”。 关联了“cdladmin”用户组的用户可以执行CDL的任何操作。 关联了“cdl”用户组的用户可以执行CDL的创建和查询操作。 启用了Ranger鉴权时,如果用户创建后需要继续为用户配置创建、执行、查询、删除权限,请参考添加CDL的Ranger访问权限策略。 对于手动停用了Ranger鉴权的集群,可参考 MRS 集群服务启用Ranger鉴权章节重新启用Ranger鉴权。 该章节内容仅适用于开启了Kerberos认证的集群。
  • 前提条件 已安装Oozie、ZooKeeper服务,且服务正常运行。 没有任务正在运行。 如果当前集群不是安装最新的版本包,需要从“$BIGDATA_HOME/FusionInsight_Porter_x.x.x/install/FusionInsight-Oozie-x.x.x/oozie-x.x.x/embedded-oozie-server/webapp/WEB-INF/lib”路径复制“curator-x-discovery-x.x.x.jar”包到“$BIGDATA_HOME/FusionInsight_Porter_x.x.x/install/FusionInsight-Oozie-x.x.x/oozie-x.x.x/lib”目录下。
  • 样例 通过“ CS V文件输入”算子,生成十二个字段。 源文件如下: 创建ClickHouse表的语句如下: CREATE TABLE IF NOT EXISTS testck4 ON CLUSTER default_cluster( a Int32, b VARCHAR(100) NOT NULL, c char(100), d DateTime, e DateTime, f DateTime, g smallint, h bigint, l Float32, j Float64, k decimal(10,2), m boolean ) ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/default/testck4', '{replica}') PARTITION BY toYYYYMM(d)ORDER BY a; 配置“ClickHouse输出”算子,如下图: 作业执行成功后,查看testck4表中数据:
  • 前提条件 已获取待连接数据库对应的驱动Jar包。 仅数据源MySQL、Oracle(MRS 3.3.0及之后版本支持)需要上传相应的驱动,驱动对应的版本号如表1所示,且驱动需要在MySQL或Oracle官网下载。 表1 MySQL、Oracle数据源支持的驱动 数据源 支持的驱动包 MySQL mysql-connector-java-8.0.24.jar Oracle(MRS 3.3.0及之后版本支持) ojdbc8-12.2.0.1.jar 此处Oracle仅作为ThirdKafka数据源使用。 开启Kerberos认证的集群需已参考CDL用户权限管理创建具有CDL管理操作权限的用户。
  • 使用示例 --删除表t1drop table t1 SYNC; 在删除复制表时,因为复制表需要在Zookeeper上建立一个路径,存放相关数据。ClickHouse默认的库引擎是原子数据库引擎,删除Atomic数据库中的表后,它不会立即删除,而是会在480秒后删除。在删除表时,加上SYNC字段,即可解决该问题,例如:drop table t1 SYNC; 删除本地表和分布式表,则不会出现该问题,可不带SYNC字段,例如:drop table t1;
  • 示例 示例1: delete from h0 where column1 = 'country'; 示例2: delete from h0 where column1 IN ('country1', 'country2'); 示例3: delete from h0 where column1 IN (select column11 from sourceTable2); 示例4: delete from h0 where column1 IN (select column11 from sourceTable2 where column1 = 'xxx'); 示例5: delete from h0;
  • 操作步骤 以omm用户登录集群主 OMS 节点,修改配置文件“${CONTROLLER_HOME}/etc/om/controller.properties”中参数“controller.backup.conf.script.execute.timeout”值为“10000000”(根据当前集群中的DBService数据量调大超时时间)。 以omm用户登录集群备OMS节点,重复执行1。 以omm用户登录主OMS节点,执行以下命令查询BackupRecoveryPluginProcess进程id,并结束此进程。 jps|grep -i BackupRecoveryPluginProcess kill -9 查询到的PID 登录到Manager页面重新执行DBService备份任务。 执行以下命令查看BackupRecoveryPluginProcess进程是否已开启。 jps|grep -i BackupRecoveryPluginProcess
  • 导入导出作业介绍 FlinkServer WebUI页面支持作业、UDF、流表的导入导出,不支持集群管理、数据连接、应用管理、CheckPoint的导入导出。 当导入时,同一集群内不支持导入同名的作业、同名的流表、同名的UDF。 作业导出时,需手动勾选作业依赖的流表、UDF等信息,如果未勾选,校验时会弹出提示框提示需要勾选的依赖数据。作业的应用信息不会导出。 流表导出时,不解析处理流表的依赖,即流表依赖的应用信息不会导出。 UDF导出时,不解析处理UDF的依赖和被动依赖,即UDF依赖的应用信息和在哪些作业被使用的信息不会导出。 支持不同应用之间的导入导出。 根据安全需求,导入或导出FlinkSQL作业时,作业中的“password”字段会被置为空。提交作业前,需手动补齐密码信息。
  • 前提条件 集群已安装CDL、Hudi服务且运行正常。 PgSQL数据库需要开启前置要求,操作步骤请参考PostgreSQL数据库修改预写日志的策略。 在FusionInsight Manager中创建一个人机用户,例如“cdluser”,加入用户组cdladmin、hadoop、kafka、supergroup,主组选择“cdladmin”组,关联角色“System_administrator”。
  • 回答 这种情况是由于磁盘存在IO错误,处理方法如下: 方法一:登录FusionInsight Manager页面,检查Manager界面上是否磁盘IO异常的告警,如果有,可参考对应的告警帮助文档,通过更换硬盘恢复。 方法二:登录FusionInsight Manager页面,重启ClickHouse实例,恢复磁盘状态。 此时磁盘未更换,有IO错误发生时,磁盘状态还会被置为fault或者abnormal。
  • 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语法
  • 返回结果 参数 描述 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)
  • 上传依赖包 登录FusionInsight Manager,访问Flink WebUI,请参考访问FlinkServer WebUI界面。 单击“依赖管理”进入依赖管理页面。 单击“添加依赖”,可参考如下添加依赖。 表1 添加依赖 参数 描述 示例 是否自定义connector 是否自定义connector,根据实际需求选择: 是:文件为自定义connector依赖包。 否:文件为非自定义connector依赖包。 是 名称 添加的依赖名称,需与上传的依赖包中connector的连接名一致。不支持上传同名依赖包。 kafka 注册jar jar包的上传方式: 上传文件:添加本地的jar包 指定路径:已准备好的依赖文件的HDFS路径 上传文件 上传文件 注册jar选择为“上传文件”时,需通过该项上传本地jar文件。 - 指定路径 注册jar选择为“指定路径”时,需通过该项输入依赖文件的HDFS路径(需提前准备好jar包上传至HDFS)。 /flink_upload_test/flink-connector-kafka-customization.jar 描述信息 添加的依赖的描述信息。 - 单击“确定”。
  • 使用示例 自定义connector依赖 参考上传依赖包上传自定义connector依赖。 如上传依赖名称为“kafka”,自定义connector jar包名称为“flink-connector-kafka-customization.jar”。 参考如何创建FlinkServer作业新建SQL作业,该SQL中的“connector”需填写为对应的依赖名称,如'connector' = 'kafka'。 CREATE TABLE KafkaSinkTable (`user_id` INT, `name` VARCHAR) WITH ( 'connector' = 'kafka', 'topic' = 'test_sink6', 'properties.bootstrap.servers' = '192.168.20.134:21005', 'properties.group.id' = 'testGroup', 'scan.startup.mode' = 'earliest-offset', 'format' = 'csv');CREATE TABLE datagen (`user_id` INT, `name` VARCHAR) WITH ( 'connector' = 'datagen', 'rows-per-second' = '5', 'fields.user_id.kind' = 'sequence', 'fields.user_id.start' = '1', 'fields.user_id.end' = '1000');insert INTO KafkaSinkTableselect *from datagen;
  • 前提条件 已创建包含Doris服务的集群,集群内各服务运行正常。 待连接Doris数据库的节点与MRS集群网络互通。 创建具有Doris管理权限的用户。 集群已启用Kerberos认证(安全模式) 在FusionInsight Manager中创建一个人机用户,例如“dorisuser”,创建一个拥有“Doris管理员权限”的角色绑定给该用户。 使用新建的用户dorisuser重新登录FusionInsight Manager,修改该用户初始密码。 集群未启用Kerberos认证(普通模式) 使用admin用户连接Doris后,创建具有管理员权限的角色并绑定给用户。 已安装MySQL客户端,相关操作可参考使用MySQL客户端连接Doris。 已安装Flink客户端。
  • Oozie作业执行失败常用排查手段 根据任务在Yarn上的任务日志排查,首先把实际的运行任务,比如Hive SQL通过beeline运行一遍,确认Hive无问题。 出现“classnotfoundException”等报错,排查“/user/oozie/share/lib”路径下各组件有没有报错的类的Jar包,如果没有,添加Jar包并执行HDFS上更新了Oozie的share lib目录但没有生效。如果执行了更新“share lib”目录依然报找不到类,那么可以查看执行更新“share lib”的命令打印出来的路径“sharelibDirNew”是否是“ /user/oozie/share/lib”, 一定不能是其他目录。 出现NosuchMethodError,排查“/user/oozie/share/lib”路径下各组件的Jar包是不是有多个版本,注意业务本身上传的Jar包冲突,可通过Oozie在Yarn上的运行日志打印的加载的Jar包排查是否有Jar包冲突。 自研代码运行异常,可以先运行Oozie的自带样例,排除Oozie自身的异常。 寻求技术人员的支持,需要收集Yarn上Oozie任务运行日志、Oozie自身的日志及组件的运行的日志,例如使用Oozie运行Hive报异常,需收集Hive的日志。 父主题: Oozie常见问题
  • 示例 insert into h0 select 1, 'a1', 20;-- insert static partitioninsert into h_p0 partition(dt = '2021-01-02') select 1, 'a1';-- insert dynamic partitioninsert into h_p0 select 1, 'a1', dt;-- insert dynamic partitioninsert into h_p1 select 1 as id, 'a1', '2021-01-03' as dt, '19' as hh;-- insert overwrite tableinsert overwrite table h0 select 1, 'a1', 20;-- insert overwrite table with static partitioninsert overwrite h_p0 partition(dt = '2021-01-02') select 1, 'a1';-- insert overwrite table with dynamic partitioninsert overwrite table h_p1 select 2 as id, 'a2', '2021-01-03' as dt, '19' as hh;
  • 参数描述 表1 CREATE TABLE As SELECT参数描述 参数 描述 database_name Database名称,由字母、数字和下划线(_)组成。 table_name Database中的表名,由字母、数字和下划线(_)组成。 using 参数hudi,定义和创建Hudi table。 table_comment 表的描述信息。 location_path HDFS路径,指定该路径Hudi表会创建为外表。 options_list Hudi table属性列表。 query_statement select查询表达式
  • 示例 创建分区表 create table h2 using hudioptions (type = 'cow', primaryKey = 'id')partitioned by (dt)asselect 1 as id, 'a1' as name, 10 as price, 1000 as dt; 创建非分区表 create table h3 using hudiasselect 1 as id, 'a1' as name, 10 as price;从parquet表加载数据到hudi表# 创建parquet表create table parquet_mngd using parquet options(path=’hdfs:///tmp/parquet_dataset/*.parquet’);# CTAS创建hudi表create table hudi_tbl using hudi location 'hdfs:///tmp/hudi/hudi_tbl/' options (type = 'cow',primaryKey = 'id',preCombineField = 'ts')partitioned by (datestr) as select * from parquet_mngd;
  • 注意事项 写入模式:Hudi对于设置了主键的表支持三种写入模式,用户可以设置参数hoodie.sql.insert.mode来指定Insert模式,默认为upsert。 strict模式,Insert语句将保留COW表的主键唯一性约束,不允许重复记录。如果在插入过程中已经存在记录,则会为COW表执行HoodieDuplicateKeyException;对于MOR表,该模式与upsert模式行为一致。 non-strict模式,对主键表采用insert处理。 upsert模式,对于主键表的重复值进行更新操作。 在执行spark-sql时,用户可以设置“hoodie.sql.bulk.insert.enable = true”和“hoodie.sql.insert.mode = non-strict”来开启bulk insert作为Insert语句的写入方式。 也可以通过直接设置hoodie.datasource.write.operation的方式控制insert语句的写入方式,包括bulk_insert、insert、upsert。使用这种方式控制hoodie写入,需要注意执行完SQL后,必须执行reset hoodie.datasource.write.operation;重置Hudi的写入方式,否则该参数会影响其他SQL的执行。
  • 创建物化视图的“AS SELECT”的子句 创建物化视图的“AS SELECT”的子句不能包含calcite SQL解析和改写功能中的保留关键词,如“default”。如果想要在创建物化视图的“AS SELECT”子句中使用保留关键词,需要遵循以下的任一解决方案: 在创建MV和执行原始查询时,需给默认模式名称添加双引号 以在“AS SELECT”子句中使用保留关键词“default”为例: 创建物化视图 CREATE MATERIALIZED VIEW mv.default.mv1 WITH(storage_table='hive.default.mv11') AS SELECT id FROM hive."default".t1; SELECT查询 SELECT id FROM hive."default".t1; 在Session级别设置相应的catalog和schema,而不是在查询中传递完全限定的名称 以指定catalogname为“hive”,schemaname为“default”为例: USE hive.default; 创建物化视图 CREATE MATERIALIZED VIEW mv.default.mv1 WITH(storage_table='hive.default.mv11') AS SELECT id FROM t1; SELECT查询 SELECT id FROM t1;
  • DDL与DML并发 表2 支持的DDL与DML并发操作 DDL操作 insert into update delete set/reset add Y Y Y Y rename N N Y N change type N N Y N change comment Y Y Y Y drop N N Y N 执行不支持的DDL与DML并发操作时会发生异常“cannot evolution schema implicitly, actions such as rename, delete, and type change were found”。
  • DDL并发 表1 支持的DDL并发操作 DDL操作 add rename change type change comment drop add Y Y Y Y Y rename Y Y Y Y Y change type Y Y Y Y Y change comment Y Y Y Y Y drop Y Y Y Y N 对同一列并发执行DDL操作需要注意以下两点: 不能对同一列并发执行drop,否则只能成功执行第一个drop随后发生异常“java.lang.UnsupportedOperationException: cannot evolution schema implicitly, the column for which the update operation is performed does not exist.”。 drop与rename、change type和change comment并发执行时,drop必须是最后执行,否则只能执行drop以及drop之前的命令,执行drop之后的命令会发生异常“java.lang.UnsupportedOperationException: cannot evolution schema implicitly, the column for which the update operation is performed does not exist.”。
  • 操作场景 历史版本的HDFS使用了全局锁,读-写互斥,写-写互斥,即全局一把锁。但是实际上并非所有的读-写,写-写操作都会产生资源竞争。因此在该版本汇总引入了细粒度锁特性(FGL)。FGL对全局锁按照目录以及操作类型进行拆分,只有会产生资源竞争的操作才会使用同一个锁。因此极大地提升了写性能。 例如Client1和Client2同时对不相关的目录A、B进行写操作,此时对A和B的操作没有竞争关系,不会持有同一把锁,可以极大提升写性能。 该功能适用于MRS 3.5.0及之后版本。
  • 参数说明 表1 HDFS参数说明 参数 参数说明 默认值 fs.obs.security.provider 指定获取访问OBS文件系统密钥的实现方式。 参数取值: com.huawei.mrs.MrsObsCredentialsProvider:通过MRS云服务委托获取凭证。 com.obs.services.EcsObsCredentialsProvider:通过ECS云服务获取AK/SK信息。 com.obs.services.BasicObsCredentialsProvider:使用用户传入OBS的AK/SK信息。 com.obs.services.EnvironmentVariableObsCredentialsProvider:从环境变量中读取AK/SK信息。 com.huawei.mrs.MrsObsCredentialsProvider
  • HetuEngine智能物化视图概述 基于智能物化视图,HetuEngine可以提供智能预计算与缓存加速能力。HetuEngine QAS角色能够自动提取历史SQL语句进行分析学习,基于收益最大化原则自动生成高价值物化视图的候选SQL。在实际运用中,HetuEngine管理员可选择通过配置“维护实例”等,开启物化视图的自动创建与自动刷新功能。业务用户可以通过配置客户端Session来获得基于自动创建的物化视图的自动改写与提速。 该能力可以极大降低用户使用物化视图功能的使用难度,带来业务无感知的分析加速效果。HetuEngine管理员通过付出少量的计算资源和存储空间,可实现对高频SQL业务的智能加速。同时,该能力可以降低数据平台的整体负载(CPU、内存、IO等),有助于提升系统稳定性。 智能物化视图包括以下几个功能: 自动推荐物化视图 自动创建物化视图 自动刷新物化视图 自动删除物化视图
共100000条
提示

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