美文网首页Ceph分布式存储-CEPH
【优化】Cephfs查找文件某行数据信息

【优化】Cephfs查找文件某行数据信息

作者: lihanglucien | 来源:发表于2018-09-30 15:31 被阅读6次

1.背景说明

用户需要从一个文件从检索出一行数据, 并且对延迟和性能要求比较高。

1.1 现在做法

普通的做法是A用户上传2G的文件到Ceph集群, B用户拉取该2G的文件到本地,然后根据offset检索这行数据。

这其中的做法是用户检索量比较大的时候,都需要拉取不同文件的2G数据,延迟比较高,严重影响用户的体验。

缺点:

  • 用户端检索延迟大,影响用户体验
  • 客户端端集群网卡带宽有限
  • 量大对Ceph集群负载影响严重

1.2 优化方案

能不能只拉取我需要的信息,不用全量拉取到本地,答案是肯定的。

思路:

  • 根据文件信息查找所有的object信息
  • 根据offset找到需要检索的object信息
  • 找到对应的object 检索一行的数据(一行数据可能会拆分多个object)

优点:

  • 提升用户体验
  • 客户端网络网卡带宽可用率得到提升
  • 减少对ceph集群的冲击影响

2. 方案逻辑

2.1查看文件映射object信息

root@xxx$ cephfs /mnt/kernel_log_push.log map
WARNING: This tool is deprecated.  Use the layout.* xattrs to query and modify layouts.
    FILE OFFSET                    OBJECT        OFFSET        LENGTH  OSD
              0      10002b63282.00000000             0       4194304  61
        4194304      10002b63282.00000001             0       4194304  67
        8388608      10002b63282.00000002             0       4194304  70
       12582912      10002b63282.00000003             0       4194304  68

2.2根据offset查找object信息

root@xxx$ cephfs /mnt/kernel_log_push.log show_location -l 12582912
WARNING: This tool is deprecated.  Use the layout.* xattrs to query and modify layouts.
location.file_offset:  12582912
location.object_offset:0
location.object_no:    3
location.object_size:  4194304
location.object_name:  10002b63282.00000003
location.block_offset: 0
location.block_size:   4194304
location.osd:          68

2.3获取这个对象信息

#这是整个4M读取,有点浪费资源,不推荐
root@xxx$ rados -p cephfs_data get 10002b63282.00000003 test

2.4获取这个对象的某行数据

/*
问题点:
1. 一行数据可能会拆分为两个对象
解决方案:
用户给的offset属于这一行的结尾, 只需要读取上一行是否存在\n,
如果存在\n证明该行,属于完整的行。
否则不存在\n证明该行,被拆分为两个对象,在上一个对象的结尾offset往上读,直到遇到\n 合并两个对象读取的数据为完整的行。
*/
#Contents of object 'hw'
print ioctx.read("hw",length=int,offset=int) #length 默认是对象长度,offset默认是0

相关文章

  • 【优化】Cephfs查找文件某行数据信息

    1.背景说明 用户需要从一个文件从检索出一行数据, 并且对延迟和性能要求比较高。 1.1 现在做法 普通的做法是A...

  • 如何恢复cephfs数据

    title: 如何恢复cephfs数据 1、前言 这里实验在使用cephfs时,如果cephfs的元数据损坏或丢失...

  • python数据清洗

    数据清洗 过滤 筛选 删除 某行

  • 四剑客命令集合

    1.find 查找文件 根据时间信息查找数据: find命令参数-type 文件类型 f文件 d目录-size 大...

  • 2.3numpy的索引和切片

    Numpy数组操作 索引和切片: 1.获取某行的数据: 2.连续获取某几行的数据: 3.获取某行某列的数据: 4....

  • SparkSQL优化器Catalyst

    SQL优化器执行策略:规则优化和代价优化规则优化是经验式,需要对数据元数据信息充分了解,主要体现在Join;代价优...

  • 不会的题

    find查找文件信息grep查找文件内容-R递归 -n显示行信息 1 3 3 3文件类型 | (rwx)文件所有者...

  • 第13期:表统计信息的计算

    本篇介绍 MySQL 表如何计算统计信息。表统计信息是数据库基于成本的优化器最重要的参考信息;统计信息不准确,优化...

  • kubernetes 使用ceph

    下载external storage项目 kubernetes 使用 cephfs 进入cephfs所在的目录 此...

  • cephfs中告警盘点

    总结下cephfs中由mds产生的告警信息。 Behind on trimming... 字面翻译落后于日志裁剪(...

网友评论

本文标题:【优化】Cephfs查找文件某行数据信息

本文链接:https://www.haomeiwen.com/subject/cmuwoftx.html