hadoop实现原理

来源:互联网 发布:链接转手机淘宝淘口令 编辑:程序博客网 时间:2024/05/16 11:09

 

与单机的文件系统不同,分布式文件系统不是将这些数据放在一块磁盘上,由上层操作系统来管理。而是存放在一个服务器集群上,由集群中的服务器,各尽其责,通力合作,提供整个文件系统的服务。其中重要的服务器包括:主控服务器(Master/NameNode),数据服务器(ChunkServer/DataNode),和客户服务器。HDFS和GFS都是按照这个架构模式搭建的。个人觉得,其中设计的最核心内容是:文件的目录结构独立存储在一个主控服务器上,而具体文件数据,拆分成若干块,冗余的存放在不同的数据服务器上。存储目录结构的主控服务器,在GFS中称为Master,在HDFS中称为NameNode。这两个名字,叫得都有各自的理由,是瞎子摸象各表一面。 Master是之于数据服务器来叫的,它做为数据服务器的领导同志存在,管理各个数据服务器,收集它们的信息,了解所有数据服务器的生存现状,然后给它们分配任务,指挥它们齐心协力为系统服务;而NameNode是针对客户端来叫的,对于客户端而言,主控服务器上放着所有的文件目录信息,要找一个文件,必须问问它,由此而的此名。。。

主控服务器在整个集群中,同时提供服务的只存在一个,如果它不幸牺牲的话,会有后备军立刻前赴后继的跟上,但,同一时刻,需要保持一山不容二虎的态势。这种设计策略,避免了多台服务器间即时同步数据的代价,而同时,它也使得主控服务器很可能成为整个架构的瓶颈所在。因此,尽量为主控服务器减负,不然它做太多的事情,就自然而然的晋升成了一个分布式文件系统的设计要求。。。

每一个文件的具体数据,被切分成若干个数据块,冗余的存放在数据服务器。通常的配置,每一个数据块的大小为64M,在三个数据服务器上冗余存放(这个64M,不是随便得来的,而是经过反复实践得到的。因为如果太大,容易造成热点的堆叠,大量的操作集中在一台数据服务器上,而如果太小的话,附加的控制信息传输成本,又太高了。因此没有比较特定的业务需求,可以考虑维持此配置...)。数据服务器是典型的四肢发达头脑简单的苦力,其主要的工作模式就是定期向主控服务器汇报其状况,然后等待并处理命令,更快更安全的存放好数据。。。

此外,整个分布式文件系统还有一个重要角色是客户端。它不和主控服务和数据服务一样,在一个独立的进程中提供服务,它只是以一个类库(包)的模式存在,为用户提供了文件读写、目录操作等APIs。当用户需要使用分布式文件系统进行文件读写的时候,把客户端相关包给配置上,就可以通过它来享受分布式文件系统提供的服务了。

原创粉丝点击