我是Cassandra的新手。我想在3个节点上安装cassandra-0.8.4并运行从HDFS上传数据到Cassandra的Map/Reduce作业。多节点cassandra安装以“UnknownHostException”结尾
我已经在3安装Cassnadra(199.168.0.3)&(199.168.0.4)分别lab04节点lab02(199.168.0.2),lab03并且可以创建一个密钥空间&列族,他们得到了跨集群分布。
当我运行我的map/reduce程序时,它以“UnknownHostException”结束。同一个map/reduce程序在单节点集群上运行良好。
以下是我所遵循的步骤。
- cassandra.yaml细节
lab02(199.168.0.2): (seed node)
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 at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)at java.net.InetAddress $ 1.lookupAllHostAddr(InetAddress.java:849)at java.net.InetAddress.getAddressFromNameService(InetAddress.java:1200)at java.net .InetAddress.getAllByName0(InetAd java.net.InetAddress.getAllByName(InetAddress.java:1083)at java.net.InetAddress.getAllByName(InetAddress.java:1019)at java.net.InetAddress.getByName(InetAddress.java:969) )在org.apache.cassandra.client.RingCache.refreshEndpointMap(RingCache.java:93)at org.apache.cassandra.client.RingCache。(RingCache.java:67)at org.apache.cassandra.hadoop.ColumnFamilyRecordWriter。( (org.apache.cassandra)的org.apache.cassandra.hadoop.ColumnFamilyOutputFormat.getRecordWriter(ColumnFamilyOutputFormat.java:132)的org.apache.cassandra.hadoop.ColumnFamilyRecordWriter。(ColumnFamilyRecordWriter.java:92)中的ColumnFamilyRecordWriter.java:98)。 hadoop.ColumnFamilyOutputFormat.getRecordWriter(ColumnFamilyOutputFormat.java:62)at org.apache.hadoop.mapred.ReduceTask.runNewReducer(ReduceTask.java:553)at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:408) at 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通而无任何问题。
- 当我跑 “InetAddress.getLocalHost()” 从Java程序上lab02它 打印 “lab02/199.168.0.2”。
- 当我查看bin/cassandra的“o/p”时,它会打印几条 消息,并在InetAddress字段“/199.168.0.3”等处打印出“”不打印“主机名/ IP”。那是问题吗?
请帮助我解决上述问题。
问候, Thamizhannal
上面的网址看起来它已经错误报道卡桑德拉-0.8.4,并已固定在0.8.5版本。所以,要么等到0.8.5发布,否则我必须移动到0.7.8。 – Thamizh
或从svn检出0.8分支。 – jbellis