OSS-HDFS服务是一款云原生数据湖存储产品。基于统一的元数据管理能力,在完全兼容HDFS文件系统接口的同时,提供充分的POSIX能力支持,能更好地满足大数据和AI等领域的数据湖计算场景。本文介绍自建Hadoop如何通过JindoSDK访问OSS-HDFS服务。
前提条件
已开通并授权访问OSS-HDFS服务。具体操作,请参见开通并授权访问OSS-HDFS服务。什么是OSS-HDFS服务
通过OSS-HDFS服务,无需对现有的Hadoop、Spark大数据分析应用做任何修改。通过简单的配置即可像在原生HDFS中那样管理和访问数据,同时获得OSS无限容量、弹性扩展、更高的安全性、可靠性和可用性支撑。
作为云原生数据湖基础,OSS-HDFS在满足EB级数据分析、亿级文件管理服务、TB级吞吐量的同时,全面融合大数据存储生态,除提供对象存储扁平命名空间之外,还提供了分层命名空间服务。分层命名空间支持将对象组织到一个目录层次结构中进行管理,并能通过统一元数据管理能力进行内部自动转换。对Hadoop用户而言,无需做数据复制或转换就可以实现像访问本地HDFS一样高效的数据访问,极大提升整体作业性能,降低了维护成本。
关于OSS-HDFS服务的应用场景、服务特性、功能特性等更多信息,请参见OSS-HDFS服务概述。
步骤一:创建专有网络VPC并添加云服务器ECS实例
- 创建允许内网访问OSS-HDFS服务的专有网络VPC。
- 添加云服务器ECS实例。
步骤二:创建Hadoop运行环境
- 安装Java环境。
- 启用SSH服务。
- 安装SSH服务。
sudo yum install -y openssh-clients openssh-server
- 启用SSH服务。
systemctl enable sshd && systemctl start sshd
- 生成SSH密钥,并将生成的密钥添加到信任列表。
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys chmod 0600 ~/.ssh/authorized_keys
- 安装SSH服务。
- 安装Hadoop。
- 测试Hadoop是否安装成功。执行hadoop version命令,如果正常返回版本信息,表明安装成功。
步骤三:切换本地HDFS到云上OSS-HDFS服务
- 下载JindoSDK JAR包。
- 配置环境变量。
- 配置JindoSDK DLS实现类及AccessKey。
- 配置OSS-HDFS服务的Endpoint。访问OSS-HDFS服务时需要配置Endpoint。推荐访问路径格式为
oss://<Bucket>.<Endpoint>/<Object>
,例如oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampleobject.txt
。配置完成后,JindoSDK会根据访问路径中的Endpoint访问对应的OSS-HDFS服务接口。除上述提到的在访问路径中指定Endpoint的方式以外,您还可以通过其他配置OSS-HDFS服务的Endpoint。更多信息,请参见配置Endpoint的其他方式。
步骤四:访问OSS-HDFS服务
- 新建目录
在目标存储空间examplebucket下创建名为dir/的目录,示例如下:
hdfs dfs -mkdir oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/dir/
- 上传文件
将本地examplefile.txt文件上传至目标存储空间examplebucket,示例如下:
hdfs dfs -put /root/workspace/examplefile.txt oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/examplefile.txt
- 查看目录信息
查看目标存储空间examplebucket下目录dir/的信息,示例如下:
hdfs dfs -ls oss://examplebucket.oss-dls.aliyuncs.com/dir/
- 查看文件信息
查看目标存储空间examplebucket下文件examplefile.txt的信息,示例如下:
hdfs dfs -ls oss://examplebucket.oss-dls.aliyuncs.com/examplefile.txt
- 查看文件内容
查看目标存储空间examplebucket下文件examplefile.txt的内容,示例如下:
重要 执行以下命令后,文件内容将以纯文本形式打印在屏幕上。如果文件存在特定格式的编码,请使用HDFS的Java API读取文件内容,然后进行解码操作后即可获取对应的文件内容。hdfs dfs -cat oss://examplebucket.oss-dls.aliyuncs.com/examplefile.txt
- 拷贝目录或文件
将目标存储空间examplebucket下根目录subdir1拷贝到目录subdir2下,且根目录subdir1所在的位置、根目录下的文件和子目录结构和内容保持不变,示例如下:
hdfs dfs -cp oss://examplebucket.oss-dls.aliyuncs.com/subdir1/ oss://examplebucket.oss-dls.aliyuncs.com/subdir2/subdir1/
- 移动目录或文件
将目标存储空间根目录srcdir及其包含的文件或者子目录移动至另一个根目录destdir下,示例如下:
hdfs dfs -mv oss://examplebucket.oss-dls.aliyuncs.com/srcdir/ oss://examplebucket.oss-dls.aliyuncs.com/destdir/
- 下载文件
将目标存储空间examplebucket下的exampleobject.txt下载到本地根目录文件夹/tmp下,示例如下:
hdfs dfs -get oss://examplebucket.oss-dls.aliyuncs.com/exampleobject.txt /tmp/
- 删除目录或文件删除目标存储空间examplebucket下目录destfolder/及其目录下的所有文件,示例如下:
hdfs dfs -rm oss://examplebucket.oss-dls.aliyuncs.com/destfolder/