|
如何解决Hadoop重构的问题在Hadoop的2.X Yarn版中,不会存在HA的问题。但在Yarn中,主控节点中只有一个是活动的,只有这一个主控节点为客户端提供服务,其他主控节点在这期间没有发挥任何作用。 在Hadoop的1.x版本中,存在着一些问题,例如HA和过多的小文件。 在Hadoop的2.X Yarn版中,不会存在HA的问题。但在Yarn中,主控节点中只有一个是活动的,只有这一个主控节点为客户端提供服务,其他主控节点在这期间没有发挥任何作用。笔者认为这是对主控节点的浪费。 解决方案 Hadoop主控节点不存储元数据,而是对HDFS正在写入的文件加锁。 元数据应该存储在其他位置,这可以被称为元数据节点集群,所有的主控节点都可以访问元数据节点集群。 元数据节点群集可以使用Zookeeper实现。我们可以使用Zookeeper树模型作为文件系统树的模型。如果znode是文件节点,那么它应该具有znode型子节点,并且子节点描述数据块信息,该文件znode包含自身数据来描述文件本身,如文件长度和文件的访问信息等。 Zookeeper自然是支持集群,所以我们不用担心HA.。 如果有太多的小文件,那我们就应该用元数据节点集群来存储元数据,并且使用随便规则,以确定文件应被存储在哪个集群上。元数据节点集群应该能被显式的添加到系统中。 当客户端希望写一个文件时,主控节点应检查元数据是否存在着该文件的写锁定标志。 如果没有写锁定标志,主控节点应在文件znode中添加写锁定标志,然后客户端如常写入文件。在客户端完成后,主控节点清除写锁定标志。 如果存在写锁定标志,主控节点应拒绝客户的要求或延迟请求,并把请求放入请求队列中,让客户等待,直到写锁定标志被清除。 如果我们对读操作使用保守策略,在客户端读取文件时,主控节点应检查现有文件是否存在写标记。如果不存在写标记,客户端照常读取文件,并告知其他客户端该文件被锁定写入。 如果我们对读操作使用乐观策略的,主控节点可以忽略写锁定标志,照常读取。 结论 在重构之后,所有的主控节点可以在同一时间为客户端提供服务,并且小文件问题也被解决了。 责编:李玉琴 微信扫一扫实时了解行业动态 微信扫一扫分享本文给好友 著作权声明:畅享网文章著作权分属畅享网、网友和合作伙伴,部分非原创文章作者信息可能有所缺失,如需补充或修改请与我们联系,工作人员会在1个工作日内配合处理。 |
热门博文 |
|