- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
目前,我们在对我们的 cassandra 数据库使用 apache spark 时挑战我们的架构,因为我们遇到了非常糟糕的读取性能。
spark & cassandra 发生的硬件是一个云服务器,16GB 内存,8 核,操作系统使用 SSD。
Cassandra 'data_file_directories' 设置为另一个硬盘,其测试结果为 hdparm -tT
:
Timing cached reads: 13140 MB in 1.99 seconds = 6604.42 MB/sec
Timing buffered disk reads: 428 MB in 3.00 seconds = 142.65 MB/sec
cassandra中的 objective-c f:
CREATE TABLE test.stats (
day timestamp,
received timestamp,
target inet,
via inet,
prefix blob,
rtt decimal,
PRIMARY KEY (day, received, target, via)
) WITH CLUSTERING ORDER BY (received ASC, target ASC, via ASC)
AND bloom_filter_fp_chance = 0.01
AND caching = '{"keys":"NONE", "rows_per_partition":"NONE"}'
AND comment = ''
AND compaction = {'min_threshold': '4', 'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 'max_threshold': '32'}
AND compression = {}
AND dclocal_read_repair_chance = 0.1
AND default_time_to_live = 0
AND gc_grace_seconds = 864000
AND max_index_interval = 2048
AND memtable_flush_period_in_ms = 0
AND min_index_interval = 128
AND read_repair_chance = 0.0
AND speculative_retry = '99.0PERCENTILE';
我们目前使用的是 Cassandra 2.1.6 以及 java datastax 驱动程序 (2.1.6) 和 spark java 连接器(spark-cassandra-connector_2.10,版本 1.4.0-M2)。
Spark 进程目前有一个 worker 设置了 conf.set("spark.executor.memory", "2G");
。
启动一个简单的 spark 作业以通过提交/或序列化驱动程序读取一个显式分区键(大约有 83.520.000 行)的所有行需要 17 分钟。
该作业只是将所有行写入一个文件,该文件的最终大小为 1,2G。
驱动代码如下:
CassandraTableScanJavaRDD<EchoRepliesBean> cassandraTable2 = null;
switch (timespanMode)
{
case SIX_HOURS:
Calendar calendarDay = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
calendarDay.setTimeInMillis(now);
calendarDay.set(Calendar.HOUR_OF_DAY, 0);
calendarDay.set(Calendar.MINUTE, 0);
calendarDay.set(Calendar.SECOND, 0);
calendarDay.set(Calendar.MILLISECOND, 0);
Timestamp tsEnd = new Timestamp(calendarDay.getTimeInMillis());
calendarDay.add(Calendar.DAY_OF_MONTH, -1);
Timestamp tsStart = new Timestamp(calendarDay.getTimeInMillis());
System.out.println(tsStart);
cassandraTable2 = javaFunctions(sc).cassandraTable("test", "stats", mapRowTo(EchoRepliesBean.class))
.where("day = ?", tsStart);
break;
default:
/* make compiler happy */
// cassandraTable = null;
}
cassandraTable2.saveAsTextFile("/opt/out_TEST_" + System.currentTimeMillis());
sc.stop();
这很奇怪,对于进一步调试的任何帮助或想法将不胜感激。
最佳答案
提高性能的一些可能方法:
通过在多个节点上对数据进行分区来提高并行度。由于您按天进行分区,因此一个节点上的一个分区中有大量行。这迫使读取和写入成为串行操作。如果您按小时进行分区,那么您的数据可能会分布在多个节点和多个 Spark Worker 中。
我怀疑您的 day 分区太大,无法放入单个 spark worker 的内存,这可能会导致一些数据交换到磁盘。使用较小的分区、为 spark worker 提供更多内存或使用更多 spark worker 可以避免这种情况。
确保您的 spark worker 在 Cassandra 节点上运行,而不是在单独的机器上运行。如果工作人员在不同的机器上,那么将数据从节点转移到工作人员将产生大量网络开销。
确保您的云服务器为 Cassandra 使用本地存储而不是网络存储。
为了调试,我会尝试在其中只有一行的分区上运行您的测试。如果表现不佳,则说明您的机器设置有问题。如果性能良好,则增加分区中的行数,直到您看到性能急剧下降。
关于java - 使用 spark 对抗 cassandra 性能不佳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32138747/
如果我有一个像盒子一样的 div,我用 10% 的不透明度让它变得非常性感。我该如何应对它,因为 div 中的所有内容也都具有不透明度。假设我有一个带有 1px 边框和文本的框 (div),在其上设置
我知道 AngularJS 会运行某些代码两次,有时甚至更多,例如 $watch 事件,不断检查模型状态等。 但是我的代码: function MyController($scope, User, l
目前,我们在对我们的 cassandra 数据库使用 apache spark 时挑战我们的架构,因为我们遇到了非常糟糕的读取性能。 spark & cassandra 发生的硬件是一个云服务器,16
所以最近我遇到了以下问题:我必须创建一个处理请求的服务器,以便在主进程使用这些值时更新某些值。 所以这里,服务器处理函数是在子进程中,我想停止的时候都无法停止。 为了测试在 threading.Thr
准备好的语句不允许参数化表名。为了确保无法插入任何代码,我想使用 ctype_alnum 来验证进入数据库模块的所有表名(删除下划线后),以保护应用程序免受其他部分错误的影响。 function in
经典算法书籍(TAOCP、CLR)(以及不太经典的书籍,例如 fxtbook)充满了命令式 算法。这对于实现严重基于数组的算法最为明显,例如组合生成(算法中同时使用数组索引和数组值)或联合查找算法。
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
这个问题已经有答案了: Apply a Greasemonkey/Tampermonkey userscript to an iframe (6 个回答) 已关闭 5 年前。 我想知道是否可以让 Gr
SELECT p.id FROM produkty p, przyporzadkowania pr, stany_magazynowe, gk_grupy_produkty INNER JOIN su
我想将 Azure ACS 添加到我的一个站点,但所有功能都出现问题。我有一个 MVC 应用程序,它使用全局过滤器为请求的生命周期设置自定义 IPrincipal。 WIF 的“添加 STS 引用”方
我想将 Azure ACS 添加到我的一个站点,但所有功能都出现问题。我有一个 MVC 应用程序,它使用全局过滤器为请求的生命周期设置自定义 IPrincipal。 WIF 的“添加 STS 引用”方
Google 的 YouTube Analytics API 仅基于 Oauth2。我正在使用以下测试脚本来查看是否可以获得访问权限: import os import google.oauth2.c
随着 Visual Studio 2008 的发布,Microsoft 为 JavaScript 实现了代码完成和 IntelliSense 支持。 不幸的是,对 JavaScript 的支持充其量是
我在准备语句方面有更多经验,我知道它们非常适合抵御 SQL 注入(inject)攻击。 我想知道 pl/pgsql 的 format/USING 和 quote_literal/quote_nulla
我是一名优秀的程序员,十分优秀!