热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

分布式基础架构中的DataPipeline

​DataPipeline,就是分布式系统里的数据传输,在大型互联网后端基础架构中,已

Data Pipeline,就是分布式系统里的数据传输,在大型互联网后端基础架构中,已经是重要的组成部分。其实从做数据仓库开始的ETL,就可以算做是Data Pipeline了,只不过随着互联网公司大数据处理的需求更加频繁,对于Data Pipeline的要求也越来越多样化和自动化。例如早期的Sqoop,Flume等,分别都用于数据管道传输,它们也着实解决了部分需求,但是,这些软件,都只是着眼于开发一个工具完成某项任务,而没有把Data Pipeline当作一个服务来运行,可以放到数据中心操作系统中去调度。这么做有什么好处呢?在大型分布式系统中,数据的传输多样化,给运维和开发工程师都造成了很大的困扰,例如Web服务器,各类数据库,搜索引擎,Hadoop,Storm,Spark,OLAP,它们之间都需要数据的传输,诚然,以日志为中心的基础架构设计可以解决部分问题,但也存在许多情况无法一切数据存储都围绕中心日志来做,服务化Data Pipeline,可以让这个工作变得不那么Dirty,自然也是DevOps理念的继续延伸。


Linkedin是在Data Pipeline和数据日志设计上最有心得的公司,开源的一系列软件包含日志型消息队列,CPC(Change Data Capture),等等都是从实践中提炼总结出来的系统。在以Java为核心后端的公司中,Linkedin/Netflix是笔者认为最值得学习的互联网公司,就在于分别对数据处理和云上构建架构的丰富实践经验和总结。早在2013年,Linkedin就放出了Camus这样一个系统,这是很少有人去关注的一个工具,因为它解决的是到Hadoop的Data Pipeline传输过程的写入事务。没有该工具时,因为序列化的缘故,在做数据传送时常常因为网络或者其他IO方面的原因而导致传输丢失,这让Flume或者其他自写工具的开发者很挠头,因为这意味着数据不得不经常手工重做,导致低效和巨大的人力浪费,而通过把Data Pipeline作为一个Hadoop上的Job并同时记录状态,就可以很方便的进行容错处理以及自动把高吞吐量的IO并行到不同节点处理,很轻松地就解决了这个小问题。Camus系统是Linkedin在Data Pipeline向自动化上努力的第一个产品。Data Pipeline要解决的另一个麻烦事是异构数据源,Linkedin的CPC系统Databus可以看做是在这上面的努力,但它更着眼于解决数据库数据传输的实时性和一致性,跟Data Pipeline还是有差异,因为后者对于延迟有时候要求并不很高(数据传输可以是流式执行,也可以是批处理),但对于异构数据源的支持却必不可少。


日本人在这方面颇有心得,很早就推出了fluentd这样用Ruby写成的系统,fluentd看上去跟Flume很像,但更加灵活,只需要几十行代码就可以为它添加数据源和数据传输目的地的插件实现。Fluentd的作者随后去了硅谷做了日志SaaS服务的大数据公司TreasureData,在本公众号前边的“盘点美帝大数据创业公司”一文中也有提及。Fluentd负责Data Pipeline的传输,但它还是跟Flume类似的系统,在其他方面考虑并不多。在2014年日本人还做了个工作叫做Embulk,目的是在提供Fluentd类似的灵活性的基础上,引入一些高级功能,包含:批量加载,并行执行,事务控制,数据验证,错误恢复,听起来仿佛Fluentd+Camus。


已经相当不错了,异构数据源(可任意编写输入输出插件),事务,并行执行,等等。不过,Linkedin今年VLDB上放出的Gobblin,可算得上更近一步,因为真正做到了服务化。


对于软件的使用和介绍,只需要看相关的文档即可。这里想要多提及的是,为了让Data Pipeline服务化,Gobblin都做了哪些工作。首先,Gobblin针对数据传输任务做了统一管理,在任务调度上可以跟Hadoop上的流行工作流引擎集成,例如Oozie,Azkaban,以及Mesos上的Chronos;其次,任务状态统一保存在Hadoop中,便于容错和中断恢复;最后,Gobblin通过Helix可以运行在Yarn中,因此,就彻底解决了统一资源管理的问题。


这里多提下最后一点。Helix是Linkedin针对分布式数据存储所抽象出来的公共需求而构建的系统,主要功能包含:资源管理,分区管理,容错设计,伸缩性管理,以及监控。总体上,Helix把分布式存储系统看做是一个状态机,因此暴露相关的接口方便不同的分布式存储系统进行状态迁移。例如,启动或者下线,节点增加或者减少,分区增加或者减少,以及各类异常情况等。利用Helix可以很方便的开发集群运行的程序,例如分布式数据库,在Github上有个Fullmatix项目就是一个拿Helix给MySQL做Sharding的例子。由于MySQL本身在高可用设计上的弱点(切换时容易丢数据),因此Fullmatix只能是一个简单的玩具项目,但它的确可以展现出如何给一个不具备Sharding的存储系统增加分布式集群管理功能并且做到好的可运维性。Helix可以在Yarn和Mesos上运行,由后者给它分配资源。


在Gobblin中对Helix的使用较为简单,因为没有涉及到分区处理,主要通过Helix来控制任务平均分配在从Yarn上获得的节点上,从而确保Gobblin任务运行的负载均衡和容错。


服务化运行的另外一点是监控设计,不论是Gobblin,还是Helix,都提供JMX输出Metrics的能力,因此这方面不多谈论。尽管Gobblin已经不错了,但是相比Embulk,Gobblin没有过多考虑输出端的需求,目前只是为Hadoop服务的,因此,这并不是说Gobblin就是终点了,需要改进的地方仍然会不断涌现并得到最终解决。






推荐阅读
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
  • Java工程师书单(初级,中级,高级)
    简介怎样学习才能从一名Java初级程序员成长为一名合格的架构师,或者说一名合格的架构师应该有怎样的技术知识体系,这是不仅一个刚刚踏入职场的初级程序员也是工作一两年之后开始迷茫的程序 ... [详细]
  • 基于,docker,快速,部署,多,需求,spark ... [详细]
  • 本文介绍了在Win10上安装WinPythonHadoop的详细步骤,包括安装Python环境、安装JDK8、安装pyspark、安装Hadoop和Spark、设置环境变量、下载winutils.exe等。同时提醒注意Hadoop版本与pyspark版本的一致性,并建议重启电脑以确保安装成功。 ... [详细]
  • 解决Cydia数据库错误:could not open file /var/lib/dpkg/status 的方法
    本文介绍了解决iOS系统中Cydia数据库错误的方法。通过使用苹果电脑上的Impactor工具和NewTerm软件,以及ifunbox工具和终端命令,可以解决该问题。具体步骤包括下载所需工具、连接手机到电脑、安装NewTerm、下载ifunbox并注册Dropbox账号、下载并解压lib.zip文件、将lib文件夹拖入Books文件夹中,并将lib文件夹拷贝到/var/目录下。以上方法适用于已经越狱且出现Cydia数据库错误的iPhone手机。 ... [详细]
  • GPT-3发布,动动手指就能自动生成代码的神器来了!
    近日,OpenAI发布了最新的NLP模型GPT-3,该模型在GitHub趋势榜上名列前茅。GPT-3使用的数据集容量达到45TB,参数个数高达1750亿,训练好的模型需要700G的硬盘空间来存储。一位开发者根据GPT-3模型上线了一个名为debuid的网站,用户只需用英语描述需求,前端代码就能自动生成。这个神奇的功能让许多程序员感到惊讶。去年,OpenAI在与世界冠军OG战队的表演赛中展示了他们的强化学习模型,在限定条件下以2:0完胜人类冠军。 ... [详细]
  • 2016 linux发行版排行_灵越7590 安装 linux (manjarognome)
    RT之前做了一次灵越7590黑苹果炒作业的文章,希望能够分享给更多不想折腾的人。kawauso:教你如何给灵越7590黑苹果抄作业​zhuanlan.z ... [详细]
  • BPM是什么软件?1、BPM是BusinessProcessManagement的简称,译为业务流程管理,它是一种以规范化的构造端到端的卓越业务流程为中心以持续的提高组织业务绩效为 ... [详细]
  • 朱晔的互联网架构实践心得S1E7:三十种架构设计模式(上)【下载本文PDF进行阅读】设计模式是前人通过大量的实践总结出来的一些经验总结和最佳实践。在经过多年的软件开发实践之后,回过头 ... [详细]
  • 博客_2018年博客总结
    本文由编程笔记#小编为大家整理,主要介绍了2018年博客总结相关的知识,希望对你有一定的参考价值。前言     ... [详细]
  • bat大牛带你深度剖析android 十大开源框架_请收好!5大领域,21个必知的机器学习开源工具...
    全文共3744字,预计学习时长7分钟本文将介绍21个你可能没使用过的机器学习开源工具。每个开源工具都为数据科学家处理数据库提供了不同角度。本文将重点介绍五种机器学习的 ... [详细]
author-avatar
手浪用户2602914837
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有