- 博客(45)
- 资源 (1)
- 问答 (1)
- 收藏
- 关注
原创 MRAppMaster启动Task步骤简述
MRAppMaster启动Container步骤简述步骤1:MRAppMaster启动后,会为应用程序创建JobImpl,然后根据Map Task和Reduce Task的数量创建对应的TaskImpl.  然后是启动job,创建与Map Task和Reduce Task的同数量的TaskAttemptImpl(TaskAttemptImpl的实现有MapTaskAttemptIm...
2018-12-08 16:53:45
728
原创 AM启动--AMLauncher(六)
AMLauncherpublic class AMLauncher implements Runnable {...省略...@SuppressWarnings("unchecked") public void run() { switch (eventType) { case LAUNCH: try { LOG.info(&
2018-12-04 13:08:03
752
原创 AM启动--ApplicationMasterLauncher(五)
ApplicationMasterLauncher/** * ApplicationMasterLauncher即是一个服务,也是一个事件处理器,它处理AMLauncherEventType类型的事件,该类型事件有两种,分别是请求启动一个ApplicationMaster的LAUNCH事件和请求清理一个ApplicationMaster的CLEANUP事件. *ApplicationMas...
2018-12-04 13:06:28
619
原创 AM启动--AttemptStoredTransition(四)
AttemptStoredTransition主要逻辑步骤:    1.将在AttemptStartedTransition中创建的ClientToken记录到ClientToAMTokenSecretManagerInRM的列表masterKeys中 &n
2018-12-03 13:52:17
211
原创 AM启动--StoreAppAttemptTransition(三)
StoreAppAttemptTransition     1.将AppAttempt状态存储到共享存储系统  &
2018-12-03 13:37:06
217
原创 AM启动--AMContainerAllocatedTransition(二)
AMContainerAllocatedTransition主要逻辑步骤:     1.用sc
2018-12-03 13:32:52
462
原创 AM启动--ContainerStartedTransition(一)
ContainerStartedTransition单纯,代码清单:private static final class ContainerStartedTransition extends BaseTransition { @Override public void transition(RMContainerImpl container, RMContaine...
2018-11-30 17:25:56
287
原创 CapacityScheduler --ApplicationMaster资源分配
CapacityScheduler --ApplicationMaster资源分配   资源分配是被动分配的方式,在数
2018-11-30 17:01:15
1301
原创 ScheduleTransition(详见9)
ScheduleTransition@VisibleForTesting public static final class ScheduleTransition implements MultipleArcTransition<RMAppAttemptImpl, RMAppAttemptEvent, RMAppAttemptState&
2018-11-27 14:25:59
317
原创 Capacity Scheduler--APP_ATTEMPT_ADDED事件的处理(详见8)
Capacity Scheduler简述Capacity Scheduler1.应用程序初始化  &
2018-11-23 17:50:54
743
原创 向ApplicationMasterService注册AppAttempt
向ApplicationMasterService注册AppAttempt代码清单:public void ApplicationMasterService.registerAppAttempt(ApplicationAttemptId attemptId) { AllocateResponse response = recordFactory.newRecordIns...
2018-11-23 10:57:42
523
原创 AttemptStartedTransition(详见7)
AttemptStartedTransition主要逻辑:向ApplicationMasterService注册AppAttempt触发SchedulerEventType.APP_ATTEMPT_ADDED事件代码清单private static final class AttemptStartedTransition extends BaseTransition { @Over...
2018-11-23 10:47:39
249
原创 StartAppAttemptTransition(详见6)
StartAppAttemptTransition单纯,上代码清单,主要逻辑:创建RMAppAttemptRMAppImpl会维护一个ApplicationAttemptId, RMAppAttempt的映射表触发RMAppStartAttemptEvent (RMAppAttemptEventType.START)事件private static final class Start...
2018-11-23 10:39:38
338
原创 Capacity Scheduler--APP_ADDED事件的处理(详见5)
Capacity Scheduler简述Capacity Scheduler1.应用程序初始化  &
2018-11-22 18:00:00
428
1
原创 AddApplicationToSchedulerTransition(详见4)
AddApplicationToSchedulerTransition单纯,直接上代码清单: private static final class AddApplicationToSchedulerTransition extends RMAppTransition { @Override public void transition(RMAppImpl app, ...
2018-11-22 17:59:38
343
1
原创 StoreAppTransition(详见3)
StoreAppTransition单纯,直接上代码清单private static class StoreAppTransition implements MultipleArcTransition<RMStateStore, RMStateStoreEvent, RMStateStoreState> { @Ove
2018-11-22 15:52:23
342
原创 ApplictionId的生成
ApplictionId的生成ApplicationId主要包括两部分:clusterTimestamp和id.是在客户端提交应用程序前,随着rpc方法getNewJobID获取jobId时生成的.而JobID只是applicationId的简单包装.其中clusterTimestamp是ResourceManager的启动时间.而id是一个递增的整数类型.clusterTimestamp...
2018-11-22 15:51:21
733
原创 RMAppNewlySavingTransition(详见2)
经过RMAppNewlySavingTransition后,RMApp的状态由NEW转为NEW_SAVING.根据提交上下文创建应用程序状态数据结构(主要是提交时间,启动事件,提交上下文,提交用户等),然后触发RMStateStoreEventType.STORE_APP事件,STORE_APP事件处理器会把应用程序数据存储到ZK上.
2018-11-20 15:49:07
246
原创 rmAppManager.submitApplication详解(详见1)
rmAppManager.submitApplication详解submitApplication功能简要说明:创建RMAppImpl,然后将RMAppImpl放入ApplicationAclsManager触发RMAppEventType.START事件代码清单@SuppressWarnings("unchecked&
2018-11-20 15:48:24
1157
原创 hadoop初读--写数据时的数据流管道双向机制
为了保证分布式数据的一致性和完整性,hadoop写数据流时使用了写数据和应答的双向机制. 这里着重说明的是反向应答其实是分为两部分: 1.写请求答应: 正常情况下,这个应答会从管道的最后一个数据节点开始,往客户端方向发送,管道上的每一个节点都会等待这个应答,收到应答后,才会开始接受数据,也就是说,客户端会等待这个应答,然后才开始发送数据。这个应答是同步的,即直到收到应答后
2017-11-13 11:16:35
858
原创 hadoop初读--Packet.getBuffer()
hadoop初读–Packet.getBuffer()下面主要结合小数据(写不满一个packet)或者lastPacket的场景记录下getBuffer方法实现,主要还是以注释和图解的方式.ByteBuffer getBuffer() { if (buffer != null) { return buffer; } //chunkData长度 in
2017-11-02 16:55:09
570
原创 hadoop初读--setInputFormatClass
鉴于平时的hadoop实践问题或粗读hadoop源码而记录形成”hadoop初读”系列部分。每篇主要以问题-解答两部分组成:问题是实践中的异常或疑惑;解答部分为源码的粗读理解(以注释形式给出说明)。问题代码(主要实现多输入,报No input paths specified in job):import java.io.IOException;import java.net.URI;import
2017-06-01 17:57:07
3965
原创 sqoop1.99.7create job的注意点
前人博客本文大部分内容拷贝自”前人博客”,因为sqoop的交互实在太不友好了,针对创建job的实践中遇到的问题整理了下,以便有些同学也掉入坑中。红色部分是本人修改和补充(也是坑人需要着重说明)的地方。以下是各个属性Name:一个标示符,自己指定即可。Schema Name:指定Database或Schema的名字,在MySQL中,Schema同Database类似,具体什么区别没有深究过,但官网描述
2017-05-26 16:50:05
1566
原创 sqoop1.99.7自定义分隔符
sqoop1.99.7自定义分隔符源码在下载二进制包的url下就有,修改的地方:SqoopIDFUtils.toCSVString(String str)如下,注释的是原有代码,下一行是改的代码: 1.去掉字符串头尾的单引号:StringBuilder sb1 = new StringBuilder(); StringBuilder sb2 = new StringBuilder();
2017-05-22 12:13:26
1263
原创 读webpy源码-请求响应2
续”读webpy源码-请求响应1”,这篇大概讲下respond。def communicate(self): request_seen = False try: while True: req = None req = self.RequestHandlerClass(self.server,
2017-02-10 11:56:11
335
原创 读webpy源码-请求响应1
上一篇简述了webpy响应流程过程,这里着重讲下可能大家关心的细节点。运行时启动一个socket(默认8080端口),当在浏览器请求url发起时,就是向这个socket发送了http协议的报文。socket收到后会解析包装成request对象,然后调用application的方法返回。后面主要看看解析做了什么?响应又是怎么做的?本人的主要思路是: 在哪里解析出url
2017-02-10 10:19:12
485
原创 python总结小计
python总结小计不宜搭建用户级的系统,因为:CPython(python解释器)的一个局限就是每个Python函数调用都会产生一个C函数调用.(从计算机科学的角度来说, 我们在讨论栈帧). 这意味着同时产生的函数调用是有限制的,因此Python难以实现用户级的线程库和复杂递归应用. 一旦超越这个限制,程序就会崩溃. 1.异常处理1) raise 用法、场景(待)2)
2017-01-07 12:02:28
282
原创 读webpy源码-请求响应概述
项目中启动应用的代码入口上述代码是项目启动应用的入口 if name=="main": app = web.application(urls, globals()) app.add_processor(web.loadhook(session_hook)) app.add_processor(web.unloadhook(request_unlock_hook)) app.run()
2016-12-01 15:41:28
393
读webpy源码-请求响应概述
web.py源码主体流程认识简要内部流程图 1.上述代码是项目启动应用的入口:if __name__=="__main__": app = web.application(urls, globals()) #session_hook为自定义方法(hook) app.add_processor(web.loadhook(session_hook)) #request_un...
2016-12-01 15:41:00
221
原创 git提交人切换
因为某些原因需要切换git用户提交代码,通过git config 命令修改了user.name和user.email后 gitlab服务器上提交用户还是显示老用户.这种情况下通过whereis git找到git 安装目录(目录下有git-credential-osxkeychain文件)或者直接通过sudo find / -name 'git-credential-osxkeychain'文件
2016-11-11 14:47:47
682
git提交人切换
因为某些原因需要切换git用户提交代码,通过git config 命令修改了user.name和user.email后 gitlab服务器上提交用户还是显示老用户.这种情况下通过whereis git找到git 安装目录(目录下有git-credential-osxkeychain文件)或者直接通过sudo find / -name 'git-credential-osxkeychain'文件...
2016-11-11 14:47:00
394
原创 修饰器-py
1.装饰器-打印method打印时间的简短装饰器:import datetimefrom functools import wrapsdef runTimeFunc_args(args): def func_wrapper(func): @wraps(func) def return_wrapper(*callvarargs, **callke
2016-10-11 09:33:19
244
修饰器-py
1.装饰器-打印method打印时间的简短装饰器:import datetimefrom functools import wrapsdef runTimeFunc_args(args): def func_wrapper(func): @wraps(func) def return_wrapper(*callvarargs, **callke...
2016-10-11 09:33:00
120
原创 python实用但容易遗忘的tips
>>> string.letters'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'>>> string.digits'0123456789'
2016-09-24 10:18:23
221
python实用但容易遗忘的tips
>>> string.letters'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'>>> string.digits'0123456789'###字典初始化>>> {}.fromkeys('xyz'){'y':None,'x':None,'z'...
2016-09-24 10:18:00
92
原创 web.db下获取select后返回的column列表
import webfrom DBUtils.PooledDB import PooledDBimport MySQLdbfrom models.logger import base_loggingclass mallDb: def __init__(self, conn_dict): myDbn = conn_dict['db_type']
2016-09-24 10:14:53
253
web.db下获取select后返回的column列表
sqlTxt = ''' select * from table_a where staff_no = ${staff_no} ''' results =self.myDb.query(sqlTxt, vars={'staff_no':staff_no}) rs = results.i.gi_frame.f_locals["name...
2016-09-24 10:14:00
139
原创 python-日期
import calendarimport datetimeimport timeclass dateutils: ''' 获取上月日期(具体哪一天可通过参数day自定义,默认是1号) ''' @staticmethod def query_last_month_day(day=None): ''' :pa
2016-09-18 19:46:01
207
addStoredBlock的block != storedBlock的引用判断
2018-01-11
TA创建的收藏夹 TA关注的收藏夹
TA关注的人