【问题标题】:Unable to find partitioner class - Cassandra找不到分区程序类 - Cassandra
【发布时间】:2015-02-11 09:30:51
【问题描述】:

当我在 Hadoop 上运行我的应用程序时,能否帮助我解决 Cassandra 面临的以下问题。

当我运行应用程序时,我收到以下关于我们在应用程序中提到的分区程序类的错误。

Caused by: java.lang.RuntimeException: org.apache.cassandra.exceptions.ConfigurationException: Unable to find partitioner class 'org.apache.cassandra.dht.RandomPartitioner'
        at org.apache.cassandra.hadoop.ConfigHelper.getInputPartitioner(ConfigHelper.java:426)
        at org.apache.cassandra.hadoop.AbstractColumnFamilyInputFormat.validateConfiguration(AbstractColumnFamilyInputFormat.java:85)
        at org.apache.cassandra.hadoop.ColumnFamilyInputFormat.validateConfiguration(ColumnFamilyInputFormat.java:74)
        at org.apache.cassandra.hadoop.AbstractColumnFamilyInputFormat.getSplits(AbstractColumnFamilyInputFormat.java:122)
        at org.apache.hadoop.mapreduce.JobSubmitter.writeNewSplits(JobSubmitter.java:493)
        at org.apache.hadoop.mapreduce.JobSubmitter.writeSplits(JobSubmitter.java:510)
        at org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:394)
        at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1295)
        at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1292)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAs(Subject.java:415)
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1554)
        at org.apache.hadoop.mapreduce.Job.submit(Job.java:1292)
        at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:1313)
        at com.test.cassandratest.WcJob.run(WcJob.java:96)
        at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
        at com.test.cassandratest.WcJob.main(WcJob.java:104)
        ... 10 more
Caused by: org.apache.cassandra.exceptions.ConfigurationException: Unable to find partitioner class 'org.apache.cassandra.dht.RandomPartitioner'
        at org.apache.cassandra.utils.FBUtilities.classForName(FBUtilities.java:458)
        at org.apache.cassandra.utils.FBUtilities.construct(FBUtilities.java:470)
        at org.apache.cassandra.utils.FBUtilities.newPartitioner(FBUtilities.java:416)
        at org.apache.cassandra.hadoop.ConfigHelper.getInputPartitioner(ConfigHelper.java:422)
        ... 26 more
Caused by: java.lang.NoClassDefFoundError: org/github/jamm/MemoryMeter$Guess
        at org.apache.cassandra.utils.ObjectSizes.<clinit>(ObjectSizes.java:34)
        at org.apache.cassandra.dht.RandomPartitioner.<clinit>(RandomPartitioner.java:45)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:190)
        at org.apache.cassandra.utils.FBUtilities.classForName(FBUtilities.java:450)
        ... 29 more
Caused by: java.lang.ClassNotFoundException: org.github.jamm.MemoryMeter$Guess
        at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
        ... 34 more

【问题讨论】:

  • 您确定您使用的是随机分区程序吗? Cassandra 2.0 的默认值为 murmur3
  • 我最初尝试添加 MURMUR3,但同样的问题来了,我将其更改为 RandomPartitioner!!! @RussS
  • 哪个版本的 JAMM 在您的类路径中?
  • Raja,你找到解决方案了吗?我也遇到了同样的问题。请问你能帮我吗?。
  • 我没有得到答案。目前我放弃了这个问题。

标签: hadoop cassandra cassandra-2.0


【解决方案1】:

我在我们的系统中将Cassandra升级到2.1时遇到了同样的问题,根本原因如下。

Cassandra 2.1 使用的 jamm 版本是 3.0.0,而旧的 Cassandra 使用的是 2.5。所以请更新您使用的jamm版本,您的问题可能会得到解决。

http://mvnrepository.com/artifact/com.github.jbellis/jamm/0.3.0

【讨论】:

    猜你喜欢
    • 2017-01-13
    • 1970-01-01
    • 2016-05-11
    • 2021-02-28
    • 2014-10-22
    • 2016-07-15
    • 2017-01-09
    • 2014-07-20
    • 2017-06-25
    相关资源
    最近更新 更多