Hadoop分别从两个角度将主机划分为两种角色。

最基本的划分原则为Master和Slave,即主人和奴隶;

第一,从HDFS的角度,将主机划分为NameNode和DataNode(在分布式文件系统中,目录的管理很重要,管理目录相当于主人,而NameNode就是目录管理者);​

NameNode是主节点,存储文件的元数据如文件名,文件目录结构,文件属性(生成时间,副本数,文件权限),以及每个文件的块列表以及块所在的DataNode等等。它是一个中心服务器,单一节,负责管理文件系统的名字空间(namespace)以及客户端对文件的访问,它维护着每个文件系统树和整棵树内所有的文件和目录,这些信息已两个文件形式永久保存在本地磁盘上:命名控件镜像文件(Fsimage)和编辑日志(Edit log)。​

DataNode在本地文件系统存储文件块数据,以及块数据的校验和。可以创建、删除、移动或重命名文件,当文件创建、写入和关闭之后不能修改文件内容。一个数据块在DataNode以文件存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包括数据块的长度,块数据的校验和,以及时间戳。DataNode启动后向NameNode注册,通过后,周期性(1小时)向NameNode上报所有的块信息。心跳是每3秒一次,心跳返回结果带有NameNode给该DataNode的命令如复制块数据到另一台机器,或删除某个数据块。如果超过10分钟没有收到某个DataNode 的心跳,则认为该节点不可用。

文件操作,NameNode负责文件元数据的操作,DataNode负责处理文件内容的读写请求,跟文件内容相关的数据流不经过NameNode,只会询问它跟那个DataNode联系,否则NameNode会成为系统的瓶颈

第二,从MapReduce的角度,将主机划分JobTracker 和TaskTracker(一个job经常被划分为多个Task,从这个角度不难理解它们之间的关系)​;

在MapReduce中作业(Job)是客户端需要执行的工作单元,它包含了输入数据、MapReduce程序和配置信息。Hadoop将作业分为若干个小任务(task)来执行,其中每个小任务又分为Map任务和Reduce任务。两类节点控制着作业执行过程:一个JobTracker和多个TaskTracker。

JobTracker主要就是调度TaskTracker来运行小任务,协调所有运行在系统上的作业。TaskTracker在运行小任务的时候,将进度报告给JobTracker,这样一旦发生错误,就由JobTracker来负责调度另一个TaskTracker。TaskTracker每隔3秒向JobTracker发送心跳来询问是否有任务可做,如有则让你分发任务给它,此时就是slave主动向master咨询。

最新文章

  1. OpenCascade B-Spline Basis Function
  2. 网页中tab标签切换分别用jquery和javascript源码实现
  3. .NET client connection Limit
  4. java代码优化
  5. MyBatis学习--简单的增删改查
  6. bzoj4349: 最小树形图&&bzoj2260: 商店购物
  7. JNI开发流程-JNI/NDK【转】
  8. js中tagName和nodeName
  9. hibernate之自定义持久化实现
  10. svn之——linux下清除svn的用户名和密码
  11. ValueStack背后的OGNL表达式
  12. 175. Combine Two Tables【LeetCode】-LEFT JON 和RIGHT JOIN,两张表关联查询-java -sql入门
  13. 关于百度DNS的解析过程
  14. Scheme call/cc 研究
  15. 学习--->更新集合/内存/深浅拷贝
  16. js数组方法大全
  17. qt quick-初始学习概念
  18. ctrl + alt + T无法启动终端
  19. poj1703 Find them, Catch them(并查集)
  20. webpack笔记

热门文章

  1. IO 复习笔记
  2. dojo 官方翻译 dojo/aspect
  3. 网络:W5500用浏览器配置设备
  4. Oracle 集合操作
  5. React Native之Fetch简单封装、获取网络状态
  6. invalid derived query的解决办法
  7. Hibernate -- 项目结构模型改造, 加 Utils 和 Dao层
  8. MySQL主从配置实现
  9. Spark- 使用第三方依赖解析IP地址
  10. Python 导出数据from Mysql