"陈仕明在7月27日的第105期CTO俱乐部活动中分享了迅雷数据平台的建设及其应用案例。这个平台旨在处理海量数据,涉及服务器、CPU、存储等多个层面的架构设计,并采用了开源社区的技术结合自主研发的解决方案。"
【迅雷大数据架构】
迅雷数据平台在应对大规模数据处理时,采用了层次化的架构设计。平台规模包括500多台服务器,拥有4000多核CPU以及超过20PB的存储空间,每天处理的计算任务高达6000个,IO扫描量达到100TB,存储消耗占比75%,CPU平均使用率约为60%。整体架构由离线采集、实时采集、安全控制和事件驱动调度引擎等核心组件构成。
【离线采集】
离线数据采集使用Xrsync,它基于rsync进行数据同步,将业务服务器上的数据同步至中转服务集群,然后加载到HDFS。这一过程中,任务元数据和调度管理得到增强。对于文本数据,迅雷通过MapReduce(M/R)进行格式转换,生成适用于Hive查询的RCFile格式。同时,针对MySQL的MyISAM存储引擎,提供了MySqlISAMStorageHandler,支持Hive读取后再转化为RCFile的Hive表。
【实时采集】
实时采集则通过XCollector实现。在业务服务器上部署的agent负责实时收集服务器日志和MySQL binlog。这些数据通过消息队列传递,可以选择是否保证数据顺序,数据既可以落地到HDFS,也可以用于Storm进行实时计算。
【安全控制】
为了确保平台安全,迅雷建立了统一的安全控制中心,采用Kerberos认证,控制服务和账户接入。所有用户数据都存放在各自的Home目录下,且在HDFS、Hive、HBase等服务中实施细粒度的权限控制。MRTask运行在SELinux构建的安全沙箱中,防止潜在的恶意代码。
【事件驱动调度引擎】
传统的Crontab时间依赖调度方式存在局限,迅雷采用了事件驱动调度引擎。这种引擎将任务间的依赖关系转化为"数据"的依赖,前置任务完成后会自动触发后续任务,简化了维护成本。调度依赖分为ETLJob内部依赖和基于"数据"的依赖,前者类似oozie,后者则是事件驱动。
【计算引擎】
平台抽象出一个计算引擎层,支持多种计算引擎如MapReduce和Shell。当底层计算引擎出现故障时,任务可以自动重试,提高了系统的鲁棒性。
迅雷数据平台在处理大数据时,注重了效率、安全和灵活性,通过定制化工具和策略优化了数据处理流程,以满足其业务需求。这样的架构设计对于其他研究大数据的CTO而言,具有重要的参考价值。