HudiAdminCLI使⽤指南————附带详细步骤
⽂章⽬录
Hudi Admin CLI使⽤指南
0 常见问题
0.1 常⽤指标
为Hudi Client配置正确的数据集名称和指标环境后,它将⽣成以下graphite指标,以帮助调试hudi数据集
提交持续时间 - 这是成功提交⼀批记录所花费的时间
回滚持续时间 - 同样,撤消失败的提交所剩余的部分数据所花费的时间(每次写⼊失败后都会⾃动发⽣)
⽂件级别指标 - 显⽰每次提交中新增、版本、删除(清除)的⽂件数量
记录级别指标 - 每次提交插⼊/更新的记录总数
分区级别指标 - 更新的分区数量(对于了解提交持续时间的突然峰值⾮常有⽤)
runinto
然后可以将这些指标绘制在grafana等标准⼯具上。
0.2 故障排除
以下部分通常有助于调试Hudi故障。以下元数据已被添加到每条记录中,可以通过标准Hadoop SQL引擎(Hive/Presto/Spark)检索,来更容易地诊断问题的严重性。
_hoodie_record_key - 作为每个DFS分区内的主键,是所有更新/插⼊的基础
_hoodie_commit_time - 该记录上次的提交
_hoodie_file_name - 包含记录的实际⽂件名(对检查重复⾮常有⽤)
_hoodie_partition_path - baPath的路径,该路径标识包含此记录的分区
请注意,到⽬前为⽌,Hudi假定应⽤程序为给定的recordKey传递相同的确定性分区路径。即仅在每个分区内保证recordKey(主键)的唯⼀性。
0.2.1 缺失记录
请在可能写⼊记录的窗⼝中,使⽤上⾯的admin命令检查是否存在任何写⼊错误。 如果确实发现错误,
那么记录实际上不是由Hudi写⼊的,⽽是交还给应⽤程序来决定如何处理。
0.2.2 重复
⾸先,请确保访问Hudi数据集的查询是没有问题的,并之后确认的确有重复。
如果确认,请使⽤上⾯的元数据字段来标识包含记录的物理⽂件和分区⽂件。
如果重复的记录存在于不同分区路径下的⽂件,则意味着您的应⽤程序正在为同⼀recordKey⽣成不同的分区路径,请修复您的应⽤程序.如果重复的记录存在于同⼀分区路径下的多个⽂件,请使⽤邮件列表汇报这个问题。这不应该发⽣。您可以使⽤records deduplicate命令修复数据。
0.2.3 Spark故障
典型的uprt() DAG如下所⽰。请注意,Hudi客户端会缓存中间的RDD,以智能地并调整⽂件⼤⼩和Spark并⾏度。 另外,由于还显⽰了探针作业,Spark UI显⽰了两次sortByKey,但它只是⼀个排序。
云南翻译公司概括地说,有两个步骤
索引查找以标识要更改的⽂件:
Job 1 : 触发输⼊数据读取,转换为HoodieRecord对象,然后根据输⼊记录拿到⽬标分区路径。
lake natron
Job 2 : 加载我们需要检查的⽂件名集。
Job 3 & 4 : 通过联合上⾯1和2中的RDD,智能调整spark join并⾏度,然后进⾏实际查找。
Job 5 : ⽣成带有位置的recordKeys作为标记的RDD。
执⾏数据的实际写⼊
执⾏实际的数据写⼊:
Job 6 : 将记录与recordKey(位置)进⾏懒惰连接,以提供最终的HoodieRecord集,现在它包含每条记录的⽂件/分区路径信息(如果插⼊,则为null)。然后还要再次分析⼯作负载以确定⽂件的⼤⼩。
nit
Job 7 : 实际写⼊数据(更新 + 插⼊ + 插⼊转为更新以保持⽂件⼤⼩)
根据异常源(Hudi/Spark),上述关于DAG的信息可⽤于查明实际问题。最常遇到的故障是由YARN/DFS临时故障引起的。
1 开始使⽤
$ cd /usr/app/hudi-0.8.0/misfit
$ cd hudi-cli && ./hudi-cli.sh
建⽴与Hudi数据集的联建:
connect --path /ur/hive/warehou/test_increment_hudi5_mor
其中/ur/hive/warehou/test_increment_hudi4_mor为HDFS的⽂件基路径。
2 查看hudi表信息
desc
3 显⽰所有可⽤指令help
所有可⽤指令:
* bootstrap index showmapping - Show bootstrap index mapping
* bootstrap index showpartitions - Show bootstrap indexed partitions
* bootstrap run - Run a bootstrap action for current Hudi table
* clean showpartitions - Show partition level details of a clean
* cleans refresh - Refresh table metadata
* cleans run - run cleanconveyer
* cleans show - Show the cleans
* clear - Clears the console
* cls - Clears the console
* commit rollback - Rollback a commit
* commits compare - Compare commits with another Hoodie table
* commit show_write_stats - Show write stats of a commit
* commit showfiles - Show file level details of a commit
extend* commit showpartitions - Show partition level details of a commit
* commits refresh - Refresh table metadata
* commits show - Show the commits
* commits showarchived - Show the archived commits
* commits sync - Compare commits with another Hoodie table
* compaction repair - Renames the files to make them consistent with the timeline as dictated by Hoodie metadata. U when compaction unschedule fails partially.
* compaction run - Run Compaction for given instant time
pitch black
* compaction schedule - Schedule Compaction
* compaction show - Shows compaction details for a specific compaction instant
* compaction showarchived - Shows compaction details for a specific compaction instant
* compactions show all - Shows all compactions that are in active timeline
* compactions showarchived - Shows compaction details for specified time window
* compaction unschedule - Unschedule Compaction
* compaction unscheduleFileId - UnSchedule Compaction for a fileId
* compaction validate - Validate Compaction
* connect - Connect to a hoodie table
* create - Create a hoodie table if not prent
* date - Displays the local date and time
* desc - Describe Hoodie Table properties
lesbians* exit - Exits the shell
* export instants - Export Instants and their metadata from the Timeline
* hdfsparquetimport - Imports Parquet table to a hoodie table
4 查看提交
4.1 检查提交
提交:更新或插⼊⼀批记录的任务。
提交可提供基本的原⼦性保证,即只有提交的数据可⽤于查询。 每个提交都有⼀个单调递增的字符串/数字,称为提交编号。通常,这是我们开始提交的时间。
愿数据库表(6次变动):
auditor
commits show --sortBy "Total Bytes Written" --desc true --limit 10
Hudi shell:
kafak Tool:
使⽤hadoop指令查询HDFS⽂件:
hadoop fs -ls /ur/hive/warehou/test_increment_hudi5_mor/2021/07/29/