Alluxio在中国联通的应⽤

联通传统的批处理架构主要由IOE、Hive、及Greenplum等系统组成。随着业务发展,基于多样化场景的、烟囱式的、分散的计算应用模块大量涌现。为了解决资源碎片化问题,我们引入了以Spark与Alluxio为核心的计算生态构建统一计算平台。Alluxio在其中扮演着加速数据处理、保障过程稳定的重要角色。

展开查看详情

1. Alluxio 在中国联通的应⽤ 张策 | 联通⼤数据⼯程师 | Alluxio Contributor ALLUXIO OPEN SOURCE COMMUNITY 2020

2.个⼈简介 • 张策 • 联通软件研究院⼤数据⼯程师 • Alluxio Contributor • 开源⼤数据爱好者 2

3.⽬录 背景综述 Alluxio实践 Alluxio 2.X解决的痛点 3

4. 背景综述 ALLUXIO OPEN SOURCE COMMUNITY 2020

5.背景综述 多样化&分散的计算平台 ▪ 对计算时间有严格要求的批处理业务 ▪ N+1批处理业务 ▪ 部分传统统计业务 ▪ 集群规模达到瓶颈 ▪ 资源消耗⼤、速度慢 ▪ 单机性能瓶颈、价格昂贵 5

6.背景综述 统⼀计算引擎带来的挑战 ▪ 性能⽆法满⾜greenplum承载的业务 ▪ 性能⽆法满⾜ad-hoc查询业务 ▪ ⽋缺稳定性、⼤批量迭代计算任务容 易失败 HDFS 6

7.背景综述 统⼀计算引擎 ▪ 加速数据读写性能 ▪ 提⾼数据写⼊稳定性 元数据 &数据 ▪ 接管cache提升Spark稳定性 缓存 HDFS 7

8. Alluxio实践 ALLUXIO OPEN SOURCE COMMUNITY 2020

9.Alluxio实践-平台架构 天宫云⻔户 Jupyter Hue Zeppelin 天 眼 统 Flink Spark Presto ⼀ Hive Hbase 监 Yarn 控 Alluxio 平 台 HDFS Oracle DRDS Kafka ⽂件 9

10.Alluxio实践-平台架构 Spark Job Spark Job 物理机 Spark Cluster Spark Job Spark Job Spark Job Spark Job Spark Cluster Spark Cluster 天宫 Spark Job Spark Job 10

11.Alluxio实践 迭代计算:加速下游SQL读取数据速度,提升数据写⼊稳定性 Spark SQL Sink Source Spark SQL Sink Source Spark SQL Sink Source Spark SQL Spark SQL Sink Source Spark SQL Sink Source Spark SQL Sink Spark SQL Sink 11

12.Alluxio实践 Spark Job间共享数据 df.write.parquet(”/Data”) spark.read.parquet(”/Data”) • 替换cache Spark SQL Spark SQL Spark SQL Data Alluxio 12

13.Alluxio实践-合理设置内存副本 内存多副本显著提⾼热数据访问速度 Spark SQL Spark SQL Spark SQL ./bin/alluxio fs setReplication --max 3 --min 1 /foo ./bin/alluxio fs distributedLoad --replication 2 /foo Alluxio ./bin/alluxio fs pin /foo Block Block Block Block FileSystem#free HDFS Block Block Block 13

14.Alluxio实践-内存使⽤空间 ⾼并发访问UFS的场景下如何限制⽂件副本数 Alluxio Client Alluxio Client Alluxio Client Alluxio Client Alluxio Worker Alluxio Worker Alluxio Worker Alluxio Worker Block Block Block Block 4副本 14

15.Alluxio实践-内存使⽤空间 DeterministicHashPolicy Alluxio Client Alluxio Client Alluxio Client Alluxio Client Alluxio Worker Alluxio Worker Alluxio Worker Alluxio Worker Block Block 2副本 15

16.Alluxio实践-数据负载均衡 调整数据分布策略实现负载均衡 Alluxio Client Alluxio Client Alluxio Client MostAvailableFirstPolicy 剩余容量 剩余容量 剩余容量 已使⽤ 已使⽤ 已使⽤ Alluxio Worker Alluxio Worker Alluxio Worker 16

17.Alluxio实践-数据负载均衡 调整数据分布策略实现负载均衡 Alluxio Client RoundRobinPolicy 1 2 剩余容量 剩余容量 剩余容量 已使⽤ 已使⽤ 已使⽤ Alluxio Worker Alluxio Worker Alluxio Worker 17

18.Alluxio实践-性能效果 指标 最⼩值 25% 中位数 75% 最⼤值 Alluxio带来性能与 GC时间 2s 5s 5s 6s 8s 稳定性提升 GC时间(+Alluxio) 54ms 0.9s 1s 2s 3s Task耗时 1.1min 1.4min 1.5min 1.6min 2.0min Task耗时(+Alluxio) 1s 16s 19s 22s 31s 任务总耗时 NA NA NA NA 2.1min 任务总耗时(+Alluxio) NA NA NA NA 33s 每批次Job重算概率 NA NA NA NA 100% 每批次Job重算概率 NA NA NA NA 0 (+Alluxio) 18

19.Alluxio实践-为租户带来的价值 核⼼批处理业务 • 5万job -> 35万job,业务规模扩充 6倍 • 承接⽤户数 +60% • 业务提速100% 核⼼Ad-hoc业务 • ⽇增数据10TB • 单表2.5TB分钟级查询 Oracle • ⽤户级明细数据统计 19

20. Alluxio2.X解决的痛点 ALLUXIO OPEN SOURCE COMMUNITY 2020

21.Alluxio 2.X-RAFT⾼可⽤ Alluxio Standby Alluxio Master Alluxio Master Master RAFT Distributed Distributed Alluxio Standby Alluxio Standby Storage Quorum Master Master (ie. HDFS) (Zookeeper) RAFT ⾼可⽤ 21

22.Alluxio 2.X-增强元数据操作 RocksDB存储元数据带来的改善 • 提⾼100G+⽬录递归操作的性能和稳定性 • Java Heap:操作⼤⽬录易OOM • RocksDB:秒级完成TB级⽬录操作 Java Heap RocksDB • 降低⽂件不⼀致带来的影响 • TB容量、1万+⽂件数⽬录不⼀致修复 < 10秒 • ⽆关⽤户⽆感知 22

23.Alluxio 2.X-Spark写⼊等待时间优化 Spark写⼊⼤量⽂件的阻塞等待时 Spark SQL 间有所改善 • 100G+⽂件写⼊阻塞等待时间减少90% /foo/_temporary Alluxio Worker /foo/part-00001 /foo/part-00002 …… 23

24.Alluxio 2.X-有效容量提升 ⾼低⽔位性能与容量提升 ⾼⽔位90% ⾼⽔位70% +20% 低⽔位70% 低⽔位50% 24

25.Alluxio 2.X-多版本HDFS挂载 ⽀持挂载多版本HDFS Alluxio alluxio:/// HDFS 2.7 HDFS 3.1 mount mount hdfs:/// UserA UserB hdfs:/// Path1 Path2 Path1 Path2 Path1 Path2 Path1 Path2 25

26. 要点回顾 ALLUXIO OPEN SOURCE COMMUNITY 2020

27.要点回顾 • Alluxio加速联通Spark批处理、ad-hoc业务,保障业务稳定⾼效 • 通过Alluxio共享Spark数据,提升业务pipeline计算速度,降低Job重试概率 • ⽤户通过pin、控制数据副本数与读写策略提⾼计算性能 • 应⽤通过主动释放内存的⽅式提⾼内存质量 • 读写策略还可以⽤来保障Alluxio集群负载均衡 • Alluxio 2.X • 增强的RAFT⾼可⽤极⼤提⾼了元数据操作性能和可⽤性 • 提⾼了内存有效容量 • 挂载多版本HDFS 27

28.加⼊社区 Join Slack channel Join meetup groups near you Wechat Public Account alluxio.io/slack alluxio-open-source-community/ 28