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

磁盘角色

在E-MapReduce集群中,实例节点上有系统盘和数据盘两种角色的磁盘,系统盘用于安装操作系统,数据盘用于保存数据。系统盘默认都是一块,而数据盘可有很多块(当前每个实例节点挂载上限为16块)。每块磁盘的配置、类型和容量都可以不同。

E-MapReduce默认使用ESSD云盘作为集群的系统盘,Master实例默认挂载1块云盘作为数据盘、Core实例默认挂载4块云盘作为数据盘。

云盘与本地盘

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

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

  • 本地盘

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

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

当业务数据量处于TB级别以下时,您可以使用云盘,云盘的IOPS和吞吐相比本地盘都会小些。当数据量处于TB级别以上时,推荐都使用本地盘,本地盘的数据可靠性由E-MapReduce来保证。在使用云盘时,如果吞吐量明显不足,则可以切换为本地盘。

OSS

在E-MapReduce集群中,您可将OSS可作为HDFS使用。 E-MapReduce可方便的读写OSS上的数据,所有使用HDFS的代码经过简单的修改即可访问OSS的数据。例如:

  • Spark中读取数据
    sc.textfile("hdfs://user/path")
    替换存储类型hdfs -> 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会使用当前集群所有者的信息进行自动补全。但OSS的IOPS不高,不适合用在一些IOPS要求高的场景,例如,流式计算Spark Streaming和HBase。