本文介绍E-MapReduce集群中数据存储相关的信息,包括磁盘角色、云盘与本地盘,以及OSS。

背景信息

关于存储的类型、性能和相关的限制信息,请参见块存储概述

磁盘角色

在E-MapReduce集群中,实例节点上有系统盘和数据盘两种角色的磁盘。每块磁盘的配置、类型和容量都可以不同。
磁盘角色 描述
系统盘 系统盘用于安装操作系统。

E-MapReduce默认使用ESSD云盘作为集群的系统盘。系统盘默认是一块。

数据盘 数据盘用于保存数据。

Master实例默认挂载1块云盘作为数据盘,Core实例默认挂载4块云盘作为数据盘。

云盘与本地盘

E-MapReduce集群支持使用以下两种类型的磁盘来存储数据。

块存储类型 描述 使用场景
云盘 包括SSD云盘、高效云盘和ESSD云盘。

磁盘不直接挂载在本地的计算节点上,而是通过网络访问远端的一个存储节点。每一份数据在后端都有两个实时备份,一共三份数据。当一份数据损坏时(磁盘损坏,不是业务上的破坏),E-MapReduce会自动使用备份数据进行恢复。

当业务数据量处于TB级别以下时,推荐您使用云盘,云盘的IOPS和吞吐相比本地盘都会小些。
说明 在使用云盘时,如果吞吐量明显不足,则可以新建集群以使用本地盘。
本地盘 包括大数据型的SATA本地盘和本地SSD盘。

磁盘直接挂载在计算节点上,性能高于云盘。本地盘不能选择磁盘数量,只能使用默认配置好的数量,数据也没有后端的备份机制,需要上层的软件来保证数据可靠性。

当数据量处于TB级别以上时,推荐您使用本地盘,本地盘的数据可靠性由E-MapReduce来保证。

在E-MapReduce集群中,当实例节点释放时,所有云盘和本地盘都会清除数据,磁盘无法独立的保存下来并再次使用。Hadoop HDFS会使用所有的数据盘作为数据存储。 Hadoop YARN也会使用所有的数据盘作为计算的临时存储。

OSS

在E-MapReduce集群中,您可以将OSS作为HDFS使用。 E-MapReduce可以方便的读写OSS上的数据,所有使用HDFS的代码经过简单的修改即可以访问OSS的数据。例如:
  • 读取HDFS中的数据。
    sc.textfile("hdfs://user/path")
  • 更改存储类型为OSS。
    sc.textfile("oss://user/path")
  • 对于MR或Hive作业,HDFS命令可以直接操作OSS数据,示例如下。
    hadoop fs -ls oss://bucket/path
    hadoop fs -cp hdfs://user/path  oss://bucket/path

    此过程中,您不需要输入AccessKey和Endpoint,E-MapReduce会使用当前集群所有者的信息自动补全AccessKey和Endpoint。但OSS的IOPS不高,不适合用在IOPS要求高的场景,例如,流式计算Spark Streaming和HBase。