Привет! Я использую верблюда, чтобы получать сообщения из очереди JMS, обрабатывать сообщения, сохранять их в Hadoop с помощью FS Java API, а затем переносить их в другую очередь
В настоящее время мой конкурент JMS равен 20. поэтому за один раз верблюд JMS потребляет 20 сообщений одновременно. Для каждого сообщения я создаю соединение fs и выполняю операцию, которая создает файл и записывает файл.
Вот вопрос
Иногда я записываю содержимое в файл, по какой-то причине мой namenode отключается, в этом случае я хочу переключить свое имя на активный узел имени
Вот журнал, который я получаю
[Верблюжий (верблюд-1) поток № 1 произошел сбой с момента последнего вызова # 169 ClientNamenodeProtocolTranslatorPD.getFileInfo через {name_node_address_allias / ip: порт}
При отладке я показываю, что категория операции WRITE не поддерживается в режиме ожидания
Я хочу в это время переключиться на активный узел имени
Пример 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
}
}