切换名称节点Hadoop Java api和camel、jms
嗨,我正在使用camel从JMS队列获取消息,使用FS-javaapi处理消息并将其存储在Hadoop中,然后将其传输到另一个队列
目前我的JMS并发是20。因此,骆驼JMS一次性消耗20条消息。对于每条消息,我创建fs连接并执行创建文件和写入文件的操作
问题就在这里
我看到的是,有时在将内容写入文件时,由于某种原因,我的名称节点出现故障,在这种情况下,我希望将我的名称切换到活动名称节点
这是我得到的一份日志
[Camel(Camel-1)线程#1自上次调用#169 ClientNamenodeProtocolTranslatorPD.getFileInfo经过{name_node_address_allias/ip:port}后发生故障转移
调试时,我会显示在待机状态下不支持操作类别写入
我当时想切换到活动名称节点
Hadoop Java API示例代码
package org.myorg;
import org.apache.hadoop.conf.*;
import org.apache.hadoop.security.UserGroupInformation;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.FileStatus;
public class HdfsTest {
public static void main(String args[]) {
conf.addResource("path-of-core-site.xml");
conf.addResource("path-of-hdfs-site.xml");
conf.set("fs.defaultFS", "hdfs://cloudera:8020");
conf.set("hadoop.security.authentication", "kerberos");
UserGroupInformation.setConfiguration(conf);
UserGroupInformation.loginUserFromKeytab("hdfs@CLOUDERA", "/etc/hadoop/conf/hdfs.keytab");
FileSystem fs = FileSystem.get(conf);
//logic to create a file and write
//close the cfile and connection
}
}
共 (0) 个答案