在Hadoop的阿里云模块,提供了与阿里云集成支持阿里云对象存储服务(OSS阿里云)。生成的JAR文件hadoop-aliyun.jar还声明了对该支持所需的所有外部工件的传递依赖-使下游应用程序可以轻松使用此支持。
要使其成为Apache Hadoop的默认类路径的一部分,只需确保hadoop-env.sh中的HADOOP_OPTIONAL_TOOLS在列表中具有“ hadoop-aliyun”。
阿里云OSS是“对象存储”的一个示例。为了实现可伸缩性和特别高的可用性,阿里云OSS放宽了传统“ POSIX”文件系统所承诺的一些限制。
特别
<属性> <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>
要测试oss://文件系统客户端,需要两个将身份验证详细信息传递给测试运行程序的文件。
这两个配置文件必须放入hadoop-tools / hadoop-aliyun / src / test / resources中。
该文件触发对阿里云OSS模块的测试。没有该文件,将不会执行该模块中的任何测试
它包含连接到Aliyun OSS所需的访问密钥ID /秘密和代理信息,并且还应提供OSS存储桶URL。
测试过程中将清洁存储桶中的内容物,因此请勿将存储桶用于测试以外的其他目的。
在/ 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>