-
Notifications
You must be signed in to change notification settings - Fork 0
Track reload cmdlets #1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: HA-cmdlet
Are you sure you want to change the base?
Conversation
|
添加track逻辑后可避免untrack为null的异常检查,并且在ec与unec过程中切换HA,添加track逻辑可避免提交重复任务。 |
|
待解决问题: |
|
这个patch基本可以,确实之前遗漏了对recovered action的跟踪. 之前提及的多次重启仍然重复执行的问题,可能是一个regress issue,源自cmdlet没有被设定为完成状态.
另外,SSM的设计思路是,允许出现失败的任务,只要是可以解释的,如重复提交的任务,这在某些情况下是可以接受的,除非说重复提交的任务产生了温度丢失等后果.之前设计的加上tracker来尽力减少重复提交的任务,主要是为了减少不必要的系统压力. |
|
例如一个小文件合并任务合并200个文件,操作的文件对象从1到200。当合并过程中出现了HA切换,假如已合并到了第30个文件。HA切换后,之前中断的任务将继续执行,但这时规则会提交一个新的合并任务,这个任务的操作文件是从31到200,从而造成了冲突。 |
|
SSM的设计思路没有问题,之前设计的tracker机制主要是为了防止在cmdlet执行过程中提交重复的cmdlet。而以小文件合并规则为例,在RuleExecutor#submitCmdlets方法中会获取可操作的文件,获取过程在SmallFilePlugin#preSubmitCmdlet方法中利用FileState筛选文件。但当HA出现切换后,虽然tracker机制添加了重新执行的cmdlet,但是新提交的cmdlet的操作文件已与上一个cmdlet不同,所以无法拦截。在SmallFileScheduler#onSubmit阶段也没有检查出错,在SmallFileScheduler#getCompactScheduleResult阶段会出现报错,但是ScheduleResult.FAIL状态没有得到处理。并且,会出现HDFS lease被占用问题。最终虽然完成了所有文件的合并,但造成了部分文件热度丢失及空的container文件,因此如果能够在HA切换后避免提交重复的合并任务,应该可以解决该问题。 |
|
I will export and apply this patch to my branch with few code changed. Thanks! |





No description provided.