Операция записи Hadoop HDFS программноJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Операция записи Hadoop HDFS программно

Сообщение Anonymous »

Некоторое время назад я задавал аналогичный вопрос, но тогда понятия не имел, о чем говорю. Я публикую этот вопрос с более подробной информацией и конкретными запросами.

Итак, я настроил кластер Hadoop с узлом имени и двумя узлами данных. Я использую Hadoop 2.9.0. Я выполнил команду hdfs dfs -put «SomeRandomFile», и вроде бы все работает нормально. Единственная путаница, которая у меня здесь возникает, заключается в том, почему мой файл сохраняется по пути /user/hduser/? Я не указал этот путь нигде в конфигурациях, так как же он строит этот путь на hdfs?

Более того, я создал небольшую Java-программу, чтобы сделать то же самое. Я создал простой проект eclipse и написал следующие строки:

Код: Выделить всё

public static boolean fileWriteHDFS(InputStream input, String fileName) {
try {
System.setProperty("HADOOP_USER_NAME", "hduser");

//Get Configuration of Hadoop system
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://localhost:9000");
//conf.get("fs.defaultFS");

//Extract destination path
URI uri = URI.create(DESTINATION_PATH+fileName);
Path path = new Path(uri);

//Destination file in HDFS
FileSystem fs = FileSystem.get(uri, conf); //.get(conf);

//Check if the file already exists
if (fs.exists(path))
{
//Write appropriate error to log file and return.
return false;
}

//Create an Output stream to the destination path
FSDataOutputStream out = fs.create(path);

//Copy file from input steam to HDFSs
IOUtils.copyBytes(input, out, 4096, true);

//Close all the file descriptors
out.close();
fs.close();
//All went perfectly as planned
return true;
} catch (Exception e) {
//Something went wrong
System.out.println(e.toString());
return false;
}
}
И я добавил следующие три библиотеки Hadoop:


/home/hduser/ bin/hadoop-2.9.0/share/hadoop/common/hadoop-common-2.9.0.jar
/home/hduser/bin/hadoop-2.9.0/share/hadoop/common/hadoop-common- 2.9.0-tests.jar
/home/hduser/bin/hadoop-2.9.0/share/hadoop/common/hadoop-nfs-2.9.0.jar


Как видите, мое место установки Hadoop — /home/hduser/bin/hadoop-2.9.0/... Когда я запускаю этот код, он выдает исключение. то есть

Код: Выделить всё

Exception in thread "main" java.lang.NoClassDefFoundError: com/ctc/wstx/io/InputBootstrapper
at com.ws.filewrite.fileWrite.fileWriteHDFS(fileWrite.java:21)
at com.ws.main.listenerService.main(listenerService.java:21)
Caused by: java.lang.ClassNotFoundException: com.ctc.wstx.io.InputBootstrapper
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 2 more
В частности, исключение выдается при лжи:


Конфигурация conf = new Configuration();


Я что-то упустил? Что вызывает эту проблему? Я совершенно новичок в HDFS, так что извините, это очевидная проблема.

Подробнее здесь: https://stackoverflow.com/questions/478 ... mmatically
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»