- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
昨日,七牛数据平台工程师就七牛内部使用的数据平台,深入分享了该团队在Flume、Kafka、Spark以及Streaming上的实践经验,并讲解了各个工具使用的注意点。
分享人介绍:王团结, 七牛数据平台工程师,主要负责数据平台的设计研发工作。关注大数据处理,高性能系统服务,关注Hadoop、Flume、Kafka、Spark等离线、分布式计算技术。
下为讨论实录
数据平台在大部分公司属于支撑性平台,做的不好立刻会被吐槽,这点和运维部门很像。所以在技术选型上优先考虑现成的工具,快速出成果,没必要去担心有技术负担。早期,我们走过弯路,认为没多少工作量,收集存储和计算都自己研发,发现是吃力不讨好。去年上半年开始,我们全面拥抱开源工具,搭建自己的数据平台。
数据平台设计架构
公司的主要数据来源是散落在各个业务服务器上的半结构化的日志(系统日志、程序日志、访问日志、审计日志等)。大家有没考虑过为什么需要日志?日志是最原始的数据记录,如果不是日志,肯定会有信息上的丢失。说个简单的例子,需求是统计nginx上每个域名的的流量,这个完全可以通过一个简单的nginx模块去完成,但是当我们需要统计不同来源的流量时就法做了。所以需要原始的完整的日志。
有种手法是业务程序把日志通过网络直接发送出去,这并不可取,因为网络和接收端并不完全可靠,当出问题时会对业务造成影响或者日志丢失。对业务侵入最小最自然的方式是把日志落到本地硬盘上。
Agent设计需求
每台机器上会有一个agent去同步这些日志,这是个典型的队列模型,业务进程在不断的push,agent在不停的pop。agent需要有记忆功能,用来保存同步的位置(offset),这样才尽可能保证数据准确性,但不可能做到完全准确。由于发送数据和保存offset是两个动作,不具有事务性,不可避免的会出现数据不一致性情况,通常是发送成功后保存offset,那么在agent异常退出或机器断电时可能会造成多余的数据。
agent需要足够轻,这主要体现在运维和逻辑两个方面。agent在每台 机器上都会部署,运维成本、接入成本是需要考虑的。agent不应该有解析日 志、过滤、统计等动作,这些逻辑应该给数据消费者。倘若agent有较多的逻 辑,那它是不可完成的,不可避免的经常会有升级变更动作。
数据收集流程
数据收集这块的技术选择,agent 是用go自己研发的,消息中间件kafka,数据传输工具flume。说到数据收集经常有人拿flume和kafka做比较,我看来这两者定位是不同的,flume更倾向于数据传输本身,kakfa是典型的消息中间件用于解耦生产者消费者。
具体架构上,agent并没把数据直接发送到kafka,在kafka前面有层由flume构成的forward。这样做有两个原因
1. kafka的api对非jvm系的语言支持很不友好,forward对外提供更加通用的http接口
2. forward层可以做路由、kafka topic和kafka partition key等逻辑,进一步减少agent端的逻辑
forward层不含状态,完全可以做到水平扩展,不用担心成为瓶颈。 出于高可用考虑,forward通常不止一个实例,这会带来日志顺序问题,agent 按一定规则(round-robin、failover等)来选择forward实例,即使kafka partition key一样,由于forward层的存在,最终落入kafka的数据顺序和 agent发送的顺序可能会不一样。我们对乱序是容忍的,因为产生日志的业务 基本是分布式的,保证单台机器的日志顺序意义不大。如果业务对顺序性有要 求,那得把数据直接发到kafka,并选择好partition key,kafka只能保证 partition级的顺序性。
跨机房收集要点
多机房的情形,通过上述流程,先把数据汇到本地机房kafka 集群,然后汇聚到核心机房的kafka,最终供消费者使用。由于kafka的mirror对网络不友好,这里我们选择更加的简单的flume去完成跨机房的数据传送。
flume在不同的数据源传输数据还是比较灵活的,但有几个点需要注意
1. memory-channel效率高但可能有丢数据的风险,file-channel安全性高但性能不高。我们是用memory-channel,但把capacity设置的足够小,使内存中的数据尽可能少,在意外重启和断电时丢的数据很少。个人比较排斥file-channel,效率是一方面,另一个是对flume的期望是数据传输,引入file-channel时,它的角色会向存储转变,这在整个流程中是不合适的。通常flume的sink端是kafka和hdfs这种可用性和扩张性比较好的系统,不用担心数据拥堵问题。
您可能关注的文档
- GCQJ30-120架桥机计算书.docx
- GCS低压柜技术资料.doc
- GC—8-110KV柳圆变继电保护及自动装置现场运.doc
- GD32F10x到GD32F1x0-软件移植说明.docx
- GDL系列立式多级管道离心泵安装尺寸图及价格.doc
- GDP对中国股市的影响2.0.docx
- GE(通用电气)超声产品.doc
- GE-9F燃机设备缩写清单.doc
- GE-ME编程软件使用说明-.doc
- GDP的概念特点和计算方法.doc
- 小学科学:ESP8266智能插座电路原理与动手实践研究教学研究课题报告.docx
- 《金融开放浪潮下我国多层次监管体系构建与创新研究》教学研究课题报告.docx
- 区域教育质量监测中人工智能应用的数据质量分析与优化策略教学研究课题报告.docx
- 《金融科技监管中的数据治理与合规性要求》教学研究课题报告.docx
- 《3D打印技术在航空航天领域中的多材料制造与复合材料应用》教学研究课题报告.docx
- 《绿色金融发展中的政府职能与市场机制研究》教学研究课题报告.docx
- 《植物工厂多层立体栽培光环境调控技术对植物生长发育节律的调控机制探讨》教学研究课题报告.docx
- 销售团队年度业绩总结.docx
- 银行风险管理与金融危机防范.docx
- 银行网络攻击预警与快速响应机制.docx
最近下载
- 2022医院医疗机构开展违反中央八项规定精神突出问题专项治理的实施方案(详细版).pdf VIP
- 半导体工艺炉的炉门及半导体工艺炉.pdf VIP
- 测绘行业安全生产汇报.pptx VIP
- 半导体后端工艺半导体封装的作用、工艺和演变.docx VIP
- 半导体工艺原理--半导体工艺原理(贵州大学).ppt VIP
- 麦肯锡中国银行业CEO季刊(2020年秋)-麦肯锡-224页正式版.pdf VIP
- 走进潮汕文化ppt课件(优质ppt).pptx
- DG_TJ 08-2439-2024 建筑工程“多测合一”技术标准(正式版).pdf VIP
- Camera客观标准测试.pdf VIP
- 2024年湖北省恩施州恩施市六角亭街道招聘社区工作者真题参考答案详解.docx VIP
文档评论(0)