JuiceFS 在大搜车数据平台的实践[亲测有效]

JuiceFS 在大搜车数据平台的实践[亲测有效]大搜车已经搭建起比较完整的汽车产业互联网协同生态。在这一生态中,不仅涵盖了大搜车已经数字化的全国 90% 中大型二手车商、9000+ 家 4S 店和 70000+ 家新车二网,还包括大搜车旗下车易拍、

JuiceFS 在大搜车数据平台的实践

大搜车已经搭建起比较完整的汽车产业互联网协同生态。在这一生态中,不仅涵盖了大搜车已经数字化的全国 90% 中大型二手车商、9000+ 家 4S 店和 70000+ 家新车二网,还包括大搜车旗下车易拍、车行168、运车管家、布雷克索等具备较强产业链服务能力的公司, 与大搜车在新零售解决方案上达成深度战略合作的长城汽车、长安汽车、英菲尼迪等主机厂商,以及与中石油昆仑好客等产业链上下游的合作伙伴。基于这样的生态布局,大搜车数字化了汽车流通链条上的每个环节,进而为整个行业赋能。

说到大数据,对于每个公司都不陌生。存储组件 HDFS,计算资源管理 YARN,离线计算 Hive、Spark、Spark SQL,列存储数据库 HBase,实时计算Spark Streaming、Flink等。这些组件在集群稳定情况下维护还算比较轻松,但是在公司快速发展过程中,集群容量的高速增长是不可避免的,作为大数据的设计者不得不从集群的成本和效益上思考两者的权衡。

大数据集群现状

大搜车目前大数据集群分为离线计算集群和实时计算集群,离线计算基于 Hive 和 Spark,实时计算基于 Flink,这两类集群分别基于 HDP 和 CDH 两套管理方式。早期离线计算选用了 HDP,实时计算后来选用 CDH 的初衷是多集群管理比较方便。由于离线计算引擎两者是有区别的,迁移会有兼容性问题,两套集群一直并存,集群间资源完全隔离。

集群维护痛点

数据量持续增长,成本一定的情况下做集群扩容耗时耗力

从 18 年初到 19 年 6 月份,离线集群从最初的数十个节点持续增长到上百个节点,数据量也从数十 TiB 增长了 10 多倍,并且保持每天数 TiB 的速度增加。在节省开支的情况下,每月做一次集群扩容,形成了与数据增长速度赛跑的情况。每月固定工作差不多变成了接受磁盘告警狂炸、扩容、均衡数据、再均衡数据的情况。遇到一些极端情况,比如阿里云在某个可用区没有数据类型设备资源而要新在另一个可用区创建,还会涉及到数据网段变更,就更复杂了。

  1. 存储所需资源跟计算资源不同步

在对离线集群数据做分析过程中发现,热点数据仅占大约 20%。在集群不断扩容的情况下,计算资源会有较大冗余,产生了不必要的成本,另外每次均衡会占用节点网络带宽,影响任务读写数据的速度。

  1. 跨集群数据同步

为了减少了实时任务和离线任务的相互影响,方便资源控制和云资源选型价值最大化,实时计算和离线计算集群在物理上做了资源隔离,难点也随之出现,实时和离线集群的数据无法实时同步,造成一些需求无法实现。

  1. NameNode内存持续增长,重启时间过久

在文件存储中,文件数量过多导致 NameNode 管理内存持续增加,重启一次时间过长,势必影响数据同步;并且在数仓层面不严加控制数据生命周期,资源占用也会越来越大,在对集群中整个资源做分析时也会受到影响。

选择 JuiceFS

针对以上这些问题,选取一款产品做底层存储势在必行。存储选择上作为大数据的基石,需要遵从如下特点:

  • 兼容Hadoop框架协议
  • 多版本集群兼容
  • 高吞吐、低延时
  • 支持深度压缩减少资源使用

在一开始,我们尝试使用阿里云的 OSS 作为冷备存储。在测试过程中,由于没有元信息管理,在数据维护上很受限制。后来接触到了 JuiceFS 这款产品,在选择上很是满足上述要求。对此我们做了一些性能测试(均基于实际场景提取业务逻辑)。

实际场景性能测试

以下测试均选取实际业务数据,数据大小是 where 查询条件不同选取的,仅做两个文件系统性能对比:

  • SELECT + INSERT 操作

从 3000 万左右表中分别选取不同量级数据插入另一张表结构一样的表中,横向对比 HDFS 和 JuiceFS 耗时。

JuiceFS 在大搜车数据平台的实践[亲测有效]

  • SELECT + COUNT 操作

从3000万左右表中分别选取不同量级数据做 COUNT,横向对比 HDFS 和 JuiceFS 耗时。

JuiceFS 在大搜车数据平台的实践[亲测有效]

  • SELECT + ORDERBY

对 3000 万左右表中数据做排序,横向比较 HDFS 和 JuiceFS 的耗时。

JuiceFS 在大搜车数据平台的实践[亲测有效]

综上,JuiceFS 在查询、插入数据时多数耗时比较稳定且整体比HDFS耗时要少,在 SELECT 数据情况,多数性能相差不多极个别情况要优于 HDFS,单行做排序操作性能差不多。

成本控制

我们对比了采用 JuiceFS 和 HDFS 两种方案的费用(HDFS 集群保证存储冗余 20%)。在同等数据量(JuiceFS 会再次做深度压缩,压缩比大约为 3:1)和对等计算资源的情况下采用 JuiceFS 每月会比使用云主机部署 HDFS 节省至少 18%。

综合看 JuiceFS 的性能和成本都非常满足公司对成本和产品性能的要求。

未来展望

存储计算分离

大数据集群引入 JuiceFS,存储和计算实际上已经分离。大数据集群灵活弹性扩展计算资源已经成为可能,在凌晨业务低谷期可以将业务机器的计算资源调度给大数据集群。

以下是目前整个大数据集群架构:

JuiceFS 在大搜车数据平台的实践[亲测有效]

后续可以结合计算存储分离和动态伸缩设计为如下目标架构:

JuiceFS 在大搜车数据平台的实践[亲测有效]

与 Kubernetes 做结合,按需申请资源,节省成本和减少维护成本。

推荐阅读:
JuiceFS CSI Driver 的最佳实践

项目地址: Github (https://github.com/juicedata/juicefs)如有帮助的话欢迎关注我们哟! (0ᴗ0✿)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/5717.html

(0)
上一篇 2023-04-27
下一篇 2023-04-27

相关推荐

  • MySQL高可用架构_高可用架构社区

    MySQL高可用架构_高可用架构社区一、MHA介绍 MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)

    2022-12-26
    142
  • Python中的pop方法:删除列表末尾元素

    Python中的pop方法:删除列表末尾元素Python中的列表是一种非常常用的数据结构,常常需要对其中的元素进行删除和插入操作。列表提供了pop()方法来删除列表的末尾元素。pop()方法会返回被删除的元素。

    2024-04-12
    74
  • sqlserver2016安装教程 简书_sql server2012安装

    sqlserver2016安装教程 简书_sql server2012安装数据库安装 选择全新安装模式继续安装 输入产品秘钥:这里使用演示秘钥进行 接受许可 规则检测 可以后期再开放防火墙对外端口 选择需要安装的功能,想省事可以选择【全选】 可以安装JDK,这边选择取消 P

    2023-06-10
    144
  • 使用NumPy将数组转换为列表

    使用NumPy将数组转换为列表在数据分析和科学计算中,NumPy是最常用的Python库之一,它提供了高效的数组操作和数学函数,可大大加速数据处理的速度和准确性。NumPy中的数组(ndarray)是Python中最常用的数据结构之一,但在某些情况下,我们需要将其转换为Python中的标准列表。这篇文章将详细介绍如何使用NumPy将数组转换为Python列表。

    2024-06-02
    56
  • [学习笔记] Oracle字符串函数、日期函数、数值函数、转换函数、聚合函数

    [学习笔记] Oracle字符串函数、日期函数、数值函数、转换函数、聚合函数函数 单行函数:对一行数据进行操作的函数,如字符串函数、数值函数、转换函数、日期函数等。 聚合函数:同时对多行数据进行操作,如求和函数等。 字符串函数 | 函数 | 说明 | | | | | ASCI

    2023-02-06
    152
  • Python爬虫实战:用Pyt获取网络数据

    Python爬虫实战:用Pyt获取网络数据随着互联网的发展,越来越多的数据可以通过网络获取。Python作为一种优秀的编程语言,在网络数据爬取方面拥有很高的效率和便利性。使用Python编写爬虫程序可以获取网络上的各种信息,例如新闻、股票数据、电影资讯等等。

    2024-01-07
    110
  • Python工程师:如何使用UUID生成唯一标识符

    Python工程师:如何使用UUID生成唯一标识符在现代的计算机系统中,唯一标识符用于标识一个对象或实体。通常,唯一标识符用于识别数据库表中的行,文件系统中的文件或目录以及网络中的客户端或服务器。在Python中,一个常见的方式是使用uuid模块生成唯一标识符。

    2024-04-28
    66
  • 数据库作业在哪里存着_mysql数据库大作业

    数据库作业在哪里存着_mysql数据库大作业题目如下: 1.查询sC表中的全部数据。2. 查询计算机系学生的姓名和年龄3.查询成绩在70~80分的学生的学号、课程号和成绩4.查询计算机系年龄在18~20岁的男生姓名和年龄s.查询C001课程的最

    2023-02-15
    156

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注