-
- 归档文件并不支持压缩,所以归档后文件和原文件总大小相当。
- 归档文件支持MapReduce 但是对于MapRecude 来时归档文件是透明的,虽然可以使得很多文件成为一个分片block 但并不能提高效率。
- 归档文件一旦创建不能修改,除非删除重建。
服务器 | 守护进程 | 说明 |
server1 | namenode | namenode节点 |
server2 | jobtracker | 任务主节点 |
server3 | secondary namenode | secondary namenode |
dserver1 | datanode tasktracker | 数据节点 |
dserver2 | datanode tasktracker | 数据节点 |
dsdrver3 | datanode tasktracker | 数据节点 |
(二)、MapReduce方向 JobTracker:跟NameNode 相比这个就是MapReduce 的master 负责调度分配每一个子任务task运行于TaskTracker上,如果发现有失败的task就重新分配其任务到其他节点。一般情况应该把JobTracker部署在单独的机器上。JobTracker与TaskTracker有心跳维系。 TaskTracker:TaskTracker 负责JobTracker分配的任务的运行(干活的)。 TaskTracker是运行在多个节点上的slaver服务。TaskTracker主动与JobTracker通信,接收作业,并负责直接执行每一个任务,为了减少网络带宽TaskTracker最好运行在HDFS的DataNode上。 说到作业了,自然离不开作业调度器,阐述一下MapReduce Job的作业调度器。 I、MapReduce默认的作业调度器是FIFO 即先进先出的: 即来了作业即把任务Put进一个队列中,然后异步任务会从这个队列中取出要执行的任务,遵循先进先出的规则。在这个FIFO中MapReduce支持把任务设置优先级,共分为5个优先级,但Job不支持抢占slot 所以设置的优先级就是让其插队,在没有运行的task中插队,已经在运行的task不做干预。这样能保证优先级高的任务提前运行。 1、VERY_HIGH 2、HIGH 3、NORMAL 默认是NORMAL 优先级。 4、LOW 5、VERY_LOW II、Fair Scheduler(公平调度器) 针对FIFO 来说不能很好的平衡多用户的作业调度。 多用户作业中,每个作业都被放在每个用户自己的作业池中,提交作业数超过另外一个用户的用户,不会因此而比后者获得更多的集群资源,可以用map和reduce任务槽数来定制作业池的最小容量,也可以将每个池设置全中。 Fair Scheduler 支持抢占,如果一个池在特定的一段时间内未得到公平的资源共享,它会中止(暂停)运行池中的得到过多资源的任务,以便把任务槽让给其它运行资源不足的池。需要设置属性 mapred.jobtracker.taskScheduler 设置为org.apache.hadoop.mapred.FairScheduler 上面是基本概念,具体配额在什么地方设置: 公平调度器有两处配置文件——算法参数在mapred-site.xml中设置,还有一个单独的称为配额文件(allocation file)的XML文件(fair-scheduler.xml),可以用来配置资源池、最小共享资源、运行作业限制和抢占超时时间。配额文件在运行期间会定期被重新加载,这可以让你修改资源池的设置而不用重启Hadoop集群。 对于仅需要在用户间获取等同共享的最小化安装,你就不需要去配置配额文件了。如果对配额文件进行了配置,你需要设置mapred-site.xml中的mapred.fairscheduler.allocation.file(下面描述)参数告诉调度器怎么去找到配额文件。如${HADOOP_CONF_HOME}/fair-scheduler.xml 公平调度器支持批量分配作业到相应的任务节点,但对于小的作业来说,反而造成任务的不均衡,比如只有6个task 我设置同时分配6个task到不同的节点,反而造成单一节点太忙碌,而其他节点无任务分配。 更多的说明再发行版的文档中有更多的介绍,此处了解概念即可。 III、Capacity Scheduler(计算能力调度器)(部分摘自董的博客),简单介绍,多了不说,我不是十分了解底层的结构。 Capacity Scheduler 支持一下特性: (1)计算能力保证。支持多个队列,某个作业可被提交到某一个队列中,每个对列可配置一定比例的计算资源。且所有提交到队列中的作业共享该队列中的资源 (2)灵活性。空闲资源会分配到那些未达到资源使用上限的的队列,当某个未到达资源上限的队列需要资源时,一旦出现空闲资源时,便会分配给他们。 (3)支持优先级。在单一队列中支持作业优先级调度,这点跟简单FIFO优先级调度是一致的。 (4)多重租赁。综合考虑多个约束,防止单个作业、用户独占队列或者集群中的资源 (5)基于资源调度。支持资源密集作业,允许作业资源的使用量高于默认值,进而可容纳不同资源需求的作业,当前仅支持内存资源的调度。 同样需要在mapred-site.xml中配置 mapred.jobtracker.taskScheduler 设置为 org.apache.hadoop.mapred.CapacityScheduler 如需简单基本最小化安装,不需要配额文件,否则跟Fair Scheduler 一样需要设置配额文件 mapred.fairscheduler.allocation.file 来指定配额文件 Capacity 配额文件 capacity-scheduler.xml 如:${HADOOP_CONF_HOME}/capacity-scheduler.xml