Alluxio文件系统在搜狗的实践

本次分享主要包括了Spark shuffle 基于Alluxio的优化,以及基于Alluxio对于临时表的性能改进:1.在搜狗大量的数据分析, 知识图谱的数据制作使用Spark/SparkSQL来进行并行计算,大部分由于Spark On Yarn存在各类问题导致业务SLA水平仅为96%,结合Alluxio内存文件系统,我们将Spark业务的稳定性水平SLA提升到99.22%,广泛应用于数据分析以及高优先级业务中;2.同时在搜狗存在部分任务使用Hive/Spark临时表作为中间计算,使用Alluxio性能提升22.2%。目前Alluxio部署1000+机器上,运行了半年时间。 肖邦,搜狗大数据平台高级开发工程师,主要负责致力于Spark/Hive计算引擎的开发与性能优化,结合Alluxio内存文件系统提升计算稳定性等工作
展开查看详情

1.Alluxio 内存文件系统在搜狗的实践 Sogou 肖邦 Email: Chopinxb@gmail.com

2.2. 发布弹性计算客户端,进一步降低临时未经测试任务对于diablo集群的业务的影响 About us 来自搜狗大数据平台部 基于Apache Hadoop生态,建设搜狗海量数据存储和计算平台 提供稳定高效的数据分析系统,为搜狗各类型大数据应用,提供一站式数据处理服务 每天数十亿的数据增量,数以万计的数据计算流程,使数据的价值得到充分利用 最前沿技术落地及推进开源技术的发展

3.2. 发布弹性计算客户端,进一步降低临时未经测试任务对于diablo集群的业务的影响 2. 发布弹性计算客户端,进一步降低临时未经测试任务对于diablo集群的业务的影响 Content

4.2. 发布弹性计算客户端,进一步降低临时未经测试任务对于diablo集群的业务的影响 1 Spark shuffle on Alluxio

5.Background Spark shuffle on Alluxio How to choose execution engine ? vs

6.Spark stability Lineage No preemption queue BlackList Mechanism Background Spark shuffle on Alluxio

7.Spark 任务 DAG Shuffle block fetch failure NM OOM 机器宕机 磁盘故障 重算 任务失败 Background Spark shuffle on Alluxio 图片来自: http:// datastrophic.io /core-concepts-architecture-and-internals-of-apache-spark /

8.知识图谱 任务某个 Job 的 DAG Lineage 太长,重算代价太高 Background Spark shuffle on Alluxio

9.Storage L ocal file (single node) SSD /HDD 单节点故障 Map Map Map Storage Reduce Reduce Reduce Alluxio Design Spark shuffle on Alluxio Distributed/replicated file + MEM/SSD ? HDFS Alluxio (a memory speed virtual distributed storage system )

10.Resource Manager Alluxio Master Node Manager Data Node E xecutor Alluxio Client E xecutor Alluxio Client AlluxioWorker Node Manager Data Node E xecutor Alluxio Client E xecutor Alluxio Client AlluxioWorker Implementation Spark shuffle on Alluxio Alluxio Master

11.File1 File2 File3 Alluxio File1 File2 File3 Alluxio MapTask File1 File2 File3 Storage ReduceTask MapTask File1 File2 File3 Storage ReduceTask Implementation Spark shuffle on Alluxio Spark 2.0 后不是这种形式了,现在采用 3 种 sorted base writer

12.MapTask ReduceTask Implementation Spark shuffle on Alluxio dataFile indexFile Index 1 Index 2 Index n Part 1 Part 2 Part n … Alluxio dataFile index File ReduceTask

13.分优先级配置任务 HIGH Local + Alluxio (CACHE_THROUGH: HDFS, ASYNC_THROUGH ) Middle Local + Alluxio (MUST_CACHE) Low Local Alluxio 社区版暂不支持写多备 Implementation Spark shuffle on Alluxio

14.Contrast Spark shuffle on Alluxio

15.Spark shuffle on Alluxio NodeManager crash Origin Contrast Spark shuffle on Alluxio

16.Spark shuffle on Alluxio 的收益: 保证高优先级任务的稳定运行,提升线上业务稳定性 避免重算带来的计算资源压力,节约集群计算资源 任务稳定性由 96% 提升到 99.2% Profit Spark shuffle on Alluxio

17.2. 发布弹性计算客户端,进一步降低临时未经测试任务对于diablo集群的业务的影响 2 Hive on Alluxio

18.2. 发布弹性计算客户端,进一步降低临时未经测试任务对于diablo集群的业务的影响 实际查询业务 Background Hive on Alluxio

19.2. 发布弹性计算客户端,进一步降低临时未经测试任务对于diablo集群的业务的影响 HDFS Query1 HDFS Query2 Query3 Table Input Create temp table Store Temp Table Input HDD 大量临时表创建 临时表数据量大 磁盘 IO 执行流程: Background Hive on Alluxio SQL 优化?

20.2. 发布弹性计算客户端,进一步降低临时未经测试任务对于diablo集群的业务的影响 HDFS Query1 Alluxio Query2 Query3 Table Input Create temp table Store Temp Table Input Mem SSD Optimization Hive on Alluxio

21.2. 发布弹性计算客户端,进一步降低临时未经测试任务对于diablo集群的业务的影响 Optimization Hive on Alluxio

22.2. 发布弹性计算客户端,进一步降低临时未经测试任务对于diablo集群的业务的影响 Hive 任务执行性能平均 提升 22% Profit Hive on Alluxio

23.2. 发布弹性计算客户端,进一步降低临时未经测试任务对于diablo集群的业务的影响 3 Ongoing Work

24.2. 发布弹性计算客户端,进一步降低临时未经测试任务对于diablo集群的业务的影响 Spark Shuffle on Alluxio File1 File2 File3 Alluxio File1 File2 File3 Alluxio MapTask ReduceTask MapTask ReduceTask File1 File2 File3 Alluxio File1 File2 File3 Alluxio MapTask File1 File2 File3 Storage ReduceTask MapTask File1 File2 File3 Storage ReduceTask

25.2. 发布弹性计算客户端,进一步降低临时未经测试任务对于diablo集群的业务的影响 HDFS Query1 Alluxio Query2 Query3 Table Input Create temp table Store Temp Table Input Mem SSD Query1 Alluxio Query2 Query3 Table Input Create temp table Store Temp Table Input Mem SSD HDFS Load Cache Alluxio Hive on Alluxio 问题: 涉及到的 Input 数据量太大 机器提供的内存有限 思路: 对 input 表进行分析,区分出热表,进行 cache 分析任务的执行,及时释放空间 Input 加速

26.THANKS