在一次游泳的时候,想起一个问题,为什么hdfs的namenode没有存储块的对应节点信息,导致启动hdfs的时候,datanode需要扫描所有的数据块,再将该datanode上的块信息发送给namenode,namenode才能构建完整的元数据信息。根据文件和数据块的多少,启动hdfs的时候需要几分钟到几个小时。
对比下分布式数据库,如果把记录对应的节点信息发送给Master,那就不可想象了。所以在分布式数据库中hdfs的存储策略不可取。同时最近一直被目前的分布式数据库的存储上有几个问题困扰着:
在节点数固定的时候,Hdfs的数据是根据机器负载来决定存储在哪个节点上的,这样做的好处是数据平均分布,可以根据机器的存储大小加权平均,并且依据机器的负载情况动态调整;目前分布式分布式数据库中做的很有限,该如何改进呢?
添加新节点的时候,Hdfs配置好新节点指向的namenode,然后启动新节点即可,存储过一段时间会收敛到平均,如果想加入后马上使得数据平均分布,可以执行rebalance操作;而分布式数据库添加节点的时候,配置好新节点指向的Master,然后启动新节点之后,通常还需要根据分布的规则进行数据重新分布,甚至规则也可能需要进行拆分合并扩展等修改,分布式数据库能做到什么程度,如何做?当然如果能做到数据重新分布,rebalance的操作也就可以加入到分布式数据库中,两者是共通的,都是做数据的移动,数据重新分布北京治疗最好白癜风医院的偏方北京中科医院假