Apache HDFS透明缓存加速

Apache HDFS透明缓存加速可以利用计算集群的闲置存储资源对远端HDFS集群进行数据缓存,避免了计算集群或服务占用核心集群过多带宽。当HDFS集群和计算集群分离,HDFS集群访问性能不及预期时,您可以通过在计算集群或靠近计算集群的地方缓存数据来进行加速。

前提条件

已在E-MapReduce上创建EMR-3.42.0及后续版本、EMR-5.6.0及后续版本的集群,且选择JINDODATA服务,详情请参见创建集群

操作流程

  1. 步骤一:配置服务端

  2. 步骤二:配置JindoSDK

  3. 步骤三:磁盘空间水位控制

  4. 步骤四:访问HDFS

步骤一:配置服务端

  1. 进入JindoData服务的common页签。

    1. 登录EMR on ECS

    2. 在顶部菜单栏处,根据实际情况选择地域和资源组

    3. 集群管理页面,单击目标集群操作列的集群服务

    4. 单击JindoData服务区域的配置

    5. 单击common页签。

  2. 新增配置。

    1. 单击自定义配置

    2. 新增配置项对话框中,新增以下配置项。

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

      集群类型

      参数

      描述

      普通集群

      jindofsx.hdfs.user

      访问HDFS使用的用户名,例如hadoop。

      HA集群

      jindofsx.hdfs.XXX.dfs.ha.namenodes

      表示hdfs-site.xml中dfs.ha.namenodes.XXX的值。例如:nn1、nn2、nn3。

      jindofsx.hdfs.XXX.dfs.namenode.rpc-address.nn1

      表示hdfs-site.xml中dfs.namenode.rpc-address.XXX.nn1的值。例如:master-1-1:8020。

      jindofsx.hdfs.XXX.dfs.namenode.rpc-address.nn2

      表示hdfs-site.xml中dfs.namenode.rpc-address.XXX.nn2的值。例如:master-1-2:8020。

      jindofsx.hdfs.XXX.dfs.namenode.rpc-address.nn3

      表示hdfs-site.xml中dfs.namenode.rpc-address.XXX.nn3的值。例如:master-1-3:8020。

      说明

      请根据您集群的类型,新增相应的配置项。XXX为集群中配置hdfs-site.xml的dfs.nameservices参数值,例如hdfs-cluster

    3. 单击确定

    4. 在弹出的对话框中,输入执行原因,单击确定

  3. 重启服务。
    1. 在JindoData服务页面,选择更多操作 > 重启
    2. 在弹出的对话框中,输入执行原因,单击确定
    3. 确认对话框中,单击确定

步骤二:配置JindoSDK

重要 此配置为客户端配置,无需重启JindoData服务。
  1. 进入配置页面。

    1. 登录EMR on ECS
    2. 在顶部菜单栏处,根据实际情况选择地域和资源组
    3. 集群管理页面,单击目标集群右侧操作列的集群服务
    4. 单击Hadoop-Common服务区域的配置
    5. 单击core-site.xml页签。
  2. 新增和修改以下配置项。

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

    内容

    属性

    参数

    描述

    配置统一名字空间使用的实现类

    必选

    fs.hdfs.impl

    固定值为com.aliyun.jindodata.hdfs.JindoHdfsFileSystem

    必选

    fs.AbstractFileSystem.hdfs.impl

    固定值为com.aliyun.jindodata.hdfs.HDFS

    配置xengine类型

    必选

    fs.xengine

    固定值为jindofsx

    配置JindoFSx Namespace服务地址

    必选

    fs.jindofsx.namespace.rpc.address

    格式为${headerhost}:8101。例如,master-1-1:8101。

    说明 如果使用高可用NameSpace,配置详情请参见高可用JindoFSx Namespace配置和使用

    开启缓存加速功能

    必选

    fs.jindofsx.data.cache.enable

    数据缓存开关:

    • false(默认值):禁用数据缓存。

    • true:启用数据缓存。

    配置HA Namenodes

    说明

    如果为HA集群,则需要配置该类参数。

    可选

    fs.jindofsx.hdfs.XXX.dfs.ha.namenodes

    表示hdfs-site.xml中dfs.ha.namenodes.XXX的值。例如:nn1、nn2、nn3。

    可选

    fs.jindofsx.hdfs.XXX.dfs.namenode.rpc-address.nn1

    表示hdfs-site.xml中dfs.namenode.rpc-address.XXX.nn1的值。例如:master-1-1:8020。

    可选

    fs.jindofsx.hdfs.XXX.dfs.namenode.rpc-address.nn2

    表示hdfs-site.xml中dfs.namenode.rpc-address.XXX.nn2的值。例如:master-1-2:8020。

    可选

    fs.jindofsx.hdfs.XXX.dfs.namenode.rpc-address.nn3

    表示hdfs-site.xml中dfs.namenode.rpc-address.XXX.nn3的值。例如:master-1-3:8020。

    开启元数据缓存功能

    可选

    fs.jindofsx.meta.cache.enable

    元数据缓存开关:

    • false(默认值):禁用元数据缓存。

    • true:启用元数据缓存。

    开启小文件优化缓存功能

    可选

    fs.jindofsx.slice.cache.enable

    小文件缓存优化开关:

    • false(默认值):禁用小文件缓存。

    • true:启用小文件缓存。

    开启短路读功能

    可选

    fs.jindofsx.short.circuit.enable

    短路读开关:

    • true(默认值):打开短路读开关。

    • false:关闭短路读开关。

  3. 保存配置。

    1. 单击服务配置区域的保存

    2. 确认修改对话框中,输入执行原因,开启自动更新配置,单击确定

步骤三:磁盘空间水位控制

缓存启用后,JindoFSx服务会自动管理本地缓存备份,通过水位清理本地缓存,请您根据需求配置一定的比例用于缓存。JindoFSx后端基于HDFS,可以提供海量的存储,但是本地盘的容量是有限的,因此JindoFSx会自动淘汰本地较冷的数据备份。您可以通过修改storage.watermark.high.ratiostorage.watermark.low.ratio两个参数来调节本地存储的使用容量,取值范围为0~1,表示使用磁盘空间的比例。

  1. 修改磁盘水位配置。

    在JindoData服务的配置页签内的storage页签,修改以下参数。jindodata_radio

    参数

    描述

    storage.watermark.low.ratio

    表示使用量的下水位比例,触发清理后会自动清理冷数据,将缓存数据目录占用空间清理到下水位。默认值:0.2。

    storage.watermark.high.ratio

    表示磁盘使用量的上水位比例,每块数据盘的缓存数据目录占用的磁盘空间到达上水位即会触发清理。默认值:0.4。如果需要比较高的磁盘利用率可以设置较大值。

    说明

    修改该参数时,下水位比例必须小于上水位比例,设置合理的值即可。

  2. 保存配置。

    1. 单击下方的保存

    2. 在弹出的对话框中,输入执行原因,单击确定

  3. 重启服务。

    1. 在JindoData服务页面,选择右上角的更多操作 > 重启

    2. 弹出的对话框中,输入执行原因,其他参数保持默认,单击确定

    3. 确认对话框中,单击确定

步骤四:访问HDFS

您通过hdfs://前缀读取HDFS上的数据后,在数据缓存开关打开时,会自动缓存到JindoFSx存储加速系统中,后续通过hdfs://访问相同的数据就能够命中缓存。