《CDP企业数据云平台从入门到实践》——CDP之数据储存(1) https://developer.aliyun.com/article/1226442?groupCode=ClouderaCDP
二、 管理数据存储
您可以考虑各种选项来优化数据存储,例如通过纠删码增加存储空间、使用编解码器压缩数据、在 HDFS 集群中平衡数据等。
1. 优化数据存储
1) 跨 DataNode 的磁盘平衡数据
HDFS Disk Balancer 是一个命令行工具,可以在 DataNode 的所有磁盘上均匀分布数据,以确保磁盘得到有效利用。与在集群的 DataNode 之间平衡数据的 HDFS Balancer 不同,Disk Balancer 在单个 DataNode 级别平衡数据。
由于大量的写入和删除或磁盘更换等原因,DataNode 上的磁盘可能会出现数据分布不均匀的情况。为确保数据在指定 DataNode 的磁盘之间分布的均匀性,Disk
Balancer 对 DataNode 进行操作,并将数据块从一个磁盘移动到另一个磁盘。
对于指定的 DataNode,磁盘平衡器根据其总容量和已用空间确定每个磁盘存储的理想数据量,并计算在磁盘之间重新分配的数据量。磁盘平衡器捕获有关数据在计划中跨 DataNode 磁盘移动的信息。在执行计划时,磁盘平衡器按指定移动数据。
2) 数据持久性
数据持久性描述了数据丢失的弹性。当数据存储在 HDFS 中时,CDP 提供了两种数据持久性选项。您可以使用最初构建 HDFS 的复制或纠删码(EC)。
• 复制
HDFS 创建两个数据副本,从而产生三个数据实例。这些副本存储在单独的DataNode 上,以防止在无法访问节点时丢失数据。当存储在节点上的数据丢失或无法访问时,它会从其他节点之一复制到新节点,以便始终有多个副本。
复制的数量是可配置的,但默认是三个。当您拥有三个或更多 DataNode 时,Cloudera 建议将复制因子至少保持为三个。较低的复制因子会导致数据更容易受到DataNode 故障的影响,因为分布在较少 DataNode 上的数据副本较少。
当数据写入使用复制的 HDFS 集群时,会自动创建数据的额外副本。不需要额外的步骤。
复制支持 CDP 支持的所有数据处理引擎。
• 纠删码(EC)
EC 是复制的替代方法。当 HDFS 集群使用 EC 时,不会生成额外的数据直接副本。相反,数据被分割成块并编码以生成奇偶校验块。如果有任何丢失或损坏的块,HDFS
使用剩余的数据和奇偶校验块在后台重建丢失的部分。此过程提供与 3 倍复制相似级别的数据持久性,但存储成本更低。
此外,写入数据时会应用 EC。这意味着要使用 EC,您必须首先创建一个目录并为EC 配置它。然后,您可以复制现有数据或将新数据写入该目录。
3) 通过 HDFS 压缩增加存储容量
Linux 支持 GzipCodec、DefaultCodec、BZip2Codec、LzoCodec 和 SnappyCodec。通常,GzipCodec 用于 HDFS 压缩。
要配置数据压缩,您可以启用数据压缩编解码器,例如,GZipCodec 作为默认编解码器,或者通过一次性作业从命令行使用编解码器。
4) 设置 HDFS 配额
作为管理员,您可以在 Reports Manager 服务作为 Cloudera Management Service的一部分安装后,为使用的文件名和目录名数量以及目录使用的空间量设置 HDFS
配额。在您可以设置配额之前,报告管理器必须为文件或目录编制索引。
• 使用 HDFS 配额的注意事项
名称配额和空间配额相互独立。
如果创建更多文件和目录会导致超过配额,则不能创建更多文件和目录。
如果配额阻止写入完整块,则块分配失败。
如果您使用复制,块的每个副本都将计入配额。
• 文件数量限制
文件计数配额是对配置目录中文件名和目录名数量的限制。
目录计入其自身的配额。因此,配额值为 1 会强制目录保持为空。
文件计数基于文件的预期复制因子。更改文件的复制因子将增加或减少相应的配额值。
• 磁盘空间限制
空间配额是对以正在配置的目录为根的树中文件使用的字节数的硬性限制。
块的每个副本都计入配额。
磁盘空间配额计算将复制考虑在内。因此,计算使用每个文件的复制大小而不是面向用户的大小。
磁盘空间配额计算包括打开的文件(正在写入)和已写入的文件。
如果配额不允许写入完整块,则正在写入的文件的块分配会失败。
5) 在 HDFS 中配置异构存储
HDFS支持多种存储类型。您可以选择分配给每个DataNode数据目录的存储类型。指定存储类型可让您根据数据使用频率优化数据使用并降低成本。
集群中的每个 DataNode 都配置有一组数据目录。您可以为每个数据目录配置存储类型。存储策略规定了在存储文件或目录时要使用的存储类型。考虑使用不同类型存储的一些原因如下:
• 您拥有具有时间局部性的数据集(例如,时间序列数据)。最新的数据最初可以加载到 SSD 中以提高性能,然后随着时间的推移迁移到磁盘。
• 您需要将冷数据移动到更密集的归档存储,因为数据很少会被访问,而且归档存储要便宜得多。这可以通过简单的过时策略来完成:例如,将超过六个月的数据移至存档存储。
6) 跨 HDFS 集群平衡数据
HDFS Balancer 是一种用于在 HDFS 集群的存储设备之间平衡数据的工具。
您还可以指定源 DataNode,以释放特定 DataNode 中的空间。您可以使用块分布应用程序将其块副本固定到特定的 DataNode,这样固定的副本就不会为了集群平衡而移动。
《CDP企业数据云平台从入门到实践》——CDP之数据储存(3) https://developer.aliyun.com/article/1226404?groupCode=ClouderaCDP