设为首页 收藏本站
查看: 1151|回复: 0

[经验分享] Hadoop应用设计的思考

[复制链接]

尚未签到

发表于 2016-12-8 06:59:02 | 显示全部楼层 |阅读模式
  最近的事确实很多,但大部分精力都放在了项目的设计方面,最近几天才完成了一些初步的编码的工作。在这个阶段,我发现,需要对数据的录入和Job执行的管理做细致的规划,否则在后期的扩展性上将有很大的局限。我设计的框架大体如下:
DSC0000.gif


在这个结构里面,可以明显的看到我采用了2种Client,一个是数据录入层,一个是Job管理层。这里我说明一下为什么需要这2种Client。

1、数据录入主要接收数据,数据有多种形式传输,有流模式也有文件模式,为了不影响TaskTracker的性能,我采用Client单独的录入数据。

2、对于Job管理,因为Job任务有先后的顺序管理,而且对于失败的Job需要做重新的尝试,同时还要做到对Job的监控以及执行Job的增删。所以我单独采用一个Client对Job进行管理。实现Job执行的流程控制、状态反馈处理以及Job的热拔插。后面会详细说明。

到这里,可以看到,集群的应用我分成了3个部分。数据录入端、集群以及Job管理端。接下来我说下数据录入和Job管理的内容。

一、数据录入端

      在这个部分主要就是对数据进行接收,然后将数据进行简单的时间区分,然后根据指定的时间和条件录入到集群中指定的目录下。例如,时间目录、数据来源目录以及地域目录等等。在这个部分实际上没有什么特别的描述,主要就是接收数据的形式方面,采用了流模式,提升传输的速度。对于一些延迟或是传输失败的数据采用文件搬运的模式。数据接收到本地之后采用Hadoop的API将数据录入到集群中。

二、Job管理端

对于这个部分,主要有以下功能点:

1、Job顺序控制。由于一个业务不可能是一个Job完成,可能需要多个Job来执行,先后存在一些依赖关系,所以通过对Job顺序的控制来完成一组业务。这个通过读取JobList的配置文件来确定先后顺序。

2、Job任务监控。同样,在这个部分主要是采用JobClient来实现。这里就不做细致的代码说明,查看Hadoop的API有详细的说明。如果确实需要代码可以发邮件给我。

3、实现Job的热拔插。由于业务分析的多变,所以需要对Job随时进行一些增删。例如一些Job可能需要新增加,而又有一些Job需要删除不执行。所以这个时候通过配置JobList清单就可以控制Job执行的顺序以及哪些Job执行哪些Job不执行。这样的操作不需要重启任何程序。

4、调度模式。每个业务可能需要多个Job,但是业务之间基本不存在依赖的关系,所以,这个时候,一个业务内的Job就需要实现FIFO模式,也就是顺序执行。但是对于业务之间,我们则需要考虑并发模式,也就是公平调度(公平调度模式需要配置,Hadoop默认是FIFO模式)。在集群支持公平调度模式的情况下,在Job管理端可以实现不同业务下Job的并发执行。
DSC0001.gif

  如上图:

1、所有的Business是可以并发的。但是同一个Business下的Job必须是顺序执行,因为存在依赖关系。

2、Job A、Job B、Job C是必须FIFO模式执行。而不同业务下的Job又是可以并发执行。

三、总结

1、分离出来的2种client有利于提升性能,同时具有良好的维护性。

2、Job的管理更加灵活。数据录入相对稳定。集群的计算影响减小。

3、当然,这里还没有提到如何将数据录入到RDBMS中,实际上,一个业务执行完成之后就会将结果数据录入到对应的RDBMS表中。

4、一些代码的编写基本上采用了Java,主要是考虑能更好的调用Hadoop的API。当然中间有些流程也采用了Shell脚本。

5、大体上设计内容如上,如果大家有疑问或是觉得我写的不对的地方欢迎大家发邮件交流。dajuezhao@gmail.com

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-311057-1-1.html 上篇帖子: 《hadoop》权威指南 MapReduce 下篇帖子: Hadoop的MultipleOutputFormat使用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表