【问题标题】:Apache Ignite - issue in bulk load data from CSV filesApache Ignite - 从 CSV 文件批量加载数据的问题
【发布时间】:2015-07-16 13:53:18
【问题描述】:

我正在针对特定用例评估 Apache Ignite。我正在尝试将 50 GB 的数据加载到 Ignite 中的缓存中。我有 CSV 格式的数据。目前,我正在以 Java Beans 的形式读取 Java 程序中的数据,并使用 Ignite 中的流式 API 将 bean 添加到缓存中。我正在寻找替代方法/选项。

  1. Ignite 是否有任何开箱即用的功能,可用于以并行方式批量加载 CSV 文件中的数据(读取 CSV 和写入缓存)?
  2. 在 Java 客户端程序中使用流媒体 API 加载数据时,我看到流媒体对象在添加大约 600MB 数据后关闭,导致客户端节点崩溃,随后其他节点也崩溃。处理 500MB 数据时,数据加载工作正常。我在每台服务器中使用 3 个物理节点集群和 2 个 ignite 节点实例。

任何建议都会有所帮助。

【问题讨论】:

    标签: ignite


    【解决方案1】:
    1. 没有开箱即用的 CSV 流媒体。
    2. 看起来在 500MB 之后内存不足。如果你的内存不足,你能用 VisualVM 检查你的 JVM 内存利用率并添加更大的 -Xmx 值吗?

    【讨论】:

    • 我们已经尝试使用 50GB 的 -Xmx 值,但仍然遇到相同的内存问题,大约 600MB
    • 您能否提供一个编码示例,将问题与您使用的配置一起重现?您可以使用 pastebin.com 来分享您的代码。
    【解决方案2】:

    Apache Ignite 是内存缓存。你有 50Gb+ 内存吗?

    我想提出另一种解决方案。将数据从 CSV 加载到任何数据库,例如 H2(为关键字段添加索引以提高性能)。并配置 Ignite 缓存以使用链接到数据库的缓存存储 + readThrough 选项。您可以通过 cache.load() 加载一些数据(不是全部 50Gb)。

    当您的应用在缓存中找不到键时,它将透明地从底层存储中获取并缓存。

    您如何看待这种方法?

    【讨论】:

    • 是的,我在每台服务器中都有 128Gb 的内存,所以集群总共有 384GB 的内存。我会测试你提供的方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-28
    • 2011-01-19
    • 1970-01-01
    • 1970-01-01
    • 2016-07-17
    • 2021-02-16
    • 2021-05-07
    相关资源
    最近更新 更多