你的数据如何价值最大化?
|
在上述代码中可以留意到,done 属性(只读 channel)是在真正调用到 Done 方法时才会去创建。需要配合 select-case 来使用。 timerCtx
在调用 context.WithTimeout 方法时,我们会涉及到 timerCtx 类型,其主要特性是 Timeout 和 Deadline 事件,源码如下:
context 本质 我们在基本特性中介绍了不少 context 的方法,其基本大同小异。看上去似乎不难,接下来我们看看其底层的基本原理和设计。
context 相关函数的标准返回如下: 什么是 context Go 语言的独有的功能之一 Context,最常听说开发者说的一句话就是 “函数的第一个形参真的要传 ctx 吗?”,第二句话可能是 “有没有什么办法不传,就能达到传入的效果?”,听起来非常魔幻。
在 Go 语言中 context 作为一个 “一等公民” 的标准库,许多的开源库都一定会对他进行支持,因为标准库 context 的定位是上下文控制。会在跨 goroutine 中进行传播: 当 MR 程序提交到客户端所在的节点时后 大致运行流程如下: 作业提交 Client 调用 job.waitForCompletion 方法 YarnRunner ,向整个集群提交MapReduce作业。Client 向 RM 申请一个作业id。 RM 给 Client 返回该 job 资源的提交路径和作业 id。 Client 提交jar包、切片信息和配置文件到指定的资源提交路径。 Client 提交完资源后,向 RM 申请运行 MrAppMaster。 作业初始化 当 RM 收到 Client 的请求后,将该 Task 添加到容量调度器中。 某一个空闲的 NodeManager 领取到该 Task 。 该 NodeManager 创建 Container,并产生 MRAppMaster。 下载 Client 提交的资源 到本地。 任务分配 MRAppMaster 向 RM 申请运行多个 MapTask 任务资源。 RM 将运行 MapTask 任务分配给俩 NodeManager。其中分配原则 是优先 jar 跟 数据在一台机器上,其次就尽可能在一个机房。最后 随便来个空闲机器。 任务运行 MR 向两个接收到任务的 NodeManager 发送程序启动脚本,这两个 NodeManager 分别启动MapTask,MapTask 对数据分区排序。 MrAppMaster 等待所有 MapTask 运行完毕后,向RM申请容器 运行ReduceTask。 ReduceTask 向 MapTask 获取相应分区的数据。 程序运行完毕后,MR会向RM申请注销自己。 进度和状态更新 YARN 中的任务将其进度和状态(包括counter)返回给应用管理器, 客户端每秒向应用管理器请求进度更新来展示给用户。 作业完成 除了向应用管理器请求作业进度外, 客户端每5秒都会通过调用 waitForCompletion() 来检查作业是否完成。作业完成之后, 应用管理器和Container会清理工作状态。作业的信息会被作业历史服务器存储以备之后用户核查。 4.3 资源调度器
目前,Hadoop作业调度器主要有三种:FIFO、Capacity Scheduler 和 Fair Scheduler。Hadoop2.7.2默认的资源调度器是Capacity Scheduler。 (编辑:柳州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

