OSS-HDFS服务(JindoFS服务)完全兼容HDFS接口,同时支持目录层级的操作。JindoSDK为Apache Hadoop的计算分析应用(例如MapReduce、Hive、Spark、Flink等)提供了访问HDFS服务的能力。本文介绍如何通过在ECS实例中部署JindoSDK,然后完成OSS-HDFS服务快速入门常见操作。
如果您使用的是阿里云EMR集群,请通过EMR集群的方式接入OSS-HDFS服务。具体操作,请参见EMR集群接入OSS-HDFS服务快速入门。
前提条件
阿里云账号默认拥有通过非EMR集群的方式接入OSS-HDFS服务并执行常见操作的权限。如果您希望通过RAM用户接入OSS-HDFS服务,RAM用户需要具备对应的权限要求,详情请参见授权RAM用户通过非EMR集群接入OSS-HDFS服务。
已创建ECS实例。具体步骤,请参见选购ECS实例。
已创建Hadoop环境。具体步骤,请参见创建Hadoop运行环境。
已为Bucket开通并授权访问OSS-HDFS服务。具体操作,请参见开通OSS-HDFS服务。
操作视频
观看以下视频了解如何通过非EMR集群快速接入OSS-HDFS服务并完成常见操作。
操作步骤
连接ECS实例。具体操作,请参见连接ECS实例。
下载并解压JindoSDK JAR包。下载地址,请参见GitHub。
执行以下命令,解压JindoSDK JAR包。
以下以解压
jindosdk-x.x.x-linux.tar.gz
为例,如使用其他版本的JindoSDK,请替换为对应的JAR包名称。tar zxvf jindosdk-x.x.x-linux.tar.gz
说明x.x.x表示JindoSDK JAR包版本号。
配置环境变量。
配置
JINDOSDK_HOME
。以安装包内容解压在/usr/lib/jindosdk-x.x.x-linux目录为例:
export JINDOSDK_HOME=/usr/lib/jindosdk-x.x.x-linux
配置
HADOOP_CLASSPATH
。export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:${JINDOSDK_HOME}/lib/*
重要请将安装目录和环境变量部署到所有所需节点上。
配置OSS-HDFS服务实现类及AccessKey。
执行以下命令,进入Hadoop的core-site.xml配置文件。
vim /usr/local/hadoop/etc/hadoop/core-site.xml
在Hadoop的core-site.xml中,配置JindoSDK DLS实现类。
<configuration> <property> <name>fs.AbstractFileSystem.oss.impl</name> <value>com.aliyun.jindodata.oss.JindoOSS</value> </property> <property> <name>fs.oss.impl</name> <value>com.aliyun.jindodata.oss.JindoOssFileSystem</value> </property> </configuration>
在Hadoop的core-site.xml文件中,配置阿里云账号的访问密钥,或者满足权限要求的RAM用户的访问密钥。
关于RAM用户在该场景下需要满足的权限说明,请参见授权RAM用户通过非EMR集群接入OSS-HDFS服务。
<configuration> <property> <name>fs.oss.accessKeyId</name> <value>xxx</value> </property> <property> <name>fs.oss.accessKeySecret</name> <value>xxx</value> </property> </configuration>
配置OSS-HDFS服务Endpoint。
使用OSS-HDFS服务访问OSS Bucket时需要配置Endpoint。推荐访问路径格式为
oss://<Bucket>.<Endpoint>/<Object>
,例如oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/exampleobject.txt
。配置完成后,JindoSDK会根据访问路径中的Endpoint访问对应的OSS-HDFS服务接口。您还可以通过其他方式配置OSS-HDFS服务Endpoint,且不同方式配置的Endpoint存在生效优先级。更多信息,请参见EMR集群接入OSS-HDFS服务快速入门。
通过HDFS Shell命令完成OSS-HDFS服务常见操作。
上传文件
将本地根目录下的examplefile.txt文件上传至examplebucket,示例如下:
hdfs dfs -put examplefile.txt oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/
下载文件
将examplebucket下的exampleobject.txt下载到本地根目录文件夹/tmp,示例如下:
hdfs dfs -get oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/exampleobject.txt /tmp/
更多操作,请参见通过Hadoop Shell命令访问。