解决:本着简单原则,我们认为将元数据与用户数据分离,放在专用的Meta Range Server上更具有可操作性。元数据集中化的唯一缺点是,由于受Meta Range Server内存限制,32GB物理内存所能存放的元数据理论上只能支持上PB的用户数据。但考虑一般机房所能容纳的机器规模,PB级的数据规模完全可以满足大多数公司的需要。
图3给出了Hypertable元数据集中管理的整体结构。目前的实现将Hypertable中的数据服务器(Range Server)分为两种:Meta Range Server和User Range Server。Meta Range Server只管理Root表和METADATA表的Range,User Range Server只管理用户表的Range。由于Master的负载较轻,因此一般将Meta Range Server与Master放在同一个节点上。
系统启动时,每个Range Server从配置文件得知自己的类型,并在注册时汇报自己的类型。Master记录每台Range Server的信息。当Master需要将Range分配给Range Server时(例如表格创建和Range分裂),会根据Range所在表格的类型来选择合适的Range Server,元数据Range分配到Meta Range Server,用户Range则分配到User Range Server。