Hadoop默认支持集成OSS,作为Hadoop兼容的文件系统

本文涉及的产品
对象存储 OSS,20GB 3个月
日志服务 SLS,月写入数据量 50GB 1个月
文件存储 NAS,50GB 3个月
简介: Apache Hadoop默认支持阿里云OSS对象存储系统,作为Hadoop兼容的文件系统。OSS是中国云计算厂商第一个也是目前唯一一个被Hadoop官方版本支持的云存储系统。这意味着全球用户Hadoop生态的离线、交互、数据仓库、深度学习等程序,可以在不需要改代码的情况下,自由读写OSS的对象存储。

背景

2017.12.13日Apache Hadoop3.0.0正式版本发布,默认支持阿里云OSS对象存储系统,作为Hadoop兼容的文件系统。

OSS是中国云计算厂商第一个也是目前唯一一个被Hadoop官方版本支持的云存储系统。这是继Docker支持阿里云存储以后,又一个更重大的里程碑。这是阿里云与社区、Intel等伙伴共同合作的成果。同时,也体现了主流开源社区对中国的技术生态,对中国云计算行业发展成果的认可。

这意味着全球用户在使用Hadoop这一开源软件时,都可以无缝连接阿里云的OSS对象存储文件系统。Hadoop生态的离线、交互、数据仓库、深度学习等程序,可以在不需要改代码的情况下,自由读写OSS的对象存储。

用户只需要简单的配置,就可以在Hadoop应用中使用OSS。下面举例介绍如何在Hadoop3.0中,使用OSS。

如何使用

Hadoop集群搭建

首先,我们需要搭建Hadoop集群,搭建步骤如下,具体可参考官方文档。如已经创建Hadoop集群,则可跳过。

配置hostname

配置各个机器的hostname,这个用户可以自由选择自己喜欢的名称。对于集群规模不大的情况,可以使用master, slave01, slave02…修改完成之后,可以使用hostname命令判断是否执行成功

修改/etc/hosts

修改各个机器上/etc/hosts文件, 在各个节点上打开文件:vim /etc/hosts
在文件最后添加如下内容,注意下面的IP地址要替换为实际环境的局域网IP地址, 例如:

192.168.1.1    master
192.168.1.2    slave01
192.168.1.3    slave02

SSH免密登录

Hadoop集群需要机器之间实现ssh直连,既不需要密码。实现方式通过将各个机器上的密钥(~/.ssh/id_rsa.pub)分到给对方机器的~/.ssh/authorized_keys文件中去

安装Java(所有节点)

下载JDK(以jdk1.8.0_15为例), 解压至/usr/lib/(以安装至该目录为例)
修改环境变量, 打开文件 vim ~/.bashrc

export JAVA_HOME=/usr/lib/jdk1.8.0_15/
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin

使配置生效 : source ~/.bashrc
验证配置是否生效 :
执行命令java -version,返回正确版本。

集群安装配置

可以参考Hadoop Cluster Setup进行Hadoop集群安装配置

阿里云OSS支持

Hadoop集群搭建好之后,为了能使Hadoop读写阿里云OSS,只需要修改极少的配置文件即可。

core_site.xml配置修改

$HADOOP_HOME/etc/hadoop/core_site.xml文件的配置内容,须增加的配置如下:
configuration标签中加入如下内容:
注意把fs.oss.endpoint、fs.oss.accessKeyId、fs.oss.accessKeySecret属性对应的的值设置为您自己的OSS Bucket的Endpoint和AK内容

<property>
      <name>fs.oss.endpoint</name>
      <value>YourEndpoint</value>
      <description>Aliyun OSS endpoint to connect to. </description>
    </property>
    <property>
      <name>fs.oss.accessKeyId</name>
      <value>YourAccessKeyId</value>
      <description>Aliyun access key ID</description>
    </property>

    <property>
      <name>fs.oss.accessKeySecret</name>
      <value>YourAccessKeySecret</value>
      <description>Aliyun access key secret</description>
    </property>
    <property>
      <name>fs.oss.impl</name>
      <value>org.apache.hadoop.fs.aliyun.oss.AliyunOSSFileSystem</value>
    </property>
    <property>
      <name>fs.oss.buffer.dir</name>
      <value>/tmp/oss</value>
    </property>

hadoop-env.sh配置修改

打开文件: vim $HADOOP_HOME/etc/hadoop/hadoop-env.sh
在相应位置增加如下内容:

export HADOOP_OPTIONAL_TOOLS="hadoop-aliyun"

修改完成之后,重启Hadoop集群。

Hadoop读写OSS验证

完成上面的设置后,就可以在Hadoop中读写OSS了,享受到OSS的海量、弹性、自动扩容伸缩等优势。为了测试Hadoop能否从OSS读写文件,可以做如下的测试:

# 测试写
$HADOOP_HOME/bin/hadoop fs -mkdir oss://{your-bucket-name}/hadoop-test
# 测试读
$HADOOP_HOME/bin/hadoop fs -ls oss://${your-bucket-name}/

OSS计算生态展望

在Hadoop中使用OSS,也符合存储计算分离的发展趋势,能使计算业务启停、数据规模和计算节点的扩容伸缩更灵活,用户也不用为了保存数据,而运维HDFS集群。

OSS依托高性能的阿里云数据中心网络,并与丰富的开源、阿里云自研的计算系统集成,为客户提供方便,简单,和经济划算的数据分析和加工能力。比如:

  • OSS是中国第一家被官方Hadoop社区接纳为缺省的对象存储文件系统;
  • 开源的分布式内存文件系统Alluxio原生支持OSS;
  • 阿里云E-MapReduce的Hadoop组件可直接使用OSS作为存储后端进行数据存取,使用EMR服务,更方便地构建和管理基于OSS的Hadoop、Spark、Hive等大数据应用集群;
  • 阿里云的MaxCompute通过阿里云内部Tb级的网络通道,对OSS的数据进行分析和加工;
  • 阿里云的BatchCompute平台,为基因计算、动画渲染等行业客户,提供数千个计算节点级别的并发数据分析和加工能力,大大提升业务效率;
  • 阿里云的机器学习平台PAI,和OSS联通,广泛应用在用户画像、气象分析、识图训练等机器学习业务中;
  • 并行处理数据仓库服务HybridDB等产品也都和OSS存储联通;


OSS不仅是“存储”,而且正在成为共享的数据湖,一份数据被多种计算系统共享,达到存储与计算解耦的效果,使得资源的利用率最大化。OSS会持续与社区、以及Intel等合作伙伴,共同推进OSS与Hadoop开源计算系统的结合。同时,OSS也会持续与阿里云计算产品(如EMR、PAI等)的融合和优化,帮助用户更方便地搭建计算应用,进行数据的分析和加工。

相关文档

  1. CDH版本中使用OSS:
    CDH5(Hadoop2.6.0) Hadoop如何读写OSS
  2. HDP版本中使用OSS:
    HDP2.6(Hadoop2.7.0) Hadoop如何读写OSS
  3. Impala使用OSS示例:
    Apache Impala(CDH6)查询OSS数据
  4. Spark通过OSS Select加速:
    Spark使用OSS Select加速数据查询
  5. Logstach将日志导入到OSS:
    使用Logstash将日志导入OSS
  6. Flume将日志导入到OSS:
    使用Flume将日志导入OSS
  7. Spark读写OSS示例:
    Spark读写OSS并使用OSS Select来加速查询

参考文档

[Hadoop-Aliyun module: Integration with Aliyun Web Services]
https://hadoop.apache.org/docs/r3.0.0/hadoop-aliyun/tools/hadoop-aliyun/index.html

[Hadoop Cluster Setup]
https://hadoop.apache.org/docs/r3.0.0/hadoop-project-dist/hadoop-common/ClusterSetup.html

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
目录
相关文章
|
1月前
|
存储 Java 开发工具
【三方服务集成】最新版 | 阿里云OSS对象存储服务使用教程(包含OSS工具类优化、自定义阿里云OSS服务starter)
阿里云OSS(Object Storage Service)是一种安全、可靠且成本低廉的云存储服务,支持海量数据存储。用户可通过网络轻松存储和访问各类文件,如文本、图片、音频和视频等。使用OSS后,项目中的文件上传业务无需在服务器本地磁盘存储文件,而是直接上传至OSS,由其管理和保障数据安全。此外,介绍了OSS服务的开通流程、Bucket创建、AccessKey配置及环境变量设置,并提供了Java SDK示例代码,帮助用户快速上手。最后,展示了如何通过自定义starter简化工具类集成,实现便捷的文件上传功能。
【三方服务集成】最新版 | 阿里云OSS对象存储服务使用教程(包含OSS工具类优化、自定义阿里云OSS服务starter)
|
4月前
|
分布式计算 Hadoop Linux
Hadoop检查本地文件系统:
【7月更文挑战第24天】
43 6
|
4月前
|
分布式计算 Hadoop
|
4月前
|
分布式计算 DataWorks 调度
DataWorks产品使用合集之在使用MaxCompute进行数据集成同步到OSS时,出现表名和OSS文件名不一致且多了后缀,该如何处理
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
5月前
|
分布式计算 Hadoop Java
优化大数据处理:Java与Hadoop生态系统集成
优化大数据处理:Java与Hadoop生态系统集成
|
5月前
|
存储 DataWorks 关系型数据库
DataWorks产品使用合集之在使用数据集成中的同步任务从mysql同步表到oss,存储为csv时,最终生成的文件中没有表头,这个属性可以在哪里配置么
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
4月前
|
分布式计算 Hadoop 大数据
优化大数据处理:Java与Hadoop生态系统集成
优化大数据处理:Java与Hadoop生态系统集成
|
5月前
|
对象存储
大事件后端项目32--------文件上传_阿里云OSS_程序集成
大事件后端项目32--------文件上传_阿里云OSS_程序集成
|
6月前
|
存储 分布式计算 Hadoop
Hadoop数据集成
【5月更文挑战第7天】
58 1
|
6月前
|
存储 分布式计算 资源调度
Hadoop生态系统集成问题
【5月更文挑战第6天】
55 1

相关产品

  • 对象存储