JindoFSx客户端P2P可以被视作一种本地缓存(LocalCache)。与原有的LocalCache相比,P2P缓存中的本地数据块会优先从其他持有该数据的客户端拉取,只有无法向其他客户端请求时,才会从STS或远端读取。本文为您介绍P2P分布式下载缓存的使用方法。

前提条件

操作流程

说明 本文以EMR-3.42.0版本为例介绍。
  1. 步骤一:配置服务端
  2. 步骤二:配置JindoSDK
  3. 步骤三:使用方法

步骤一:配置服务端

  1. 进入JindoData服务的common页签。
    1. 登录EMR on ECS控制台
    2. 在顶部菜单栏处,根据实际情况选择地域和资源组
    3. 集群管理页面,单击目标集群操作列的集群服务
    4. 单击JindoData服务区域的配置
    5. 单击common页签。
  2. 新增配置。
    1. 单击新增配置项
    2. 新增配置项对话框中,新增以下配置项。

      新增配置项的具体操作,请参见添加配置项

      配置项参数描述
      服务端配置jindofsx.p2p.tracker.thread.numberP2P协调节点的处理线程数。通常设置为1,如果客户端数量超过1000可以考虑更大的值。小于1则关闭P2P功能。
      jindofsx.p2p.file.prefix使用P2P下载的前缀列表。当包含多个文件路径时,使用半角逗号(,)隔开,文件路径只有匹配到其中任一个前缀,才会以P2P方式下载。在应用层使用统一挂载路径进行下载时,此处仍应配置为真实的对象路径。 例如,oss://bucket1/data-dir1/,oss://bucket2/data-dir2/
      客户端配置fs.jindofsx.p2p.cache.capacity.limitP2P下载在客户端侧占用的内存缓存大小限制,单位为字节,默认为5 GB,最小值为1 GB。
      fs.jindofsx.p2p.download.parallelism.per.fileP2P下载单个文件使用的并发数。例如,取值为5。
      fs.jindofsx.p2p.download.thread.pool.sizeP2P下载使用的线程池总大小。例如,取值为5。
    3. 单击确定
    4. 在弹出的对话框中,输入执行原因,单击确定
  3. 重启服务。
    1. 在JindoData服务页面,选择更多操作 > 重启
    2. 在弹出的对话框中,输入执行原因,单击确定
    3. 确认对话框中,单击确定

步骤二:配置JindoSDK

重要 此配置为客户端配置,无需重启JindoData服务。
  1. 进入配置页面。
    1. 登录EMR on ECS控制台
    2. 在顶部菜单栏处,根据实际情况选择地域和资源组
    3. 集群管理页面,单击目标集群右侧操作列的集群服务
    4. 单击Hadoop-Common服务区域的配置
    5. 单击core-site.xml页签。
  2. 修改以下配置项。

    新增配置项的具体操作,请参见添加配置项。修改配置项的具体操作,请参见修改配置项

    内容参数描述
    配置OSS实现类fs.AbstractFileSystem.oss.impl固定值为com.aliyun.jindodata.oss.OSS
    fs.oss.impl固定值为com.aliyun.jindodata.oss.JindoOssFileSystem
    配置xengine类型fs.xengine固定值为jindofsx
    配置JindoFSx Namespace服务地址fs.jindofsx.namespace.rpc.address格式为${headerhost}:8101。例如,master-1-1:8101。
    说明 如果使用高可用NameSpace,配置详情请参见高可用JindoFSx Namespace配置和使用
    启用缓存加速功能
    说明 启用缓存会利用本地磁盘对访问的热数据块进行缓存,默认状态为禁用,即可以直接访问OSS/OSS-HDFS上的数据。
    fs.jindofsx.data.cache.enable数据缓存开关:
    • false(默认值):禁用数据缓存。
    • true:启用数据缓存。
  3. 保存配置。
    1. 单击服务配置区域的保存
    2. 确认修改对话框中,输入执行原因,开启自动更新配置,单击确定

步骤三:使用方法

按上述步骤配置之后,根据jindofsx.p2p.file.prefix配置项,所有匹配的读请求都会进入P2P功能,无需调用额外的接口。例如,使用Hadoop shell命令将文件下载到本地,如果文件的路径符合前缀匹配,则会自动启用P2P下载模式。

如果您希望进一步验证对某个特定文件的读请求是否使用了P2P功能,您可以考虑查询日志进行验证。如果您的程序在客户端打印过INFO级别的日志,那么P2P读将产生下列字样的记录:
P2P record for path:

如果您找到了这样的记录,就可以确定对该文件的读请求使用了P2P功能。