Hadoop 文档

General

Common

HDFS

MapReduce

MapReduce REST APIs

YARN

YARN REST APIs

YARN Service

Submarine

Hadoop Compatible File Systems

Auth

Tools

Reference

Configuration

总览

Hadoop的阿里云模块,提供了与阿里云集成支持阿里云对象存储服务(OSS阿里云)。生成的JAR文件hadoop-aliyun.jar还声明了对该支持所需的所有外部工件的传递依赖-使下游应用程序可以轻松使用此支持。

要使其成为Apache Hadoop的默认类路径的一部分,只需确保hadoop-env.sh中的HADOOP_OPTIONAL_TOOLS在列表中具有“ hadoop-aliyun”。

特征

  • 读写存储在阿里云OSS中的数据。
  • 通过实现标准的Hadoop FileSystem接口提供分层的文件系统视图。
  • 可以充当MapReduce作业中的数据源或接收器。

警告1:对象存储不是文件系统。

阿里云OSS是“对象存储”的一个示例。为了实现可伸缩性和特别高的可用性,阿里云OSS放宽了传统“ POSIX”文件系统所承诺的一些限制。

特别

  1. 原子操作:delete()rename()通过逐个文件的递归操作实现。它们所花费的时间至少与文件的数量成正比,在此期间可能会看到部分更新。delete()rename()无法保证原子性。如果操作被中断,文件系统将处于中间状态。
  2. 文件所有者和组被保留,但未强制执行权限模型。授权通过Aliyun资源访问管理(Aliyun RAM)在整个Aliyun帐户级别进行。
  3. 没有跟踪目录的上次访问时间。
  4. 不支持追加操作。

警告2:未跟踪目录的上次访问时间,

依赖于此的Hadoop功能可能具有意料之外的行为。例如,YARN的AggregatedLogDeletionService将不会删除相应的日志文件。

警告3:您的Aliyun凭据很有价值

您的阿里云凭证不仅用于支付服务费用,还提供对数据的读写访问权限。拥有该帐户的任何人都不仅可以读取您的数据集-他们还可以删除它们。

不要通过诸如1的方式无意间共享这些凭据。将所有包含机密信息的配置文件签入SCM。2.将它们登录到控制台,因为它们总是最终被看到。3.使用URL中的凭据定义文件系统URI,例如oss:// accessKeyId:accessKeySecret @ directory / file。它们将最终出现在日志和错误消息中。4.在错误报告中包括秘密。

如果您执行以下任何一项操作:请立即更改您的凭据!

警告4:Aliyun E-MapReduce提供的Aliyun OSS客户端与此实现不同

具体来说:在Aliyun E-MapReduce上,也支持oss://,但实现方式不同。如果您使用的是Aliyun E-MapReduce,请按照以下说明进行操作-请注意,与E-MapReduce中的Aliyun OSS集成有关的所有问题只能由Aliyun自己解决:请向他们提出问题。

开源软件

身份验证属性

<属性>
  <name> fs.oss.accessKeyId </ name>
  <description>阿里云访问密钥ID </ description>
</ property>

<属性>
  <name> fs.oss.accessKeySecret </ name>
  <description>阿里云访问密钥机密</ description>
</ property>

<属性>
  <name> fs.oss.credentials.provider </ name>
  <说明>
    实现的凭据提供程序的类名
    com.aliyun.oss.common.auth.CredentialsProvider。如果使用访问/保密键,则省略
    或其他身份验证机制。指定的类必须提供一个
    可访问的构造函数,接受java.net.URI和
    org.apache.hadoop.conf.Configuration或可访问的默认构造函数。
  </ description>
</ property>

其他性质

<属性>
  <name> fs.AbstractFileSystem.oss.impl </ name>
  <value> org.apache.hadoop.fs.aliyun.oss.OSS </ value>
  <description> OSS AbstractFileSystem的实现类。
    如果您想通过OSS将OSS用作YARN的资源存储目录
    Hadoop的core-site.xml中的fs.defaultFS配置属性,
    您应该将此配置添加到Hadoop的core-site.xml
  </ description>
</ property>

<属性>
  <name> fs.oss.endpoint </ name>
  <description>要连接的Aliyun OSS端点。最新列表是
    在Aliyun OSS文档中提供。
   </ description>
</ property>

<属性>
   <name> fs.oss.impl </ name>
   <value> org.apache.hadoop.fs.aliyun.oss.AliyunOSSFileSystem </ value>
</ property>

<属性>
  <name> fs.oss.proxy.host </ name>
  <description>用于Aliyun OSS连接的(最佳)代理服务器的主机名</ description>
</ property>

<属性>
  <name> fs.oss.proxy.port </ name>
  <description>代理服务器端口</ description>
</ property>

<属性>
  <name> fs.oss.proxy.username </ name>
  <description>用于通过代理服务器进行身份验证的用户名</ description>
</ property>

<属性>
  <name> fs.oss.proxy.password </ name>
  <description>用于与代理服务器进行身份验证的密码。</ description>
</ property>

<属性>
  <name> fs.oss.proxy.domain </ name>
  <description>用于通过代理服务器进行身份验证的域。</ description>
</ property>

<属性>
  <name> fs.oss.proxy.workstation </ name>
  <description>用于通过代理服务器进行身份验证的工作站。</ description>
</ property>

<属性>
  <name> fs.oss.attempts.maximum </ name>
  <value> 20 </ value>
  <description>我们应该对临时错误重试几次。</ description>
</ property>

<属性>
  <name> fs.oss.connection。Establishment.timeout </ name>
  <value> 50000 </ value>
  <description>连接建立超时(以毫秒为单位)。</ description>
</ property>

<属性>
  <name> fs.oss.connection.timeout </ name>
  <value> 200000 </ value>
  <description>套接字连接超时(以毫秒为单位)。</ description>
</ property>

<属性>
  <name> fs.oss.paging.maximum </ name>
  <value> 1000 </ value>
  <description>一次执行目录列表时,需要向Aliyun OSS请求多少个键。
  </ description>
</ property>

<属性>
  <name> fs.oss.multipart.upload.size </ name>
  <value> 10485760 </ value>
  <description>每个多部分的大小(以字节为单位)。</ description>
</ property>

<属性>
  <name> fs.oss.upload.active.blocks </ name>
  <value> 4 </ value>
  <description>上传文件时激活(并发)上传块。</ description>
</ property>

<属性>
  <name> fs.oss.multipart.download.threads </ name>
  <value> 10 </ value>
  <description>池中允许进行分段下载和上传的最大线程数。</ description>
</ property>

<属性>
  <名称> fs.oss.multipart.download.ahead.part.max.number </名称>
  <value> 4 </ value>
  <description>读取文件时的最大预读部分数。</ description>
</ property>

<属性>
  <name> fs.oss.max.total.tasks </ name>
  <value> 128 </ value>
  <description>分段下载和上传的最大队列数。</ description>
</ property>

<属性>
  <name> fs.oss.max.copy.threads </ name>
  <value> 25 </ value>
  <description>池中允许进行复制操作的最大线程数。</ description>
</ property>

<属性>
  <name> fs.oss.max.copy.tasks.per.dir </ name>
  <value> 5 </ value>
  <description>复制目录时允许的最大并发任务数。</ description>
</ property>

<属性>
  <name> fs.oss.multipart.upload.threshold </ name>
  <value> 20971520 </ value>
  <description>在开始分段上传或复制之前,最小大小(以字节为单位)。
    注意:该属性已弃用,在以后的版本中将被删除。
  </ description>
</ property>

<属性>
  <name> fs.oss.multipart.download.size </ name>
  <值> 102400 /值>
  <description>来自ALiyun OSS的每个请求中的字节大小。</ description>
</ property>

<属性>
  <名称> fs.oss.buffer.dir </名称>
  <description>逗号分隔的目录列表,用于在上传到Aliyun OSS之前缓冲OSS数据</ description>
</ property>

<属性>
  <name> fs.oss.acl.default </ name>
  <value> </ vaule>
  <说明>为存储桶设置一个罐头ACL。值可以是私有的,公共读取的,公共读取写入的。
  </ description>
</ property>

<属性>
  <name> fs.oss.server-side-encryption-algorithm </ name>
  <value> </ vaule>
  <description>为oss:文件系统指定服务器端加密算法。
     默认情况下未设置,当前唯一允许的其他值为AES256。
  </ description>
</ property>

<属性>
  <name> fs.oss.connection.maximum </ name>
  <value> 32 </ value>
  <description>同时连接到oss的数量。</ description>
</ property>

<属性>
  <name> fs.oss.connection.secure.enabled </ name>
  <value> true </ value>
  <description>是否通过ssl连接到oss,默认情况下为true。</ description>
</ property>

测试hadoop-aliyun模块

要测试oss://文件系统客户端,需要两个将身份验证详细信息传递给测试运行程序的文件。

  1. auth-keys.xml
  2. core-site.xml

这两个配置文件必须放入hadoop-tools / hadoop-aliyun / src / test / resources中

core-site.xml

该文件预先存在并提供在auth-keys.xml中创建的配置。

在大多数情况下,不需要修改,除非在测试过程中需要设置特定的非默认属性。

auth-keys.xml

该文件触发对阿里云OSS模块的测试。没有该文件,将不会执行该模块中的任何测试

它包含连接到Aliyun OSS所需的访问密钥ID /秘密和代理信息,并且还应提供OSS存储桶URL。

  1. test.fs.oss.name:Aliyun OSS测试的存储桶的URL

测试过程中将清洁存储桶中的内容物,因此请勿将存储桶用于测试以外的其他目的。

运行Hadoop合同测试

/ test / resources下创建文件contract-test-options.xml。如果未定义特定文件fs.contract.test.fs.oss测试路径,则将跳过这些测试。运行这些测试中的任何一个都需要凭据,可以从auth-keys.xml或通过直接XInclude包含复制它们。这是contract-test-options.xml的示例:

<?xml version =“ 1.0”?>
<?xml-stylesheet type =“ text / xsl” href =“ configuration.xsl”?>
<配置>

<include xmlns =“ http://www.w3.org/2001/XInclude”
href =“ auth-keys.xml” />

  <属性>
    <name> fs.contract.test.fs.oss </ name>
    <value> oss:// spark-tests </ value>
  </ property>

  <属性>
    <name> fs.oss.impl </ name>
    <value> org.apache.hadoop.fs.aliyun.oss.AliyunOSSFileSystem </ value>
  </ property>

  <属性>
    <name> fs.oss.endpoint </ name>
    <value> oss-cn-hangzhou.aliyuncs.com </ value>
  </ property>

  <属性>
    <名称> fs.oss.buffer.dir </名称>
    <value> / tmp / oss </ value>
  </ property>

  <属性>
    <name> fs.oss.multipart.download.size </ name>
    <value> 102400 </ value>
  </ property>
</ configuration>