传统的Apache Hadoop群集系统将计算和存储资源紧密结合在一起,HDFS简化了大容量数据存储,同时面临着以下几个茄子挑战:
存储空间或计算资源不足时,两者可以同时扩展。假设用户对存储资源的需求远远大于对计算资源的需求,同时扩展计算和存储将浪费新扩展的计算资源,反之,将浪费存储资源。
这降低了扩展的经济效率,增加了额外成本。独立扩展的计算和存储更灵活,但可显着降低成本。
目前采用Hadoop牙齿存储分离式体系结构的趋势越来越明显。
Xsky HDFS客户端是XEOS存储群集和Hadoop计算群集的连接器。Hadoop应用程序可以通过xsky HDFS客户端访问存储在XEOS中的所有数据。
但是,引入XEOS存储可能会导致现有HDFS和XEOS共存。如何同时利用两个存储群集是一个需要解决的问题。
01在群集之间复制数据
通常,如果计算应用程序需要访问的数据存储在另一个群集上,则必须将数据从一个群集复制到另一个群集。通常,使用Hadoop附带的DistCp工具在群集之间复制数据。
牙齿方法可以在一定程度上解决数据合并问题,但是如果数据杨怡很多,机房带宽有限,复制数据可能需要很长时间。另一种是,如果原始数据在复制过程中发生更改,则还必须考虑增量同步问题。
02联邦HDFS和ViewFS
Hadoop 2.x发行版引入了联邦HDFS功能,该功能预计可以解决NameNode的内存问题。通过联邦HDFS,系统可以通过添加多个NameNode(每个NameNode管理文件系统命名空间的一部分)进行扩展。
但是,实际应用程序需要系统管理员维护多个NameNodes(所有NameNode都需要高可用性)和负载平衡服务,从而增加了管理成本。因此,HDFS的联邦方案没有在生产环境中采用。
与联邦HDFS解决方案一起,Hadoop 2.x提供了ViewFS以管理多个命名空间视图。
联邦HDFS解决方案不能大规模应用,但ViewFS可以用于解决XEOS和HDFS的共存问题。
03视图fs实施
ViewFS的全名为ViewFileSystem,它不是新的档案系统,而是实现标准Hadoop FileSystem接口的逻辑视图档案系统。但是,实际请求处理位于各自的物理存储群集上。
ViewFS维护装载表。主要是viewfs的逻辑目录和实际主存储的映射关系。当收到应用程序调用时,ViewFS解析用户的访问请求,mount-table查找其主存储目录,并将请求转发到主存储。
ViewFS透明地将所有应用层的FileSystem调用传递到底层物理档案系统。ViewFs实现了Hadoop文件系统接口,因此使用它透明地运行Hadoop工具。例如,所有shell命令都可以将ViewFS与shell和本地档案系统一起使用。
在群集的核心网站配置中,fs.defaultFS设置为视图fs的根目录,即指定的root-table。
挂载表的挂载点在标准Hadoop配置文件中指定。ViewFS中的所有mount-table配置项都带有前缀“fs.viewfs.mounttable”,并使用“link”标签指定连接其他档案系统的mount点。建议使用与Link文件系统目标位置相同的mount点名称。安装表格中未配置的任何命名空间都可以透过linkFallback回复至预设档案系统。
将ViewFS的mount-table配置添加到群集配置中。例如:
Hadoop系统在Hadoop配置文件中查找名为“ClusterX”的mount-table。如上例所示,在所有网关和服务器配置中包括“ClusterX”。
04ViewFS应用程序节目方案
ViewFS可用于以下场景:
非结构化远视数据可以通过DistCp等工具直接存储在XEOS中,业务数据库结构化数据和应用程序购买数据可以通过ETL作为Hive的外部表存储在XEOS中。HBase和Hive继续在现有HDFS上运行。这意味着HBase表数据和Hive内部表数据仍然通过HDFS存储。
这一优势在于可以将大量非结构化数据,甚至大量小文件托管到XEOS上,从而减轻HBase的负担,同时Hive的所有新数据都通过XEOS存储,后续扩展容量只需扩展XEOS存储群集即可。
05XEOS配置ViewFS
大容量数据平台基于CDH 6.3.2。HDFS core-site.xml添加以下配置:
Hadoop FS命令行:
Wordcount测试的运行结果如下:
06摘要
XSKY通过ViewFS将现有HDFS数据与新XEOS数据相关联,解决了现有HDFS群集与新XEOS群集的共存问题,而不改变用户使用习惯。现有HDFS数据可以继续使用,XEOS可以用于托管新创建的数据。
这种方式不仅能充分利用旧设备,还能达到降低成本的目的。此外,您还可以通过XEOS横向扩展功能单独扩展存储。