【问题标题】:multi node cassandra installation ended with "UnknownHostException"多节点 cassandra 安装以“UnknownHostException”结束
【发布时间】:2011-11-03 19:34:31
【问题描述】:

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

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

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

这是我遵循的步骤。

  1. cassandra.yaml 详细信息

lab02(199.168.0.2):(种子节点)

auto_bootstrap:假种子:“199.168.0.2”listen_address:199.168.0.2 rpc_address: 199.168.0.2

lab03(199.168.0.3):auto_bootstrap:真正的种子:“199.168.0.2” listen_address: 199.168.0.3 rpc_address: 199.168.0.3

lab04(199.168.0.4):auto_bootstrap:真正的种子:“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 at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method) at java.net.InetAddress$1.lookupAllHostAddr(InetAddress.java:849) at 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。 org.apache.cassandra.hadoop.ColumnFamilyOutputFormat.getRecordWriter(ColumnF) 上的 ColumnFamilyOutputFormat.getRecordWriter(ColumnFamilyOutputFormat.java:132) 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”。是这个问题吗?

请帮我解决上述问题。

问候, 塔米扎纳尔

【问题讨论】:

    标签: cassandra


    【解决方案1】:

    【讨论】:

    • 上面的 URL 看起来已经在 Cassandra-0.8.4 上报告了错误,并已在 0.8.5 版本上修复。所以,要么我等到 0.8.5 发布,要么我必须移动到 0.7.8。
    • 或者从 svn 查看 0.8 分支。
    【解决方案2】:

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

    编辑:Nate 是对的,这是 0.8.4 中的一个已知错误,已在 0.8.5 中修复。

    【讨论】:

      猜你喜欢
      • 2015-04-21
      • 2014-05-03
      • 1970-01-01
      • 2018-09-06
      • 2018-11-08
      • 1970-01-01
      • 2021-12-31
      • 2013-09-01
      • 1970-01-01
      相关资源
      最近更新 更多