【发布时间】: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 程序在单节点集群上运行良好。
这是我遵循的步骤。
- 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