我需要在我的Cassandra集群上执行MapReduce,包括数据局部性,即。每个作业仅查询属于作业运行的本地Casandra节点的行。Cassandra和MapReduce - 最低设置要求
有关如何在较旧的Cassandra版本(0.7)上设置Hadoop for MR的教程。我无法找到当前版本。
这方面0.7以来有什么变化?
最小化设置(Hadoop + HDFS + ...)需要什么软件模块?
我需要Cassandra Enterprise吗?
我需要在我的Cassandra集群上执行MapReduce,包括数据局部性,即。每个作业仅查询属于作业运行的本地Casandra节点的行。Cassandra和MapReduce - 最低设置要求
有关如何在较旧的Cassandra版本(0.7)上设置Hadoop for MR的教程。我无法找到当前版本。
这方面0.7以来有什么变化?
最小化设置(Hadoop + HDFS + ...)需要什么软件模块?
我需要Cassandra Enterprise吗?
卡桑德拉包含几类这些都足以与Hadoop的集成:
ColumnFamilyInputFormat
- 这是一个Map函数的输入,它可以在使用Cassandra的随机分区时读取单个CF中的所有行,也可以在与Cassandra的有序分区器一起使用时读取行范围。 Cassandra集群具有环形形式,其中每个环形部分负责具体的键范围。输入格式的主要任务是将Map输入分为可并行处理的数据部分 - 这些部分被称为InputSplits
。在Cassandra的情况下,这很简单 - 每个环范围都有一个主节点,这意味着输入格式将为每个环元素创建一个InputSplit
,并且将导致一个Map任务。现在我们想在存储数据的同一台主机上执行我们的Map任务。每个InputSplit
都会记住其环部分的IP地址 - 这是负责该特定键范围的Cassandra节点的IP地址。 JobTracker
将创建地图任务表InputSplits
并将它们分配给TaskTracker
执行。 JobTracker
将尝试找到TaskTracker
,它具有与InputSplit
相同的IP地址 - 基本上我们必须在Cassandra主机上启动TaskTracker
,这将保证数据的局部性。ColumnFamilyOutputFormat
- 为Reduce功能配置上下文。因此结果可以存储在Cassandra中基本上使用提供Hadoop的集成放弃可能性数据所在执行上的主机地图作业,减少功能可以存储结果返回到卡桑德拉 - 这是我所需要的。
有执行两种可能的map-reduce:
org.apache.hadoop.mapreduce.Job
- 这个类的一个过程模拟的Hadoop。它执行Map-Resuce任务,不需要任何附加服务/依赖关系,只需访问临时目录即可存储来自映射作业的结果以进行随机播放。基本上我们必须在Job类中调用几个setter,它包含像Map任务,Reduce任务,输入格式,Cassandra连接等类的名称,安装完成后必须调用job.waitForCompletion(true)
- 它会启动Map-Reduce任务并等待结果。此解决方案可用于快速进入Hadoop世界并进行测试。它不会扩展(单个进程),并且它会通过网络获取数据,但仍然 - 开始时会很好。是的,我一直在寻找同样的事情,似乎DataStaxEnterprise具有简化Hadoop的整合, 阅读本http://wiki.apache.org/cassandra/HadoopSupport
DataStax Enterprise确实简化了Cassandra/Hadoop集成,每个节点花费约8000英镑。 – felbus