cassandra和hadoop-实时与批处理

5t7ly7z5  于 2021-06-03  发布在  Hadoop
关注(0)|答案(3)|浏览(466)

根据http://www.dbta.com/articles/columns/notes-on-nosql/cassandra-and-hadoop---strange-bedfellows-or-a-match-made-in-heaven-75890.aspx
Cassandra所追求的解决方案与hadoop有所不同。cassandra擅长于大容量实时事务处理,而hadoop擅长于面向批处理的分析解决方案。
cassandra和hadoop在体系结构/实现上有什么不同,它们在使用上有什么不同(专业术语)

evrscar2

evrscar21#

hadoop由两个基本组件组成:分布式数据存储(hdfs)和分布式计算框架(mapreduce)。它读取一堆输入数据,然后将输出从数据存储写入数据存储。它需要分布式数据存储,因为它在机群上对本地数据进行并行计算,以最小化数据加载时间。
而cassandra是具有线性可扩展性和容错能力的数据存储。它缺乏hadoop中mapreduce提供的并行计算能力。
hadoop的默认数据存储(hdfs)可以替换为其他存储后端,如cassandra、glusterfs、ceph、amazon s3、microsoft azure的文件系统、mapr的fs等。但是,每个备选方案都有其优缺点,应根据需要进行评估。
有一些资源可以帮助您将hadoop与cassandra集成:http://docs.datastax.com/en/cassandra/3.0/cassandra/configuration/confighadoop.html

8ljdwjyq

8ljdwjyq2#

vanilla hadoop的核心是一个分布式文件系统(dfs)和支持map reduce模型的库,用于编写程序进行分析。dfs使hadoop具有可伸缩性。它负责将数据分块到多节点集群中的多个节点中,以便map reduce可以处理可用节点的单个数据块,从而实现并行性。
google文件系统是hadoop分布式文件系统(hdfs)的基础
关于map-reduce模型的论文可以在这里找到
有关MapReduce的详细说明,请阅读本文
cassandra是一个高度可扩展的、最终一致的、分布式的、结构化的键值存储。它不是传统的数据库,更像是存储键/值对的hashtable或hashmap。cassandra在hdfs之上工作,并利用它进行扩展。cassandra和hbase都是google的bigtable的实现。谷歌bigtable的论文可以在这里找到。
bigtable使用字符串排序表(sstable)来存储键/值对。sstable只是hdfs中的一个文件,它存储键和值。此外,bigtable维护一个索引,该索引在该键的文件中具有键和偏移量,该索引允许仅使用对偏移量位置的查找来读取该键的值。sstable实际上是不可变的,这意味着在创建文件之后,不能对现有的键/值对进行任何修改。新的键/值对将附加到文件中。记录的更新和删除会附加到文件中,使用较新的键/值进行更新,使用键和逻辑删除值进行删除。sstable的此文件中允许有重复的键。无论何时更新或删除,索引都会被修改,以便该关键点的偏移量指向最新值或逻辑删除值。
因此,您可以看到cassandra的内部允许快速读/写,这对于实时数据处理至关重要。而vanilla hadoop和map reduce可以用来处理面向批处理的被动数据。

gblwokeq

gblwokeq3#

我想补充一点,因为我认为这里可能有一个误导性的说法,说Cassandra可能表现良好的阅读。cassandra在随机读取方面也不是很好,与其他解决方案相比,它在如何随机读取大量数据方面是很好的,但是在某些情况下,如果读取确实是随机的,那么每次都无法避免命中磁盘,这是非常昂贵的,而且它可能会归结为一些无用的东西,比如几千次点击/秒,这取决于你的集群,所以计划做大量的随机查询可能不是最好的,如果你开始这样想,你会撞到墙。我想说,当你进行顺序读取或找到一种方法来顺序存储它们时,大数据中的所有东西都会工作得更好。大多数情况下,即使您进行实时处理,您仍然希望找到一种方法来批处理您的查询。这就是为什么你需要事先考虑你在一个键下存储了什么,并试图从读取中获得尽可能多的信息。同样有趣的是,声明中说transaction和cassandra在同一句话里,因为那真的没有发生。另一方面,hadoop的定义几乎是批处理的,但是hadoop是一个分布式的map reduce框架,而不是db,事实上,我在cassandra上见过并使用过很多hadoop,它们不是对抗性的技术。实时处理您的大数据是可行的,但需要良好的思考和关心何时以及如何访问数据库。
编辑:删除了二级索引的例子,就像上次我检查使用随机读取(虽然我已经离开Cassandra一年多了)。

相关问题