本文以JindoCache支持阿里云OSS-HDFS透明缓存加速的使用方式为例,利用集群本身的存储资源缓存OSS-HDFS文件,以加速作业对OSS-HDFS的访问。
前提条件
已创建集群,且选择了JindoCache服务,创建集群操作请参见创建集群。
已开通并授权访问OSS-HDFS服务,详情请参见开通并授权访问OSS-HDFS服务。
操作步骤
选择缓存策略。
JindoCache使用CacheSet来管理不同的缓存策略,您可以根据实际需求为不同的路径选择不同的缓存策略,并支持一个或多个CacheSet。
登录集群,详情请参见登录集群。
新增
cacheset.xml
文件。本文示例中的
cacheset.xml
文件位于/path
目录下。<?xml version="1.0" encoding="UTF-8"?> <cachesets> <cacheset> <name>name1</name> <path>oss://emr-test/dir1</path> <cacheStrategy>DISTRIBUTED</cacheStrategy> <metaPolicy> <type>ALWAYS</type> </metaPolicy> <readPolicy>CACHE_ASIDE</readPolicy> <writePolicy>WRITE_AROUND</writePolicy> </cacheset> <cacheset> <name>name2</name> <path>oss://emr-test/dir2</path> <cacheStrategy>DHT</cacheStrategy> <metaPolicy> <type>ONCE</type> </metaPolicy> <readPolicy>CACHE_ASIDE</readPolicy> <writePolicy>WRITE_AROUND</writePolicy> </cacheset> </cachesets>
参数
说明
示例
name
CacheSet策略的名称,必须是唯一的,重复的CacheSet名称会导致覆盖。
name1
path
需要设定策略的父路径,其子路径都会使用该CacheSet的策略。
oss://emr-test/dir1
cacheStrategy
缓存策略,支持DISTRIBUTED和DHT(Distributed Hash Table)两种。其中,DHT适用于小文件场景只读加速策略。
您可以根据需求选择其中一种适合的策略。
DISTRIBUTED
metaPolicy
元数据缓存策略,支持ALWAYS和ONCE两种。
ALWAYS:表示不做元数据缓存,所有元数据操作直接从远端读取。
ONCE:表示进行元数据缓存,元数据除第一次从远端读取后续从本地读取。
您可以根据需求选择其中一种适合的策略。
说明如果cacheStrategy为DHT,则metaPolicy必须为ONCE。
ALWAYS
readPolicy
读文件策略,当前仅支持CACHE_ASIDE,表示优先从缓存中读取。
CACHE_ASIDE
writePolicy
写文件策略。支持
WRITE_AROUND:表示直接写入远端。
CACHE_ONLY:表示写入暂存区。
说明使用CACHE_ONLY策略时必须搭配ONCE使用。
WRITE_THROUGH:表示写入落缓存。
WRITE_AROUND
执行以下命令,刷新到JindoCache缓存系统里。
jindocache -refreshCacheSet -path /path/cacheset.xml
执行成功,返回信息中包含
Successfully refresh cacheset !!!
。JindoCache更多命令使用,请参见JindoCache CLI使用说明。您可以使用listCacheSet命令,查看系统中的CacheSet信息。
jindocache -listCacheSet
配置JindoSDK。
将JindoCache服务OSS-HDFS实现类配置到Hadoop-Common。在EMR控制台Hadoop-Common服务的配置页面的core-site.xml页签,修改相应的配置项。配置项的具体操作,请参见管理配置项。
参数
说明
fs.xengine
固定值为jindocache。
如果将该参数值置空,客户端将不再使用缓存,而是每次与后端直接进行通信。
说明此配置为客户端配置,无需重启JindoCache服务。
完成以上配置后,作业访问OSS-HDFS即可利用缓存功能。JindoCache存储加速系统提供了透明缓存的使用方式,因此作业在访问OSS-HDFS时无需进行任何修改。一旦作业读取了OSS-HDFS上的数据,该数据将自动缓存至JindoCache存储加速系统中。之后,访问相同的数据时能够命中缓存,从而提高读取性能。
常见问题
如何配置OSS-HDFS AccessKey?
JindoCache支持免密访问OSS-HDFS,但如果需跨账户访问OSS-HDFS,则需配置权限,包括AccessKey ID、AccessKey Secret和Endpoint等相关信息。
进入JindoCache服务的common页签。
在顶部菜单栏处,根据实际情况选择地域和资源组。
在集群管理页面,单击目标集群操作列的集群服务。
单击JindoCache服务区域的配置。
单击common页签。
新增配置并生效配置。
单击新增配置项。
在新增配置项对话框中,新增以下配置项。
新增配置项和生效配置的具体操作,请参见管理配置项。
说明YYY
为OSS-HDFS Bucket的名称。参数
说明
jindocache.oss.bucket.YYY.accessKeyId
OSS-HDFS的AccessKey ID。
jindocache.oss.bucket.YYY.accessKeySecret
OSS-HDFS的AccessKey Secret。
jindocache.oss.bucket.YYY.endpoint
OSS-HDFS的Endpoint。例如,cn-hangzhou.oss-dls.aliyuncs.com。
jindocache.oss.bucket.YYY.data.lake.storage.enable
固定值为true。