多节点cassandra安装以“UnknownHostException”结束

时间:2011-08-25 15:25:49

标签: cassandra

我是Cassandra的新手。我想在3个节点上安装cassandra-0.8.4并运行Map / Reduce作业,将数据从HDFS上传到Cassandra。

我已经在3个节点lab02(199.168.0.2),lab03(199.168.0.3)&上安装了Cassnadra。 lab04(199.168.0.4)分别可以创建一个密钥空间&列系列,它们分布在整个集群中。

当我运行map / reduce程序时,它以“UnknownHostException”结束。相同的map / reduce程序在单节点集群上运行良好。

以下是我遵循的步骤。

  1. cassandra.yaml详情
  2.   

    lab02(199.168.0.2):(种子节点)

         

    auto_bootstrap:false seeds:“199.168.0.2”listen_address:199.168.0.2   rpc_address:199.168.0.2

         

    lab03(199.168.0.3):auto_bootstrap:true seeds:“199.168.0.2”   listen_address:199.168.0.3 rpc_address:199.168.0.3

         

    lab04(199.168.0.4):auto_bootstrap:true seeds:“199.168.0.2”   listen_address:199.168.0.4 rpc_address:199.168.0.4

    2。 当我运行map / reduce程序时,它最终以“UnknownHostException”

    结束

    错误:的java.net.UnknownHostException:/199.168.0.2在java.net.Inet6AddressImpl.lookupAllHostAddr(本机方法)在java.net.InetAddress中$ 1.lookupAllHostAddr(InetAddress.java:849)在java.net.InetAddress中。 getAddressFromNameService(InetAddress.java:1200)在java.net.InetAddress.getAllByName0(InetAddress.java:1153)在java.net.InetAddress.getAllByName(InetAddress.java:1083)在java.net.InetAddress.getAllByName(InetAddress.java :1019)在java.net.InetAddress.getByName(InetAddress.java:969)在org.apache.cassandra.client.RingCache.refreshEndpointMap(RingCache.java:93)在org.apache.cassandra.client.RingCache(RingCache。的.java:67)在org.apache.cassandra.hadoop.ColumnFamilyRecordWriter(ColumnFamilyRecordWriter.java:98)在org.apache.cassandra.hadoop.ColumnFamilyRecordWriter(ColumnFamilyRecordWriter.java:92)在org.apache.cassandra.hadoop。 ColumnFamilyOutputFormat.getRecordWriter(ColumnFamilyOutputFormat.java:132)在org.apache.cassandra.hadoop.ColumnFamilyOutputFormat.getRecordWriter(ColumnF amilyOutputFormat.java:62)在org.apache.hadoop.mapred.ReduceTask.runNewReducer(ReduceTask.java:553)在org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:408)在org.apache.hadoop .mapred.Child.main(Child.java:170)

    以下是map / reduce的配置行。

        job4.setReducerClass(TblUploadReducer.class );
        job4.setOutputKeyClass(ByteBuffer.class);
        job4.setOutputValueClass(List.class);
        job4.setOutputFormatClass(ColumnFamilyOutputFormat.class);
        ConfigHelper.setOutputColumnFamily(job4.getConfiguration(), args[1],args[3] );
        ConfigHelper.setRpcPort(job4.getConfiguration(),  args[7]); // 9160
        ConfigHelper.setInitialAddress(job4.getConfiguration(), args[9]); // 199.168.0.2
        ConfigHelper.setPartitioner(job4.getConfiguration(), "org.apache.cassandra.dht.RandomPartitioner");
    

    我已验证的步骤

    • 已经配置了无密码ssh b / w lab02,lab03 &安培; lab04。所有节点都可以互相ping通,没有任何问题。
    • 当我从lab02上的java程序运行“InetAddress.getLocalHost()”时 打印“lab02 / 199.168.0.2”。
    • 当我看着bin / cassandra的“o / p”时,它打印了几个 消息和InetAddress字段“/199.168.0.3”等。在这里它 不打印“主机名/ IP”。那是问题吗?

    请帮我解决上述问题。

    此致 Thamizhannal

2 个答案:

答案 0 :(得分:3)

这已经在0.8提示中得到解决:https://issues.apache.org/jira/browse/CASSANDRA-3044

答案 1 :(得分:1)

它试图查找文字字符串“/199.168.0.2”作为地址,这确实无效。如果这是来自您的配置,请删除斜杠。否则,它可能来自RingCache,这将是一个错误。如果是这样,首先升级到0.7.8以确保它尚未修复。如果问题仍然存在,请在https://issues.apache.org/jira/browse/CASSANDRA上打开错误。

编辑:Nate是对的,这是0.8.4中已知的错误,固定为0.8.5。