如何制作网站详细教程,怎么做网页链接图片,营销网站制作全包,wordpress标题设置一、第一代hadoop组成与结构第一代Hadoop#xff0c;由分布式存储系统HDFS和分布式计算框架MapReduce组成#xff0c;其中#xff0c;HDFS由一个NameNode和多个DataNode组成#xff0c;MapReduce由一个JobTracker和多个TaskTracker组成#xff0c;对应Hadoop版本为Hadoop …一、第一代hadoop组成与结构第一代Hadoop由分布式存储系统HDFS和分布式计算框架MapReduce组成其中HDFS由一个NameNode和多个DataNode组成MapReduce由一个JobTracker和多个TaskTracker组成对应Hadoop版本为Hadoop 1.x和0.21.X0.22.x。 1、MapReduce角色分配 Client 作业提交发起者。 JobTracker: 初始化作业分配作业与TaskTracker通信协调整个作业。 TaskTracker保持JobTracker通信在分配的数据片段上执行MapReduce任务。 2、MapReduce执行流程 1提交作业 在作业提交之前需要对作业进行配置 程序代码主要是自己书写的MapReduce程序。 输入输出路径 其他配置如输出压缩等。 配置完成后通过JobClinet来提交2作业的初始化 客户端提交完成后JobTracker会将作业加入队列然后进行调度默认的调度方法是FIFO调试方式。3任务的分配 TaskTracker和JobTracker之间的通信与任务的分配是通过心跳机制完成的。 TaskTracker会主动向JobTracker询问是否有作业要做如果自己可以做那么就会申请到作业任务这个任务可以使Map也可能是Reduce任务。4任务的执行 申请到任务后TaskTracker会做如下事情 拷贝代码到本地 拷贝任务的信息到本地 启动JVM运行任务5状态与任务的更新 任务在运行过程中首先会将自己的状态汇报给TaskTracker然后由TaskTracker汇总告之JobTracker。 任务进度是通过计数器来实现的。6作业的完成 JobTracker是在接受到最后一个任务运行完成后才会将任务标志为成功。 此时会做删除中间结果等善后处理工作。二、第二代hadoop组成与结构第二代Hadoop为克服Hadoop 1.0中HDFS和MapReduce存在的各种问题而提出的。针对Hadoop 1.0中的单NameNode制约HDFS的扩展性问题提出了HDFS Federation它让多个NameNode分管不同的目录进而实现访问隔离和横向扩展针对Hadoop 1.0中的MapReduce在扩展性和多框架支持方面的不足提出了全新的资源管理框架YARN(Yet Another Resource Negotiator)它将JobTracker中的资源管理和作业控制功能分开分别由组件ResourceManager和ApplicationMaster实现其中ResourceManager负责所有应用程序的资源分配而ApplicationMaster仅负责管理一个应用程序。对应Hadoop版本为Hadoop 0.23.x和2.x。1、 yarn运行架构YARN 是下一代Hadoop计算平台如下所示 在 YARN 架构中一个全局ResourceManager 以主要后台进程的形式运行它通常在一台独立机器上运行在各种竞争的应用程序之间仲裁可用的集群资源。ResourceManager会追踪集群中有多少可用的活动节点和资源协调用户提交的哪些应用程序应该在何时获取这些资源。ResourceManager是惟一拥有此信息的进程所以它可通过某种共享的、安全的、多租户的方式制定分配或者调度决策例如依据应用程序优先级、队列容量、ACLs、数据位置等。在用户提交一个应用程序时一个称为ApplicationMaster的轻量型进程实例会启动来协调应用程序内的所有任务的执行。这包括监视任务重新启动失败的任务推测性地运行缓慢的任务以及计算应用程序计数器值的总和。这些职责以前是分配给单个 JobTracker来完成的。ApplicationMaster和属于它的应用程序的任务在受NodeManager控制的资源容器中运行。NodeManager是TaskTracker的一种更加普通和高效的版本。没有固定数量的 map 和 reduce slotsNodeManager 拥有许多动态创建的资源容器。容器的大小取决于它所包含的资源量比如内存、CPU、磁盘和网络 IO。目前仅支持内存和 CPU (YARN-3)。一个节点上的容器数量由节点资源总量比如总CPU数和总内存共同决定。需要说明的是ApplicationMaster可在容器内运行任何类型的任务。例如MapReduce ApplicationMaster请求一个容器来启动map或reduce 任务而 Giraph ApplicationMaster请求一个容器来运行Giraph任务。我们还可以实现一个自定义的 ApplicationMaster 来运行特定的任务进而发明出一种全新的分布式应用程序框架改变大数据格局。在YARN中MapReduce降级为一个分布式应用程序的一个角色但仍是一个非常流行且有用的角色现在称为 MRv2。MRv2 是经典MapReduce引擎称为 MRv1的重现运行在YARN之上。2、YARN可运行任何分布式应用程序ResourceManager、NodeManager 和容器都不关心应用程序或任务的类型。所有特定于应用程序框架的代码都会转移到ApplicationMaster以便任何分布式框架都可以受 YARN 支持。得益于这个一般性的方法Hadoop YARN集群可以运行许多不同分布式计算模型例如MapReduce、Giraph、Storm、Spark、Tez/Impala、MPI等。3、YARN中提交应用程序下面讨论在应用程序提交到YARN集群时ResourceManager、ApplicationMaster、NodeManagers和容器如何相互交互。下图显示了一个例子。 假设用户采用与MRv1中相同的方式键入hadoop jar命令将应用程序提交到 ResourceManager。ResourceManager维护在集群上运行的应用程序列表以及每个活动的 NodeManager上的可用资源列表。ResourceManager 需要确定哪个应用程序接下来应该获得一部分集群资源。该决策受到许多限制比如队列容量、ACL 和公平性。ResourceManager 使用一个可插拔的 Scheduler。Scheduler 仅执行调度它管理谁在何时获取集群资源以容器的形式但不会对应用程序内的任务执行任何监视所以它不会尝试重新启动失败的任务。在 ResourceManager接受一个新应用程序提交时Scheduler制定的第一个决策是选择将用来运行ApplicationMaster的容器。在 ApplicationMaster启动后它将负责此应用程序的整个生命周期。首先也是最重要的是它将资源请求发送到 ResourceManager请求运行应用程序的任务所需的容器。资源请求是对一些容器的请求用以满足一些资源需求比如 一定量的资源目前使用MB内存和CPU份额来表示 一个首选的位置由主机名、机架名称指定 此应用程序中的一个优先级而不是跨多个应用程序如果可能的话ResourceManager 会分配一个满足ApplicationMaster在资源请求中所请求的容器表达为容器 ID和主机名。该容器允许应用程序使用特定主机上给定的资源量。分配一个容器后ApplicationMaster会要求NodeManager管理分配容器的主机使用这些资源来启动一个特定于应用程序的任务。此任务可以是在任何框架中编写的任何进程比如一个 MapReduce 任务或一个Giraph任务。NodeManager 不会监视任务它仅监视容器中的资源使用情况例如如果一个容器消耗的内存比最初分配的更多它会结束该容器。ApplicationMaster会竭尽全力协调容器启动所有需要的任务来完成它的应用程序。它还监视应用程序及其任务的进度在新请求的容器中重新启动失败的任务以及向提交应用程序的客户端报告进度。应用程序完成后ApplicationMaster 会关闭自己并释放自己的容器。尽管ResourceManager不会对应用程序内的任务执行任何监视但它会检查 ApplicationMaster的健康状况。如果 ApplicationMaster失败ResourceManager 可在一个新容器中重新启动它。我们可以认为ResourceManager负责管理ApplicationMaster而 ApplicationMasters负责管理任务。