DLF文件目录与实时计算Flink相结合,可以创建一个基于OSS路径的存储卷,并将其挂载至Linux文件系统上,从而实现更灵活的数据处理流程。通过DLF的文件目录功能,您可以结构化的方式组织和访问存储在OSS中的数据,有效管理数据湖内的资源。无论是手动触发更新还是根据预设的目录更新频率自动检测,DLF都能确保OSS中挂载目录下的所有文件变更(如新增、删除或修改)及时同步至DLF文件目录中。本文为您详细介绍如何将DLF文件目录挂载至EMR集群。
前提条件
已创建Flink全托管工作空间,引擎版本须为VVR 8.0.9及以上,详情请参见开通实时计算Flink版。
已创建与DLF同地域的ECS实例或已创建EMR集群,且需开启挂载公网,详情请参见创建集群。本文以EMR集群为例。
说明如果您未开启该功能,创建后您想使用公网IP地址访问,请在ECS上申请开通公网IP地址,详情请参见弹性公网IP中的申请EIP的内容。
JindoSDK版本需为6.5.6及以上、6.7.8及以上或6.8.0及以上。
步骤一:配置Flink访问OSS的鉴权信息
登录实时计算控制台。
单击目标工作空间操作列的控制台,进入相应工作空间。
单击左侧导航栏的
,进入配置管理页面。在作业默认配置页签,单击批作业。在其他配置中,配置以下信息。
fs.oss.bucket.<your_BucketName>.accessKeyId: <accessKeyId> fs.oss.bucket.<your_BucketName>.accessKeySecret: <accessKeySecret>
参数名称
描述
your_BucketName
OSS Bucket名称。您可在OSS管理控制台上查看。
accessKeyId
AccessKey。创建AccessKey详情请参见创建AccessKey。
accessKeySecret
AccessKey Secret。创建AccessKey Secret详情请参见创建AccessKey。
步骤二:新建并更新文件目录
新建文件目录,详情请参见新建文件目录。
在文件目录页签,单击文件目录名称,进入文件目录概览页。
单击手动触发更新,可对文件目录进行手动更新。
待更新状态为更新完成时,可进行下一步,复制文件路径待后续使用。
说明如果文件目录更新失败,您可进入该文件目录所绑定计算资源的Flink全托管工作空间,在运维中心 > 作业运维中查看批作业运行日志。详情请参见查看启动和运行日志。
(可选)步骤三:RAM用户授权
如果是RAM用户(子账号),需执行以下操作进行授权。
使用阿里云账号登录RAM控制台。
在左侧菜单栏,单击进入角色详情页。
,搜索并单击AliyunECSInstanceForEMRRole角色,在权限管理页签,单击新增授权,权限策略选择AliyunDLFFullAccess,单击确认新增授权。
步骤四:更新JindoSDK版本
如果EMR集群为EMR-5.17.4、EMR-5.18.0及以上版本,可跳过该步骤。
登录EMR集群Master节点,可参考登录集群。
执行以下命令,更新JindoSDK版本。
说明本文以JindoSDK 6.5.6版本,Linux x86平台为例。
切换到emr-user用户,下载并解压jindosdk-patches.tar.gz包到/home/emr-user目录下。
su - emr-user cd /home/emr-user/ wget https://jindodata-binary.oss-cn-shanghai.aliyuncs.com/resources/emr-taihao/jindosdk-patches.tar.gz tar zxf jindosdk-patches.tar.gz
下载JindoSDK软件包至解压后的
jindosdk-patches
目录下。cd jindosdk-patches wget https://jindodata-binary.oss-cn-shanghai.aliyuncs.com/release/6.5.6/jindosdk-6.5.6-linux.tar.gz ls -l
配置升级节点信息。
手动配置
编辑patch包中的hosts文件,添加集群所有节点的HostName,如master-1-1或core-1-1,文件内容以行分割。
vim hosts
例如,本文hosts文件内容如下。
自动填充节点信息
cat /usr/local/taihao-executor-all/data/cache/.cluster_context | jq --raw-output '.nodes[].hostname.alias[]' > hosts
说明如果自动填充节点信息时,HostName获取失败,需手动配置进行补全。
执行升级。例如,升级集群中的JindoSDK至6.5.6版本。
./apply_all.sh 6.5.6
返回如下提示信息,升级完成。
步骤五:挂载文件目录
执行以下命令,切换到root用户,更新配置jindosdk.cfg。
sudo su - cd /etc/taihao-apps/jindosdk-conf/ vim jindosdk.cfg
在jindosdk配置中,修改为dls相关配置。
[common] logger.dir = /var/log/emr/jindosdk logger.level = 2 logger.verbose = 0 logger.sync = true logger.jnilogger = true logger.consolelogger = false logger.cleaner.enable = true [jindosdk] fs.dls.provider.endpoint = ECS_ROLE fs.dls.provider.format = JSON fs.dls.endpoint = dlfnext-vpc.[regionId].aliyuncs.com
参数名称
描述
logger.sync
用于设置日志记录是否为同步模式。取值如下:
false(默认):表示使用异步模式(日志可能被缓冲后再批量写入)。
true:表示开启同步模式(即每条日志都会立即写入目标)。
fs.dls.provider.endpoint
固定取值为:ECS_ROLE
fs.dls.provider.format
固定取值为:JSON
fs.dls.endpoint
DLF VPC网络Endpoint。详情请参见地域及访问域名。
(可选)如果访问的不是本账号所属的OSS Bucket,则需要额外配置对应Bucket的AK/SK。
fs.dls.data.endpoint = oss-cn-[regionId]-internal.aliyuncs.com fs.dls.accessKeyId = <accessKeyId> fs.dls.accessKeySecert = <accessKeySecert>
参数名称
描述
fs.dls.data.endpoint
OSS内网Endpoint。详情请参见OSS地域和访问域名。
fs.dls.accessKeyId
AccessKey。创建AccessKey详情请参见创建AccessKey。
fs.dls.accessKeySecert
AccessKey Secret。创建AccessKey Secret详情请参见创建AccessKey。
创建挂载目录,挂载DLF文件目录。
mkdir -p /mnt/volume jindo-fuse /mnt/volume/ -oauto_unmount -odirect_io -oattr_timeout=0 -oentry_timeout=0 -onegative_timeout=0 -oro -ouri=dls://clg-xxx/volume/vol-xxx/
重要-ouri
后的文件路径,需替换为步骤二中复制的dls文件路径。返回如下提示信息,挂载完成。
步骤六:读取文件
执行以下命令,进入挂载目录后,您可以查看到OSS路径下的文件列表。
cd /mnt/volume/
ll
如果OSS路径指向的是一个空文件夹,则挂载目录中将不会显示任何内容。
返回结果如下图。
可通过cat
命令查看文件内容。
(可选)步骤七:新增文件
登录数据湖构建控制台,进入目标数据目录概览页,单击手动触发更新,更新文件目录,详情请参见步骤二:更新文件目录。
更新完成后,重新读取文件,可看到新增的文件。详情请参见步骤六:读取文件。
常见问题
Q:挂载成功后,进入挂载目录,查询不到挂载的文件,在哪查看日志信息?
A:您可在步骤五jindosdk.cfg中配置的logger.dir
路径下,查看 jindo-fuse.LOG日志文件。