华为云用户手册

  • 前提条件 在 FusionInsight Manager创建一个角色,添加ClickHouse逻辑集群的管理权限以及Loader作业分组权限。创建Loader作业的业务用户,关联该角色和并添加用户组yarnviewgroup。 ClickHouse表已创建,确保用户已授权访问作业执行时操作该表的权限,参照ClickHouse客户端使用实践创建本地复制表和分布式表,导出时选择本地复制表。 确保没有出现ClickHouse相关告警。
  • 回答 使用当前可得的最近的tablestatus文件进行恢复,分为如下两个场景来进行恢复: 场景一:当前批次的CarbonData数据文件和.segment文件损坏无法恢复。 进入客户端节点,执行如下命令,查看HDFS对应表的tablestatus文件,找到最近的tablestatus版本号。 cd 客户端安装路径 source bigdata_env source Spark/component_env kinit 组件业务用户 (普通集群无需执行kinit命令) hdfs dfs -ls /user/hive/warehouse/hrdb.db/car01/Metadata 上图中,当前批次文件tablestatus_1669028899548损坏,需要使用tablestatus_1669028852132文件。 进入spark sql,执行如下命令来修改表属性latestversion为当前最近的版本号。 alter table car01 set SERDEPROPERTIES ('latestversion'='1669082252132'); 需要退出当前session,重新连接后执行查询。该方式已尽可能恢复客户数据,一般现网情况下,如断电场景segment数据文件也会存在不可恢复情况。 场景二:当前批次的Carbondata数据文件和.segment文件完整,可恢复。 使用TableStatusRecovery恢复工具,当前工具仅针对非分区表进行恢复。进入Spark客户端节点,执行如下命令: cd 客户端安装路径 source bigdata_env source Spark/component_env kinit 组件业务用户 (普通集群无需执行kinit命令) spark-submit --master yarn --class org.apache.carbondata.recovery.tablestatus.TableStatusRecovery Spark/spark/carbonlib/carbondata-spark_*.jar hrdb car01 参数说明:hrdb car01表名称。 TableStatusRecovery恢复工具限制: 合并后,如果tablestatus文件丢失或损坏,使用该工具无法恢复合并状态的segment,因为丢失或损坏的tablestatus文件才存在该segment合并信息。 Delete segment by Id/Date后,如果tablestatus文件丢失或损坏,则无法恢复已删除的segment信息,因为只有丢失或损坏的tablestatus文件才存在该segment的删除信息。 不支持在mv表上使用该工具。 由于最新的tablestatus文件存在问题,使用该工具恢复后无法正常查询时,可以移除最新的tablestatus文件,使用上一个tablestatus文件进行恢复。
  • 使用S3表函数 登录主 OMS 节点。 执行以下命令获取OBS内的存储数据。 select * from S3(path, [ak, sk,] format, structure, [compression]) path:访问 域名 /OBS文件路径,登录OBS管理控制台,在左侧导航栏单击“并行文件系统”,在“并行文件系统”页面单击对应的文件系统名称,在“文件”页面单击文件名称,文件“链接”即path路径,如图1所示。 图1 文件路径 ak:参数可选,具备访问OBS权限的ak。 sk:参数可选,具备访问OBS权限的sk。 format :文件的格式。 structure:表的结构。 compression:参数可选,压缩类型。
  • HetuEngine SQL诊断功能介绍 HetuEngine QAS实例可对用户的SQL执行历史记录提供自动感知、自动学习、自动诊断服务,提升在线SQL运维能力,自动加速在线SQL分析任务,开启SQL诊断能力后,系统可实现如下能力: 自动感知并向集群管理员展现不同时间周期范围内的租户级、用户级的SQL任务统计,帮助集群管理员快速预判业务运行状态和潜在风险。 自动诊断出大SQL、慢SQL及相关提交信息,面向集群管理员多维度可视化呈现,同时提供大SQL、慢SQL的诊断与优化建议。 本章节适用于 MRS 3.2.0及以后版本。
  • 回答 查询S3中的数据: select * from s3(path [,access_key_id, secret_access_key] [,format] [,structure]) path:带有文件路径的Bucket URL地址。 format:文件的格式。 access_key_id, secret_access_key:账号的长期凭证,可以使用凭证来对请求进行认证,参数是可选的。如果没有指定凭据,将从配置文件中读取凭据。 structure:表结构。 ClickHouse从S3中获取数据创建表: CREATE TABLE test1_s3 (name String, value UInt32) ENGINE = S3(path, [access_key_id, secret_access_key,] format) 查看创建好的表: select * from test1_s3
  • 操作场景 TimelineServer作为Yarn服务的一个角色,当前版本开始支持HA模式。如果需要避免TimelineServer单点故障问题,可以通过开启TimelineServer HA来确保Yarn TimelineServer角色的高可用性。 TimelineServer会将数据保存到内存数据库LevelDB中,占用大量内存,安装TimelineServer的节点内存至少需要预留30GB。 该功能适用于MRS 3.2.0-LTS.1及之后版本。
  • 操作场景 心跳和数据判齐功能用于统计CDL同步任务的全链路信息, 包括从数据库管理系统RDBMS到Kafka的数据耗时、从Kafka消费数据写入到Hudi的数据耗时和数据条数等一系列信息,并将其写入到特定的Topic(cdl_snapshot_topic)中,用户可自行消费Topic中的数据并写入到某个特定Hudi表作数据判齐使用。心跳判齐数据不仅可以用来判断心跳时间之前的数据已经同步到 数据湖 ,还可以根据事务时间,写Kafka的时间,数据开始入湖时间和数据入湖结束时间来判断数据时延问题。 同时对于PgSQL任务,配置心跳表可以定期向前推进PgSQL中Slot记录的LSN的信息,避免由于某个任务配置了某部分变化很小的表导致数据库日志积压。
  • 配置从Oracle(ogg)抓取数据到Hudi任务的心跳表 在需要同步数据的Oracle数据库中执行以下命令创建一张心跳表,心跳表归属于CDC_CDL Schema,表名为CDC_HEARTBEAT,主键为CDL_JOB_ID: CREATE TABLE "CDC_CDL"."CDC_HEARTBEAT" ( "CDL_JOB_ID" VARCHAR(22) PRIMARY KEY, "CDL_LAST_HEARTBEAT" TIMESTAMP, SUPPLEMENTAL LOG DATA (ALL) COLUMNS ); 将CDC_HEARTBEAT表加入到Oracle或者ogg的任务中,确保心跳数据可以正常发送到Kafka。 如果是Oracle任务,直接执行4。 在CDL WebUI配置thirdparty-kafka(ogg)连接增加Oracle的连接信息。 配置完成后,在CDL WebUI界面创建从Oracle(ogg)抓取数据到Hudi任务并启动即可收到心跳数据。
  • 配置opengauss到Hudi任务的心跳表 在需要同步的opengauss数据库下执行以下命令创建一张心跳表,心跳表归属cdc_cdl Schema,表名为cdc_heartbeat,主键为cdl_job_id: DROP TABLE IF EXISTS cdc_cdl.cdc_heartbeat; CREATE TABLE cdc_cdl.cdc_heartbeat ( cdl_job_id int8 NOT NULL, cdl_last_heartbeat timestamp(6) ); ALTER TABLE cdc_cdl.cdc_heartbeat ADD CONSTRAINT cdc_heartbeat_pkey PRIMARY KEY (cdl_job_id); 将该心跳表加入到DRS任务,以确保心跳表数据正常发送到DRS Kafka。 在CDL WebUI界面配置opengauss的thirdparty-kafka连接时增加opengauss的连接信息,如果opengauss部署为一主多备模式,需在“host”填写所有的IP。 配置完成之后,在CDL WebUI界面创建从thirdparty-kafka抓取数据到Hudi的任务并启动即可收到心跳数据。
  • 配置从Postgresql抓取数据到Hudi任务的心跳表 在需要同步的Postgresql数据库下执行以下命令创建一张心跳表,心跳表归属cdc_cdl Schema,表名为cdc_heartbeat,主键为cdl_job_id: DROP TABLE IF EXISTS cdc_cdl.cdc_heartbeat; CREATE TABLE cdc_cdl.cdc_heartbeat ( cdl_job_id int8 NOT NULL, cdl_last_heartbeat timestamp(6) ); ALTER TABLE cdc_cdl.cdc_heartbeat ADD CONSTRAINT cdc_heartbeat_pkey PRIMARY KEY (cdl_job_id); 心跳表创建完成后,在CDL WebUI界面创建从Postgresql抓取数据到Hudi的同步任务并启动即可收到心跳数据。
  • 数据判齐消息字段含义 表1 数据判齐消息字段 字段名 描述 cdl_job_name 本批次数据所属同步任务名称 target_table_schema 本批次数据写入Schema名称 target_table_name 本批次数据写入Hudi表名称 target_table_path 本批次数据保存的Hudi表路径 total_num 本批次数据总数 cdl_original_heartbeat 本批次数据中包含的心跳数据的最大时间, 如果本批次不包含心跳数据则值为空 cdl_last_heartbeat 本批次数据中包含的心跳数据的最小时间,如果本批次不包含心跳数据则取“event_time_min”的值 insert_num 本批次数据insert事件总数 update_num 本批次数据update事件总数 delete_num 本批次数据delete事件总数 event_time_min 本批次数据源端最小事务提交时间 event_time_max 本批次数据源端最大事务提交时间 event_time_avg 本批次数据源端平均事务提交时间 kafka_timestamp_min 本批次数据发送到Kafka的最小时间 kafka_timestamp_max 本批次数据发送到Kafka的最大时间 begin_time 本批次数据开始写入Hudi的时间 end_time 本批次数据写入Hudi的结束时间 cdc_partitioned_time 心跳表的时间分区字段 cdc_last_update_date 该条判齐记录写入时间
  • 读取Hudi数据概述 Hudi的读操作,作用于Hudi的三种视图之上,可以根据需求差异选择合适的视图进行查询。 Hudi支持多种查询引擎Spark、Hive、HetuEngine,具体支持矩阵见表1和表2。 表1 cow表 查询引擎 实时视图/读优化视图 增量视图 Hive Y Y Spark(SparkSQL) Y Y Spark(SparkDataSource API) Y Y HetuEngine Y N 表2 mor表 查询引擎 实时视图 增量视图 读优化视图 Hive Y Y Y Spark(SparkSQL) Y Y Y Spark(SparkDataSource API) Y Y Y HetuEngine Y N Y 当前Hudi使用Spark datasource接口读取时,不支持分区推断能力。比如bootstrap表使用datasource接口查询时,可能出现分区字段不显示,或者显示为null的情况。 增量视图,需设置set hoodie.hudicow.consume.mode = INCREMENTAL;,但该参数仅限于增量视图查询,不能用于Hudi表的其他类型查询,和其他表的查询。 恢复配置可设置set hoodie.hudicow.consume.mode = SNAPSHOT;或任意值。 父主题: Hudi读操作
  • 回答 HetuEngine计算实例的启动依赖Python文件,需确保各节点“/usr/bin/”路径下面存在Python文件。 登录FusionInsight Manager,单击“主机”,查看并记录所有主机的业务IP。 以root用户登录1记录的节点,在所有节点都执行以下命令,在“/usr/bin/”目录下添加“python3”的软连接。 cd /usr/bin ln -s python3 python 重新启动HetuEngine计算实例。
  • 配置参数 在Spark客户端的“spark-defaults.conf”配置文件中进行设置。 参数 说明 默认值 spark.executor.execute.shutdown.cleaner 配置为true后,支持executor退出时执行自定义代码。 false spark.executor.execute.shutdown.cleaner.max.timeout executor执行自定义代码的超时时间。 240s
  • HetuEngine智能物化视图概述 基于智能物化视图,HetuEngine可以提供智能预计算与缓存加速能力。HetuEngine QAS角色能够自动提取历史SQL语句进行分析学习,基于收益最大化原则自动生成高价值物化视图的候选SQL。在实际运用中,HetuEngine管理员可选择通过配置“维护实例”等,开启物化视图的自动创建与自动刷新功能。业务用户可以通过配置客户端Session来获得基于自动创建的物化视图的自动改写与提速。 该能力可以极大降低用户使用物化视图功能的使用难度,带来业务无感知的分析加速效果。HetuEngine管理员通过付出少量的计算资源和存储空间,可实现对高频SQL业务的智能加速。同时,该能力可以降低数据平台的整体负载(CPU、内存、IO等),有助于提升系统稳定性。 智能物化视图包括以下几个功能: 自动推荐物化视图 自动创建物化视图 自动刷新物化视图 自动删除物化视图
  • HetuEngine智能物化视图应用流程 图1 HetuEngine智能物化视图应用流程 表1 HetuEngine智能物化视图应用流程说明 阶段 说明 参考章节 开启物化视图推荐功能 开启物化视图推荐功能之后,QAS实例会根据用户的SQL执行记录自动推荐高价值的物化视图SQL,推荐的物化视图语句可在HSConsole界面的物化视图推荐页面查看,可参考查看物化视图推荐结果。 开启物化视图推荐功能 设置维护实例 设置计算实例为维护实例之后,维护实例会对物化视图推荐功能所推荐的物化视图SQL进行自动创建、刷新、删除等操作,所产生的自动化任务记录可在HetuEngine自动化任务页面查看,可参考查看HetuEngine物化视图自动化任务。 配置HetuEngine维护实例 启用物化视图改写能力 开启物化视图改写能力之后,HetuEngine会根据用户输入的SQL语句判断是否满足物化视图改写,将能匹配到物化视图的查询或者子查询转换为物化视图,避免了数据的重复计算。 配置HetuEngine物化视图改写能力
  • 为已有的租户关联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逻辑集群的权限。
  • 创建ClickHouse租户 登录FusionInsight Manager,单击“租户资源”。 单击,打开添加租户的配置页面,参见表1为租户配置属性。 表1 租户参数一览 参数名 描述 集群 选择要创建租户的集群。 名称 指定当前租户的名称,长度为3~50个字符,可包含数字、字母或下划线(_)。 根据业务需求规划租户的名称,不得与当前集群中已有的角色、HDFS目录或者Yarn队列重名。 租户资源类型 选择“叶子租户资源” 说明: 创建ClickHouse租户,租户资源类型只能选择“叶子租户”。 计算资源 为当前租户选择动态计算资源。 选择“Yarn”时,系统自动在Yarn中以租户名称创建任务队列。 不选择“Yarn”时,系统不会自动创建任务队列。 配置模式 计算资源参数配置模式。 选择“基础”时,只需配置“默认资源池容量 (%)”参数即可。 选择“高级”时,可手动配置资源分配权重,租户的最小/最大/预留资源。 默认资源池容量 (%) 配置当前租户在默认资源池中使用的计算资源百分比,取值范围0~100%。 权重 资源分配权重,取值范围从0到100。 最小资源 保证租户资源能获得的资源(有抢占支持)。取值可以是父租户资源的百分比或绝对值。当租户资源作业量比较少时,资源会自动借给其他租户资源,当租户资源能使用的资源不满足最小资源时,可以通过抢占来要回之前借出的资源。 最大资源 租户资源最多能使用的资源,租户资源不能得到比最大资源设定更多的资源。取值可以是父租户资源的百分比或绝对值。 预留资源 租户资源预留资源。即使租户资源内没有作业,预留的资源也不能给别的租户资源使用。取值可以是父租户资源的百分比或绝对值。 存储资源 为当前租户选择存储资源。 选择“HDFS”时,系统将分配存储资源。 不选择“HDFS”时,系统不会分配存储资源。 文件\目录数上限 配置文件和目录数量配额。 存储空间配额 配置当前租户使用的HDFS存储空间配额。 取值范围:当存储空间配额单位设置为MB时,范围为1~8796093022208。当存储空间配额单位设置为GB时,范围为1~8589934592。 此参数值表示租户可使用的HDFS存储空间上限,不代表一定使用了这么多空间。 如果参数值大于HDFS物理磁盘大小,实际最多使用全部的HDFS物理磁盘空间。 存储路径 配置租户在HDFS中的存储目录。 系统默认将自动在“/tenant”目录中以租户名称创建文件夹。例如租户“ta1”,默认HDFS存储目录为“/tenant/ta1”。 第一次创建租户时,系统自动在HDFS根目录创建“/tenant”目录。支持自定义存储路径。 服务 “服务”选择“ClickHouse”。 “关联类型”:当“服务”选择“ClickHouse”时,“关联类型”只支持“共享”。 “关联逻辑集群”:如果ClickHouse没有开启逻辑集群,则默认关联default_cluster,如果已经开启逻辑集群,则按需选择需要关联的逻辑集群。 “CPU优先级”:CPU优先级取值范围为-20~19,该值关联OS的NICE值,取值越小,CPU优先级越高。如需开启CPU优先级请参考开启ClickHouse租户CPU优先级配置。 “内存”:内存限制为百分比,如该值设置为80,则当前租户可使用的内存总额为:服务可使用内存 * 80%。 描述 配置当前租户的描述信息。 单击“确定”,等待界面提示租户创建成功。 ClickHouse租户创建完成后,可以在“租户资源”中查看并修改租户资源。 在FusionInsight Manager页面,选择“租户资源”,在租户列表中选中需要查看的ClickHouse租户,查看租户概述和资源配额。 选择“资源”,单击“资源详情”后的,对租户资源进行修改。 修改完成后,单击“确定”,返回“资源”页面,展示修改后的资源详情。 修改ClickHouse租户资源配额后,需要重新登录ClickHouse客户端才能生效。
  • 参数描述 表1 参数描述 参数 描述 table_name 需要清理无效数据文件的Hudi表的表名,必选。 op_type 命令运行模式,可选,默认值为dry_run,取值:dry_run、repair、undo、query。 dry_run:显示需要清理的无效数据文件。 repair:显示并清理无效的数据文件。 undo:恢复已清理的数据文件。 query:显示已执行清零操作的备份目录。 backup_path 运行模式为undo时有效,需要恢复数据文件的备份目录,必选。 start_time 运行模式为dry_run、repair时有效,产生无效数据文件的开始时间,可选,默认不限制开始时间。 end_time 运行模式为dry_run、repair时有效,产生无效数据文件的结束时间,可选,默认不限制结束时间。
  • 回答 这种情况是由于磁盘存在IO错误,处理方法如下: 方法一:登录FusionInsight Manager页面,检查Manager界面上是否磁盘IO异常的告警,如果有,可参考对应的告警帮助文档,通过更换硬盘恢复。 方法二:登录FusionInsight Manager页面,重启ClickHouse实例,恢复磁盘状态。 此时磁盘未更换,有IO错误发生时,磁盘状态还会被置为fault或者abnormal。
  • 前提条件 准备Hive UDF Jar包, 从CDL的安装目录复制“${BIGDATA_HOME}/FusionInsight_CDL_*/install/FusionInsight-CDL-*/cdl/hive-checksum/cdl-dc-hive-checksum-*.jar”UDF Jar到Hive的“${BIGDATA_HOME}/third_lib/Hive”目录下,并设置该Jar包的权限为大于或等于750。 开启Kerberos认证的集群需已创建具有CDL管理操作权限的用户。如果当前集群开启了Ranger鉴权,还需参考添加Hive的Ranger访问权限策略章节授予用户Hive管理员权限和UDF操作权限。 使用具有Hive管理员权限的用户在Hive客户端创建全局的UDF算法: 创建CheckSum函数(在default数据库下执行): create function checksum_aggregate as 'com.huawei.hive.checksum.ChecksumUdaf' 创建比较任务之前一定要存在CDL同步任务,比较任务会在启动前感知同步任务的状态和数据同步情况来决定对哪些数据做比较。 数据比对关联的数据同步任务中的数据库用户需要对当前Schema具有create function权限。
  • 操作场景 数据比对即是对源端数据库中的数据和目标端Hive中的数据作数据一致性校验,如果数据不一致,CDL可以尝试修复不一致的数据。 当前数据对比任务支持手动全量任务比对。数据比对任务采用On Yarn的运行形态,比对结果会上传到HDFS目录。 数据比对目前仅支持基本数据类型比对, 不支持日期、时间戳、decimal、numeric、json等特殊数据类型的比对。 数据比对任务不支持数据表字段名包含数据库关键字的表进行数据比对。 数据比对任务单表比较仅支持100个以内的字段进行比较, 如果单表的字段超过一百, 可以分两次指定不同的比较字段的白名单进行数据比对。 当前只支持对从PgSQL抓取到Hudi的数据进行比对,如果“比较结果”为“不一致”,不一致的数据需小于或等于2000行才会生成报告地址;如果不一致的数据大于2000行,则不会生成报告地址,并且不支持修复数据。 参与比对的CDL任务kafka lag不为0时会导致比对结果不一致。
  • 容量规格 ConfigNode容量规格 当创建新的存储组时,IoTDB默认为该存储组分配10000个槽位,数据写入时根据写入的设备名和时间值,分配或创建一个data region并挂载在某个槽位上。所以ConfigNode的内存容量占用跟存储组个数和该存储组持续写入的时间相关。 槽位分配相关对象 对象大小(字节) TTimePartitionSlot 4 TSeriesPartitionSlot 8 TConsensusGroupId 4 根据上表计算可得一个ConfigNode,如果创建一个存储组,持续运行10年,大约需要0.68G内存 : 10000(槽位) * 10(年)* 53 (分区) * (TTimePartitionSlot size + TSeriesPartitionSlot size + TConsensusGroupId size)= 0.68G IoTDBServer容量规格 IoTDB中数据以region分配在IoTDBServer上,region副本数默认是“3”,最终在IoTDBServer文件系统上表现为3个文件。上限为操作系统可存储文件个数最大值,对于Linux系统即是inode个数。
  • IoTDB支持的数据类型和编码 IoTDB支持如下几种数据类型和编码方式,参见表1。 表1 IoTDB支持的数据类型和编码 类型 说明 支持的编码 BOOLEAN 布尔值 PLAIN、RLE INT32 整型 PLAIN、RLE、TS_2DIFF、GORILLA、FREQ、ZIGZAG INT64 长整型 PLAIN、RLE、TS_2DIFF、GORILLA、FREQ、ZIGZAG FLOAT 单精度浮点数 PLAIN、RLE、TS_2DIFF、GORILLA、FREQ DOUBLE 双精度浮点数 PLAIN、RLE、TS_2DIFF、GORILLA、FREQ TEXT 字符串 PLAIN、DICTIONARY 父主题: 使用IoTDB
  • 前提条件 集群已安装CDL、Hudi服务且运行正常。 ThirdKafka数据库的Topic需要能被MRS集群消费,操作步骤请参考ThirdPartyKafka前置准备。 在FusionInsight Manager中创建一个人机用户,例如“cdluser”,加入用户组cdladmin、hadoop、kafka、supergroup,主组选择“cdladmin”组,关联角色“System_administrator”。
  • 参数说明 表1 HDFS参数说明 参数 参数说明 默认值 fs.obs.security.provider 指定获取访问OBS文件系统密钥的实现方式。 参数取值: com.huawei.mrs.MrsObsCredentialsProvider:通过MRS云服务委托获取凭证。 com.obs.services.EcsObsCredentialsProvider:通过E CS 云服务获取AK/SK信息。 com.obs.services.BasicObsCredentialsProvider:使用用户传入OBS的AK/SK信息。 com.obs.services.EnvironmentVariableObsCredentialsProvider:从环境变量中读取AK/SK信息。 com.huawei.mrs.MrsObsCredentialsProvider
  • 前提条件 集群已安装CDL、Hudi和ClickHouse服务且运行正常。 用户需要有操作ClickHouse的权限,相关操作请参见创建ClickHouse角色。 在FusionInsight Manager中创建一个人机用户,例如“cdluser”,该用户需具有ClickHouse管理员权限(相关操作请参见创建ClickHouse角色),并加入用户组cdladmin、hadoop、kafka、supergroup,主组选择“cdladmin”组,关联角色“System_administrator”。 手动创建ClickHouse侧的本地表和分布式表, 本地表使用ReplicatedReplacingMergeTree引擎,详细操作请参见ClickHouse客户端使用实践章节。
  • 前提条件 集群已安装CDL、Hudi服务且运行正常。 PgSQL数据库需要开启前置要求,操作步骤请参考PostgreSQL数据库修改预写日志的策略。 在FusionInsight Manager中创建一个人机用户,例如“cdluser”,加入用户组cdladmin、hadoop、kafka、supergroup,主组选择“cdladmin”组,关联角色“System_administrator”。
  • 操作步骤 以Hive客户端安装用户登录源端集群安装客户端的节点。 执行以下命令,切换到客户端安装目录,例如安装目录为“/opt/client”,请用户根据实际情况修改。 cd /opt/client 执行以下命令配置环境变量。 source bigdata_env 如果集群开启了Kerberos认证,执行以下命令认证用户,否则跳过此步骤。 kinit Hive业务用户 执行以下命令登录Hive客户端。 beeline 执行以下命令创建数据库“dump_db”。 create database dump_db; 执行以下命令切换到“dump_db”数据库。 use dump_db; 执行以下命令在“dump_db”中创建表“test”。 create table test(id int); 执行以下命令向表“test”中插入数据。 insert into test values(123); 执行以下命令将数据库“dump_db”设置为复制策略的源。 alter database dump_db set dbproperties ('repl.source.for'='replpolicy1'); 执行alter命令修改数据库属性时,用户需要对该数据库拥有对应权限。权限设置方式如下: 集群未启用Ranger鉴权,需登录FusionInsight Manager授予该用户所属角色管理员权限,详细操作请参考创建Hive角色章节。 集群启用了Ranger鉴权,需参考添加Hive的Ranger访问权限策略章节授予用户对应数据库的Repl Dump/Load操作权限。 删除设置了复制策略源的数据库时,需要先将该数据库的复制策略源设置为空,再对数据库执行删除操作,否则无法删除。将数据库复制策略源设置为空的命令如下: alter database dump_db set dbproperties ('repl.source.for'=''); 执行以下命令将“dump_db”导出到目标集群的“/user/hive/test”目录下。 repl dump dump_db with ('hive.repl.rootdir'='hdfs://haclusterX/user/hive/test'); “haclusterX”为新增的自定义参数“dfs.namenode.rpc-address.haclusterX”中的“haclusterX”。 指定导出目录时需要确保当前用户对该目录拥有读写权限。 以Hive客户端安装用户登录目标集群安装客户端的节点,并执行2-5。 执行以下命令将“/user/hive/test”目录下的“dump_db”数据库的数据导入到“load_db”数据库中。 repl load load_db from '/user/hive/repl'; 通过repl load导入数据库,指定数据库名称时需要注意以下情况: 指定的数据库不存在,在导入的过程中会创建对应的数据库; 指定的数据库已存在,且该数据库的“hive.repl.ckpt.key”属性值与导入的路径一致,则跳过导入操作。 指定的数据库已存在,但是该数据库下不存在任何表和functions,导入的过程中只将源数据库下的表导入到当前数据库中;如果该数据库下存在表或functions会导入失败。
  • 操作步骤 以Hive客户端安装用户登录源端集群安装客户端的节点。 执行以下命令,切换到客户端安装目录,例如安装目录为“/opt/client”,请用户根据实际情况修改。 cd /opt/client 执行以下命令配置环境变量。 source bigdata_env 如果集群开启了Kerberos认证,执行以下命令认证用户,否则跳过此步骤。 kinit Hive业务用户 执行以下命令登录源端集群的Hive客户端。 beeline 执行以下命令创建表“export_test”。 create table export_test(id int) ; 执行以下命令向表“export_test”中插入数据。 insert into export_test values(123); 在目标集群重复执行1-4,并执行以下命令创建存放表“export_test”导出后的HDFS路径。 dfs -mkdir /tmp/export 执行以下命令登录目标集群的Hive客户端。 beeline 导入导出表“export_test”。 使用Hive Import/Export对表数据迁移时,支持以下几种场景,可以根据实际情况选择合适的导入导出方式。 场景一:简单导出导入 在源端集群执行以下命令将表“export_test”的元数据和业务数据导出到8创建的目录下。 export table export_test to 'hdfs://haclusterX/tmp/export'; 在目标集群执行以下命令将10.a导出的表数据导入到表“export_test”中。 import from '/tmp/export'; 场景二 :在导入时重命名表 在源端集群执行以下命令将表“export_test”的元数据和业务数据导出到8创建的目录下。 export table export_test to 'hdfs://haclusterX/tmp/export'; 在目标集群执行以下命令将10.a导出的表数据导入到表“import_test”中。 import table import_test from '/tmp/export'; 场景三:导出分区数据并导入 在源端集群执行以下命令将表“export_test”的pt1和pt2分区导出到8创建的目录下。 export table export_test partition (pt1="in", pt2="ka") to 'hdfs://haclusterX/tmp/export'; 在目标集群执行以下命令将10.a导出的表数据导入到表“export_test”中。 import from '/tmp/export'; 场景四:导出表数据并且将该数据导入到分区中 在源端集群执行以下命令将表“export_test”的元数据和业务数据导出到8创建的目录下。 export table export_test to 'hdfs://haclusterX/tmp/export'; 在目标集群执行以下命令将10.a导出的表数据导入到表“import_test”的pt1和pt2分区中。 import table import_test partition (pt1="us", pt2="tn") from '/tmp/export'; 场景五:导入表数据时指定表的Location 在源端集群执行以下命令将表“export_test”的元数据和业务数据导出到8创建的目录下。 export table export_test to 'hdfs://haclusterX/tmp/export'; 在目标集群执行以下命令将10.a导出的表数据导入到表“import_test”中,且该表的Location为“/tmp/export”。 import table import_test from '/tmp' location '/tmp/export'; 场景六:导入表数据为外部表 在源端集群执行以下命令将表“export_test”的元数据和业务数据导出到8创建的目录下。 export table export_test to 'hdfs://haclusterX/tmp/export'; 在目标集群执行以下命令将10.a导出的表数据导入到外部表“import_test”中。 import external table import_test from '/tmp/export'; 导出表/分区数据时,存放表/分区数据的HDFS路径需提前创建,且该目录为空,否则导出失败。 导出分区时,导出的表必须为分区表,且不支持导出同一个分区字段的多个分区值的数据;导入到表中分区时导入的表必须是分区表。 导入数据时需注意: 使用import from '/tmp/export';命令导入表是没有指定表名的场景,该场景导入的数据会保存到与源表名相同的表路径下,需注意以下两点: 如果目标集群上不存在与源集群上同名的表,在导入表的过程中会创建该表。 如果目标集群上已存在与源集群上同名的表,该表对应的HDFS目录下必须为空,否则导入失败。 使用import external table import_test from '/tmp/export';命令导入表会将导出的表导入到指定的表中,需注意以下两点: 如果目标集群上不存在与指定的表名相同的表,在导入表的过程中会创建该表。 如果目标集群上已存在与指定的表名相同的表,该表对应的HDFS目录下必须为空,否则导入失败。 “haclusterX”为新增的自定义参数“dfs.namenode.rpc-address.haclusterX”中的“haclusterX”
共100000条