1. lake
  2. 随笔

hudi

简述

hudi,重度依赖spark做了一套table format的设计和文件管理,解决批流存储统一的问题。所有元数据,如果不依赖metastore都是放在文件中(它自身设计了一个简单的metastore在1.0版本,当前主要与hive metastore结合可以做湖仓,虽然不是必须项,用于其它计算引擎的外部表查询)。

文件众多,会有小文件管理问题,所以建议使用至少需要有spark3环境。

构建

Hudi的meta data使用hfile格式,存储文件信息,避免遍历obs的消耗。问题是源码使用2.4.9版本的hbase,默认基于hadoop2.x版本,如果使用hudi-bundle.jar在hadoop3.x环境运行,会报意向不到的一些异常,例如类文件找不到。

Caused by: java.lang.NoSuchMethodError: org.apache.hadoop.hdfs.client.HdfsDataInputStream.getReadStatistics()Lorg/apache/hadoop/hdfs/DFSInputStream$ReadStatistics;

解决办法是自己编译hbase2.4.9,指定hadoop.profile=3,再编译hudi。

注意,hbase有一些坑,windows环境很多命令不支持,不安装相应shell命令的情况下,可以注释无用的一些exec-maven-plugin,主要是用来做校验之类的工作。

mvn clean install -Denforcer.skip -DskipTests -Dhadoop.profile=3.0 -P site-install-step

hudi编译

mvn clean install -P spark3.2,scala-2.12 -DskipTests=true

参考资料:

HUDI-META-HBASE ISSUE

Comments to: hudi

Your email address will not be published. Required fields are marked *