Nosql Hadoop Map/Reduce-执行以下操作的简单示例

Nosql Hadoop Map/Reduce-执行以下操作的简单示例,nosql,hadoop,mapreduce,bigtable,Nosql,Hadoop,Mapreduce,Bigtable,我有一个MySQL数据库,我在其中存储以下BLOB(包含JSON对象)和ID(用于此JSON对象)。JSON对象包含许多不同的信息。说“城市:洛杉矶”和“州:加利福尼亚” 目前大约有50万个这样的记录,但它们正在增长。每个JSON对象都相当大 我的目标是在MySQL数据库中进行搜索(实时)。 比如说,我想搜索所有JSON对象,这些对象从“state”到“California”,从“city”到“sanfrancisco” 我想利用Hadoop完成这项任务。 我的想法是,将有一个“作业”,它从My

我有一个MySQL数据库,我在其中存储以下BLOB(包含JSON对象)和ID(用于此JSON对象)。JSON对象包含许多不同的信息。说“城市:洛杉矶”和“州:加利福尼亚”

目前大约有50万个这样的记录,但它们正在增长。每个JSON对象都相当大

我的目标是在MySQL数据库中进行搜索(实时)。 比如说,我想搜索所有JSON对象,这些对象从“state”到“California”,从“city”到“sanfrancisco”

我想利用Hadoop完成这项任务。 我的想法是,将有一个“作业”,它从MySQL中获取大块,比如说100条记录(行),根据给定的搜索条件验证它们,返回符合条件的(ID)

赞成/反对?我知道有人可能会认为我应该利用简单的SQL功能来实现这一点,但问题是JSON对象结构相当“沉重”,如果我把它作为SQL模式,至少会有3-5个表连接,这(我尝试过,真的)会让人非常头疼,而且构建所有正确的索引消耗RAM的速度比我想象的要快即使如此,每个SQL查询都必须进行分析,才能利用索引,否则进行完全扫描确实是一件痛苦的事情。有了这样的结构,我们唯一能“向上”的方法就是垂直缩放。但我不确定这对我来说是否是最好的选择,因为我看到JSON对象将如何增长(数据结构),而且它们的数量也将增长。:-)

帮忙?有人能给我举个简单的例子说明如何做到这一点吗?这有意义吗?我错过了什么重要的事情吗


谢谢你。

事实上你是。。因为在一个巨大的字段中搜索文本要比索引数据库和搜索正确的sql方式花费更多的时间。该数据库是为与sql和索引一起使用而构建的,它不具备解析json和为json编制索引的能力,因此无论您在json中找到什么搜索方式(可能只是黑客字符串匹配)都会慢得多。对于mysql来说,500k行没有那么多需要处理的,您并不真正需要hadoop,只需要一个好的规范化模式、正确的索引和优化的查询

需要考虑的几个指针:

  • Hadoop(特别是HDFS)在机器集群周围分发数据。使用MapReduce分析/处理这些数据需要将数据存储在HDFS上,以利用Hadoop提供的并行处理能力

  • Hadoop/MapReduce几乎没有实时性。即使在运行少量数据时,Hadoop设置作业所需的时间也可能超过30秒。这是无法阻止的


可能需要研究的是使用Lucene将JSON对象索引为文档。您可以将索引存储在solr中,并轻松查询任何您想要的内容。

听起来您好像在尝试重新创建CouchDB。CouchDB是使用map reduce框架构建的,专门用于JSON对象。

好吧,MySQL可能很快就会被交换到任何键/值存储等。正如我所提到的,进行搜索的模式非常复杂-它将与每个搜索查询至少有2-4个连接。我真的很想得到一些关于Hadoop实现的建议(它能实时工作吗?不能?),而不是把它改成SQL模式的建议。让我们假设它不是SQL:-)假设它是任何键值存储,存储Protobuf对象。听起来好多了?我还需要搜索。这些斑点有多大?数据主要是结构化数据还是也有非结构化元素(如全文)?是的,结构化和非结构化数据+任意属性在某些情况下,唯一的其他候选对象是Solr。谢谢