Google更新Cloud Storage的Hadoop连接程序,强化栏式数据格式支持

Google发布新版用来连接Cloud Storage的HDFS(Hadoop Distributed File System)连接程序(GCS Connector),这个新版连接程序提供了两个主要的功能更新,第一是支持栏式文件格式以提升数据处理效率,第二个则为协作锁定功能,独立Cloud Storage目录修改,避免可能互相影响的修改受到干扰。

GCS连接程序可在诸如数据节点、Mapper、Reducer或是Spark Executor等Hadoop JVM上运行,让开发者的工作负载能够访问Cloud Storage,这些工作负载包括Hadoop和Spark的任务,以及Hadoop兼容的文件系统CLI,都能使用GCS连接程序,直接对Cloud Storage进行数据读写操作。

GCS连接程序预先为Cloud Dataproc以及GCP托管的Hadoop和Spark进行配置,可简单地安装,并用在其他的Hadoop发布版本中,像是MapR、Cloudera以及Hortonworks,能够简化企业将内部HDFS数据搬迁到云计算的工作。这个由GCP支持的GCS连接程序完全开源,Google在与推特工程团队合作后,使其设计与实例更能应对PB级规模。

新版GCS连接程序的第一个重要更新,是改进了处理Parquet和ORC等栏式文件格式的性能。Google提到,由于推特在2018年的时候将Hadoop工作负载搬迁到Google云计算上,并且大规模地对20 PB以栏式文件格式存储的数据,进行大数据SQL查询测试,而推特为让GCS连接程序符合自家高性能的需求,对该项目做出贡献,让连接程序能支持只读取查询引擎需要的数据栏,进而提升读取效率。

而Google进一步优化这项改进,使其支持fadvise功能。过去Cloud Storage连接程序对MapReduce类型的工作负载进行了优化,其数据文件的处理都是按顺序处理,Google表示,由于栏式文件格式如Parquet或ORC,其主要目标都是让查询引擎能聪明地仅查询需要的文件区块。而在Google为GCS连接程序实例了类似Linux中的fadvise功能,让应用程序可以为核心提供I/O访问模式的提示,以完成谓词下推(Predicate Pushdown)的功能。

另一个新版GCS连接程序的功能便是协作锁定(Cooperative Locking),该功能可以独立Hadoop文件系统壳层以及其他HCFS API接口的目录修改操作。Google提到,虽然Cloud Storage上的对象层级非常一致,但本身却没有原生支持目录语义,系统应该定义像是当两个用户对同一个目录发出冲突的命令时,所需要进行的行为。

Google与推特Hadoop团队合作,在GCS连接程序中实例了协同锁定,这项功能可以避免Cloud Storage的目录操作冲突所发生数据不一致,并有助于目录操作失败的恢复工作,同时也使得从HDFS的操作转换成Cloud Storage更简单。