作者:
苏昆辉,花名抚月,阿里巴巴计算平台事业部 EMR 高级工程师, Apache HDFS committer. 目前从事开源大数据存储和优化方面的工作。
点击文末阅读原文,一键直达超链接
JindoFS 是阿里云E-MapReduce团队开发的基于云上对象存储的文件系统(缓存系统)。JindoFS SDK作为JindoFS的客户端,提供了三大能力:1. 面向Hadoop/Spark生态提供访问OSS对象存储的封装;2. 访问JindoFS OSS缓存加速服务;3. 访问JindoFS块模式文件系统。本文主要介绍如何使用JindoFS SDK来访问OSS对象存储,以及使用它来提升我们操作OSS文件的性能。值得一提的是,此前JindoFS SDK 仅限于E-MapReduce产品内部使用,此次全方位面向整个阿里云OSS用户放开,并提供官方维护和支持技术,欢迎广大用户集成和使用。
大数据和OSS
传统大数据领域,我们经常使用HDFS作为底层存储,然后在上面跑MapReduce、SQL on Hadoop的作业。随着云上大数据技术的发展,以及年代悠久的HDFS越发凸显出来的瓶颈问题,越来越多的用户开始将HDFS的数据迁移到对象存储系统上(比如阿里云OSS)然后直接在OSS上跑MapReduce、SQL作业。同时,客户习惯将机器学习的数据集也放在OSS上,同时进行相关机器学习作业。用户逐步依托OSS搭建他们的数据仓库、数据湖,此时OSS操作的速度将成为影响作业的执行效率的重大因素。
OSS SDK
官方SDK是阿里云OSS团队开发的官方SDK,提供了Bucket管理、文件管理、文件上传下载、版本管理、授权访问、图片处理等API接口。官方SDK提供了Java、Python、C++等版本,它们都是对Restful API的封装。官方SDK提供了对OSS资源全方位管理的接口,这些接口非常全面,也比较底层。
Hadoop-OSS-SDK
Hadoop-OSS-SDK是基于官方SDK(Java版)进行封装,提供了Hadoop FileSystem接口的抽象层。大数据生态的系统如Hive、Spark无法直接使用官方SDK,但是它们可以直接操作FileSystem接口进行OSS文件的读写操作。Hadoop-OSS-SDK是Hadoop大数据生态和OSS之间的粘合剂。FileSystem接口主要关注OSS的文件管理、文件上传下载功能,它对官方SDK的Bucket管理、图片处理等并不关心,它不是官方SDK的一个替代。使用FileSystem接口,用户不需要关心什么时候使用简单上传、什么时候使用分片上传,因为FileSystem接口替用户考虑了这些事情。而如果使用官方SDK就必须考虑这些问题,使用起来比较复杂。
JindoFS SDK
JindoFS SDK是一个简单易用的 JindoFS 客户端,目前主要用在E-Mapreduce集群内,提供JindoFS集群访问能力和操作OSS文件的能力。相比于Hadoop-OSS-SDK做了很多的性能优化。现在,JindoFS SDK对外开放使用,我们可以使用该SDK来获得访问OSS的能力,