【问题标题】:application web on spark?Spark 上的应用程序网络?
【发布时间】:2016-11-29 16:32:11
【问题描述】:

我有一些性能问题,我有几个问题要问你:) 我创建了一个 Scala 应用程序。该应用程序实时计算一些统计数据,例如会话......来自 cassandra 数据库。我使用 spray 作为 http 框架来创建我的 API。 我使用 spark 计算和映射来自 cassandra 的减少结果。 我使用 spark-submit 将我的应用程序放入 spark 中。

您认为这是直接在 spark 中开发应用程序的最佳方式吗?或者我应该在 spark 之外创建一个应用程序 (http),然后调用另一个应用程序仅用于使用 spark 计算来自 cassandra 的数据?

我有 3 台服务器(1 台 32G 8 核,1 台 64G,8 核,最后一台 64G 12 核)用于我的测试(我知道如果我的集群中有相同的服务器会更好,但我暂时不能)。 我使用独立模式。 我在 spark_default.sh 中的配置:

spark.deploy.defaultCores=28
spark.executor.memory=30G

目前它很慢,需要 9 秒 3 火花特质:

  • 一个地图,一个排序和1个收集(需要4秒)
  • 求和运算(耗时3s)
  • 求和运算(耗时 2s)

只是为了这样的结果:

{"result":"success","list":[{"item":"1474236000","value":6},{"item":"1474239600","value":3},{ "item":"1474243200","value":3},{"item":"1474246800","value":3},{"item":"1474250400","value":3},{"item ":"1474254000","value":8},{"item":"1474257600","value":4},{"item":"1474261200","value":11},{"item": "1474264800","value":1},{"item":"1474268400","value":3},{"item":"1474272000","value":18},{"item":"1474275600 ","value":6},{"item":"1474279200","value":4},{"item":"1474282800","value":2},{"item":"1474286400", “价值”:2},{“项目”:“1474293600”,“价值”:4},{“项目”:“1474297200”,“价值”:10},{“项目”:“1474300800”,“价值” ":10},{"item":"1474304400","value":8},{"item":"1474308000","value":6},{"item":"1474311600","value": 8},{"item":"1474315200","value":4},{"item":"1474318800","value":4},{"item":"1474322400","value":6} ],"nb_session":137.0,"old_nb_session":161}

你对我有什么建议吗?我不明白为什么这么慢:(

非常感谢

【问题讨论】:

  • 我认为您应该将 Spark 与应用程序分开。 Spark 应该像服务一样工作。 github.com/spark-jobserver/spark-jobserver 可能会有所帮助。
  • 好吧,我个人认为它并不慢。这些延迟并不令人印象深刻,但 Spark 并不是真正为低延迟工作而设计的,而且您当然不会让它变得更容易。为什么不直接对抗 Cassandra?关于分离,这当然是个好主意。

标签: scala apache-spark cassandra


【解决方案1】:

我建议您直接与 Cassandra 和 CQL 合作。如果您无法在 CQL 中反映所有内容,您始终可以创建用户定义函数 (UDF)。

https://docs.datastax.com/en/cql/3.3/cql/cql_using/useCreateUDF.html

默认情况下,Cassandra 2.2 及更高版本支持在 java 和 javascript 中定义函数。可以通过将 JAR 添加到类路径来添加其他脚本语言,例如 Python、Ruby 和 Scala。将 JAR 文件安装到 $CASSANDRA_HOME/lib/jsr223/[language]/[jar-name].jar 中,其中语言为“jruby”、“jython”或“scala”

制作低延迟 Apache Spark 解决方案的选项之一是将数据保留在 Apache Spark 中(跨多个请求),并仅查询每个请求中的缓存数据(并跳过从 cassandra 加载的部分)。这是不平凡的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-24
    • 1970-01-01
    • 2012-12-14
    • 2011-02-01
    • 2016-01-24
    相关资源
    最近更新 更多