本文介绍E-MapReduce集群中数据存储相关的信息,包括磁盘角色、云盘、本地盘和OSS。
磁盘角色
在E-MapReduce集群中,实例节点上有系统盘和数据盘两种角色的磁盘,系统盘用于安装操作系统,数据盘用于保存数据。系统盘默认都是一块,而数据盘可以有很多块(当前每个实例节点挂载上限为16块)。每块磁盘的配置、类型和容量都可以不同。
E-MapReduce默认使用ESSD云盘作为集群的系统盘,Master实例默认挂载1块云盘作为数据盘、Core实例默认挂载4块云盘作为数据盘。
云盘与本地盘
- 云盘
包括SSD云盘、高效云盘和ESSD云盘。磁盘不直接挂载在本地的计算节点上,而是通过网络访问远端的一个存储节点。每一份数据在后端都有两个实时备份,一共三份数据。当一份数据损坏时(磁盘损坏,不是用户自己业务上的破坏),E-MapReduce会自动使用备份数据进行恢复。
- 本地盘
包括大数据型的SATA本地盘和本地SSD盘。磁盘直接挂载在计算节点上,性能高于云盘。本地盘不能选择磁盘数量,只能使用默认配置好的数量,数据也没有后端的备份机制,需要上层的软件来保证数据可靠性。
在E-MapReduce集群中,当实例节点释放时,所有云盘和本地盘都会清除数据,磁盘无法独立的保存下来并再次使用。Hadoop HDFS会使用所有的数据盘作为数据存储。 Hadoop YARN也会使用所有的数据盘作为计算的临时存储。
当业务数据量处于TB级别以下时,您可以使用云盘,云盘的IOPS和吞吐相比本地盘都会小些。当数据量处于TB级别以上时,推荐都使用本地盘,本地盘的数据可靠性由E-MapReduce来保证。在使用云盘时,如果吞吐量明显不足,则可以切换为本地盘。
OSS
- Spark读取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。