第第1212期期《《新一代互联网行为定向广告技术的挑新一代互联网行为定向广告技术的挑战与优化战与优化--》》--Copyright@2012iPinyouAllRightsReserved.品品友互动友互动专场专场群:83304912的ETL任务—Flume使用及其优化Copyright@2012iPinyouAllRightsReserved.—Flume使用及其优化汪浩目录Copyright@2012iPinyouAllRightsReserved.背景介绍LogWebServerWebServerCopyright@2012iPinyouAllRightsReserved.WebServerWebServer背景介绍Copyright@2012iPinyouAllRightsReserved.日志收集系统介绍Copyright@2012iPinyouAllRightsReserved.日志收集系统介绍——ScribeCopyright@2012iPinyouAllRightsReserved.日志收集系统介绍——ChukwaCopyright@2012iPinyouAllRightsReserved.日志收集系统介绍——FlumeCopyright@2012iPinyouAllRightsReserved.日志收集系统介绍——Flume•Flume基本概念数据路径-Nodes在数据路径上-Nodes上存在Source和SinkCopyright@2012iPinyouAllRightsReserved.-Nodes上存在Source和Sink-Nodes可以设置为不同的角色控制路径-心跳检测-指定Sources和Sinks-控制Nodes间的数据流日志收集系统介绍——FlumeCopyright@2012iPinyouAllRightsReserved.日志收集系统介绍——Flume•Flume可扩展性1.Flume易于扩展的原因-简单的Source和SinkAPIs-基于事件流的设计易于把简单的操作组合成复杂的操作Copyright@2012iPinyouAllRightsReserved.-基于事件流的设计易于把简单的操作组合成复杂的操作-插件式的架构易于用户使用自己编写的Sources、Sinks和Decorators日志收集系统介绍——Flume•Flume可扩展性2.Connector的种类-Sources(产生数据)Console、Exec、Syslog、Scribe、IRC、TwitterCopyright@2012iPinyouAllRightsReserved.Console、Exec、Syslog、Scribe、IRC、Twitter-Sinks(发送数据)Console、Localfiles、HDFS、S3-Decorators(在数据发送给Sinks之前对数据进行处理)Wirebatching、compression、sampling、throughputthrottling日志收集系统介绍——Flume•Flume可扩展性3.示例Copyright@2012iPinyouAllRightsReserved.日志收集系统介绍——Flume•Flume可靠性三种级别的故障恢复模式1.agentBESinkCopyright@2012iPinyouAllRightsReserved.日志收集系统介绍——Flume•Flume可靠性三种级别的故障恢复模式2.agentDFOSinkCopyright@2012iPinyouAllRightsReserved.日志收集系统介绍——Flume•Flume可靠性三种级别的故障恢复模式3.agentE2ESinkCopyright@2012iPinyouAllRightsReserved.日志收集系统介绍——Flume•Flume可管理性1.管理接口-WebPageCopyright@2012iPinyouAllRightsReserved.-FlumeShell日志收集系统介绍——Flume•Flume可管理性2.示例Copyright@2012iPinyouAllRightsReserved.ConfiguringFlumeNode:tail(“file”)|filter[console,roll(1000){dfs(“hdfs://namenode/user/flume”)}];日志收集系统介绍——FlumeCopyright@2012iPinyouAllRightsReserved.日志收集系统比较–WhyFlume?可靠性ScribeScribeServer和中央ScribeServer之间、中央ScribeServer和Store之间都有容错机制。但是Scribeserver发生故障时,内存中少量的数据会丢失,磁盘上的数据不会丢失。Agent定期记录已发送给Collector的数据偏移量,一旦出现故Copyright@2012iPinyouAllRightsReserved.ChukwaAgent定期记录已发送给Collector的数据偏移量,一旦出现故障后,可根据偏移量继续发送数据。FlumeAgent和Collector,Collector和Store之间均有容错机制,且提供3种级别的可靠性保证。日志收集系统比较–WhyFlume?可扩展性ScribeAgent是一个ThriftClient,新的功能需要自己实现;Collector也就是一个Thriftserver。Chukwa本身自带少量的Agents和Collectors。Copyright@2012iPinyouAllRightsReserved.Chukwa本身自带少量的Agents和Collectors。Flume本身提供丰富的Agents、Collector和Decorators,插件式的结构十分方便扩展。日志收集系统比较–WhyFlume?可管理性Scribe修改配置文件。Chukwa修改配置文件。Copyright@2012iPinyouAllRightsReserved.Flume通过Web或者FlumeShell。日志收集系统比较–WhyFlume?Copyright@2012iPinyouAllRightsReserved.Flume使用心得及优化1.Master单点故障2.Collector负载均衡3.HDFSSmallFilesCopyright@2012iPinyouAllRightsReserved.3.HDFSSmallFiles4.数据传输速率5.CPU使用率6.内存使用率Flume使用心得及优化•Master单点故障Copyright@2012iPinyouAllRightsReserved.Flume使用心得及优化•Collector负载均衡1.Agents的数据可以在逻辑上划分,发往不同的CollectorsCopyright@2012iPinyouAllRightsReserved.Flume使用心得及优化•Collector负载均衡2.通过预先设置自动failover达到分流当有Collector无法工作时当加入新的Collector时Copyright@2012iPinyouAllRightsReserved.当加入新的Collector时Flume使用心得及优化•HDFSsmallfiles日志传输到HDFS上,存在大量的小文件-NameNode造成压力Copyright@2012iPinyouAllRightsReserved.-产生大量的Map任务Flume使用心得及优化•HDFSsmallfiles优化方案:•使用CollectorSink时设置rollmillis参数•在flume-site.xml中配置flume.collector.roll.millisCopyright@2012iPinyouAllRightsReserved.•在flume-site.xml中配置flume.collector.roll.millisFlume使用心得及优化•数据传输速率1.Batch-使用batch(n,maxlatency)Decorator对Event进行批处理,提高系统吞吐量和资源的利用率Copyright@2012iPinyouAllRightsReserved.-在Agent上使用batch时,也要相应的在Collector上使用unbatch,将集成的Event分解成原始的单个EventbatchcustomdfsFlume使用心得及优化•数据传输速率2.Compression-使用gzipDecorator对Event进行压缩,降低网络传输的数据量,提高数据传输速率。Copyright@2012iPinyouAllRightsReserved.据量,提高数据传输速率。-一般结合batch一起使用。-在Agent端使用gzip时,在Collector也要相应的使用gunzip,对Event进行解压。我们使用gzip可以减少80%的数据量。gzipcustomdfsbatchFlume使用心得及优化•数据传输速率3.checksum-Collector接受到数据后,对数据进行Checksum,验证数据的正确性。通过改进Checksum算法,缩短数据的验证的时间Copyright@2012iPinyouAllRightsReserved.的正确性。通过改进Checksum算法,缩短数据的验证的时间-我们通过改进Checksum,使数据验证的时间减少33%Flume使用心得及优化•CPU使用率使用TailDirSource时,发现消耗了大量的CPU-轮询文件的时间200ms-大量的文件消耗消耗很多的CPUCopyright@2012iPinyouAllRightsReserved.优化方案:-延长轮询文件的时间间隔-长时间内容没有改变的文件将不再轮询-减小Log所在的路径深度优化后,使CPU的使用率降低了2/3Flume使用心得及优化•内存使用率使用TailDirSource消耗内存-TailDirSource里大量使用了DirectBuffer优化方案:Copyright@2012iPinyouAllRightsReserved.优化方案:调整MaxDirectMemorySize的大小,限制DirectMemory的使用优化后,使内存的使用率降低了1/2Flume在品友互动的使用–优化与君共勉——Copyright@2012iPinyouAllRightsReserved.我们的技术:我们的技术:海量数据、云计算、分布式、数据挖掘、机器学习、海量数据、云计算、分布式、数据挖掘、机器学习、精准定向、用户行为分析精准定向、用户行为分析海量数据、云计算、分布式、数据挖掘、精准定向、海量数据、云计算、分布式、数据挖掘、精准定向、数据分析、数据分析、HadoopHadoop,,RedisRedis,,HbaseHbase,,HiveHive,,PigPig,,OozieOozie,,GangliaGanglia,,FlumeFlume,,LuceneLucene,,LIBSVMLIBSVM,,MahoutMahout,,ZookeeperZookeeper……………………Copyright@2012iPinyouAllRightsReserved.品友互动感谢您的关注,希望继续支持:品友互动感谢您的关注,希望继续支持:官方网站:官方网站:官方微博:官方微博:://weibo.com/pinyouhudong招聘微博:招聘微博: