第12章 第1节 Hadoop

● 请你说一下分布式和集群的概念。

参考回答:

分布式:是指将不同的业务分布在不同的地方,集群:是指将几台服务器集中在一起,实现同一业务。分布式中的每一个节点,都可以做集群,而集群并不一定就是分布式的。集群有组织性,一台服务器垮了,其它的服务器可以顶上来,而分布式的每一个节点,都完成不同的业务,一个节点垮了,哪这个业务就不可访问了。

● Hadoop你也有了解的,那你有了解他的备份机制吧?请问怎么做到数据保持一致?

参考回答:

Hadoop备份机制:该方案利用Hadoop自身的Failover措施(通过配置dfs.name.dir),NameNode可以将元数据信息保存到多个目录。通常的做法,选择一个本地目录、一个远程目录(通过NFS进行共享),当NameNode发生故障时,可以启动备用机器的NameNode,加载远程目录中的元数据信息,提供服务。Hadoop中有个重要的工具就是HDFS分布式文件系统,那么在这种分布式环境下的数据一致性是如何保证呢?HDFS中,存储的文件将会被分成若干的大小一致的block(最后一个block的大小可能较小)分布式地存储在不同的机器上,那么就必须有一个角色来对这些数据进行管理,也就是NameNode节点,而存储这些block的结点我们称为DataNode,NameNode是用来管理这些元数据的。下面讲一个例子,在客户端上传文件时,NameNode如何保证数据的一直性。客户端上传文件时,NameNode首先往edits log文件中记录元数据的操作日志。与此同时,NameNode将会在磁盘做一份持久化处理(fsimage文件):他跟内存中的数据是对应的,如何保证和内存中的数据的一致性呢?在edits logs满之前对内存和fsimage的数据做同步(实际上只需要合并edits logs和fsimage上的数据即可,然后edits logs上的数据即可清除) 而当edits logs满之后,文件的上传不能中断,所以将会往一个新的文件edits.new上写数据,而老的edits logs的合并操作将由secondNameNode来完成,即所谓的checkpoint操作。那么什么时候checkpoint呢?一般由两种限制,一个是edits logs的大小限制,即fs.checkpoint.size配置,一个是指定时间,即fs.checkpoint.period配置 当然根据规定,大小的限制是优先的,规定edits文件一旦超过阈值,则不管是否达到最大时间间隔,都会强制checkpoint。

图片


猜你喜欢

转载自blog.51cto.com/15065850/2581370