Hadoop Cassandras映射减少支持

Hadoop Cassandras映射减少支持,hadoop,mapreduce,cassandra,apache-pig,Hadoop,Mapreduce,Cassandra,Apache Pig,我最近遇到了一个案例,Cassandra非常适合使用每个事件类型的自定义TTL存储基于时间的事件(另一个解决方案是将其保存在hadoop中并手动记账(TTL和其他东西,这是一个非常复杂的想法)或切换到hbase)。 问题是没有Datastax Enterprise edition,cassandra MapReduce支持的开箱即用性有多好 看起来他们在卡桑德拉斯投资了很多,但我问自己,如果正常的猪 CassandraLoader是主动维护的,实际上是可伸缩的(因为它似乎只不过是在切片中的行上进

我最近遇到了一个案例,Cassandra非常适合使用每个事件类型的自定义TTL存储基于时间的事件(另一个解决方案是将其保存在hadoop中并手动记账(TTL和其他东西,这是一个非常复杂的想法)或切换到hbase)。 问题是没有Datastax Enterprise edition,cassandra MapReduce支持的开箱即用性有多好

看起来他们在卡桑德拉斯投资了很多,但我问自己,如果正常的猪 CassandraLoader是主动维护的,实际上是可伸缩的(因为它似乎只不过是在切片中的行上进行迭代)。
这是否适用于100百万行?

为什么不使用hbase?Hbase更适合于timeseries数据。在启用WAL的情况下,您可以轻松地在非常小的集群上放置数十亿行,在小的3node集群上(高达50MB/s)每秒可以获得500k行。 卡桑德拉有几个缺陷:

  • 在cassandra中,您实际上受到密钥数量的限制(想象一下,在数十亿行的情况下,您的修复将永远有效)。所以,您将设计模式,它将把您的时间“切分”,比如说,1小时,并且实际的时间戳将作为列放置。但由于“巨柱”的高风险,这种方案不能很好地扩展
  • 另一个问题是,除了使用ordered partitioner之外,您不能在cassandra中映射缩小数据范围,因为它无法很好地平衡数据,所以ordered partitioner根本不是一个选项

  • 您可以使用random partitioner映射/减少,但是您得到的键当然是随机顺序的。您可能希望在cassandra中使用CL=1,这样在执行map/reduce时就不必每次读取2个节点的数据,而应该读取本地数据。不过我还没有使用Pig。

    这是因为我已经在项目中使用了cassandra,并不想引入新技术……这很好。如果可以一直处理所有数据-这应该可以,但如果数据会增长,我建议重新考虑使用更适合mapreduce工作负载存储。这是什么废话?许多(大多数?)Cassandra集群非常好地支持数十亿行。您提到了修复,但这当然也是分布式的。Cassandra确实不鼓励您的数据模型依赖全局排序,但这并不是一个很大的缺点,特别是Cassandra内置了对列索引的支持(在map/reduce中也支持).对Cassandra的Pig支持使用列FamilyInputFormat和-OutputFormat。因此,无论你在hadoop中能做什么或不能做什么,都可以很好地映射到你在cna中能做什么,而在Cassandra和Pig中不能做什么。使用随机分区器真的很快吗?我猜它就是这样做的我曾经尝试手动迭代一个1亿行CF,但它在发送第一个RangeSicleQuery后从未真正启动。该链接看起来不像map/reduce,因为map/reduce实现了映射器和Reducer之类的东西…我需要很快再次设置它,并且没有我以前项目中的代码…是的,它很快,因为它们都在运行并行…启动速度很慢,就像hadoop一样,因为它向每个任务跟踪器交付代码。“hadoop”和“fast”并没有真正结合在一起。这就是顺序扫描的本质。但是C*扫描比HBase快,如果这让你感觉更好的话:我理解Hadoop和批处理的本质。我只是尝试在cassandra中的所有行(100000.000.000行)上迭代一个cassandra cf(随机分区器),这花了很长时间,我放弃了。我只是在问自己,通过hadoop实现的MapReduce是否使用相同的机制。