Я пытаюсь получить доступ к своей HDFS с помощью Java-кода, но я не могу заставить его работать ... через 2 дня борьбы Я думаю, что пришло время попросить помощи.Не удается получить доступ к HDFS через API Java (Cloudera-CDH4.4.0)
Это мой код:
Configuration conf = new Configuration();
conf.addResource(new Path("/HADOOP_HOME/conf/core-site.xml"));
conf.addResource(new Path("/HADOOP_HOME/conf/hdfs-site.xml"));
FileSystem hdfs = FileSystem.get(conf);
boolean success = hdfs.mkdirs(new Path("/user/cloudera/testdirectory"));
System.out.println(success);
Я получил этот код из here и here. К сожалению, объект hdfs - это объект «LocalFileSystem», поэтому что-то должно быть неправильно. Похоже, это именно то, что Rejeev написал на своем сайте:
[...] If you do not assign the configurations to conf object (using hadoop xml file) your HDFS operation will be performed on the local file system and not on the HDFS. [...]
С абсолютными путями я получаю тот же результат.
conf.addResource(new Path("/etc/hadoop/conf/core-site.xml"))
Это libary настоящее время я использую:
hadoop-core-2.0.0-mr1-cdh4.4.0.jar
Я слышал, что Hadoop-ядро было разделено на несколько LIBS, поэтому я также попытался следующие ЛИЭС:
hadoop-common-2.0.0-alpha.jar
hadoop-mapreduce-client-core-2.0.2-alpha.jar
Я использую Cloudera-CDH4.4.0, поэтому hasoop уже установлен. Через консоль все работает нормально. Например:
hadoop fs -mkdir testdirectory
Так что все должно быть правильно настроен, как по-умолчанию.
Я надеюсь, что вы, ребята, можете мне помочь ... этот материал заводит меня в орехи! С такой простой задачей очень сложно терпеть неудачу.
Большое спасибо за любую помощь.
Большое вам спасибо за ваши ответы! :) Я выполнил шаги 1-4 и выполнил приложение через консоль с помощью «hadoop jar hadoopfile.jar hasoop.sample.fileaccess.Hmkdirs», затем консоль «True» и новая папка в HDFS была создана. Я предполагаю, что проблема заключалась в том, что я не использовал «банку хаоп». Однако при запуске кода в eclipse я получаю следующую ошибку: java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory. Как вы это сделали? Какие библиотеки вы используете? Еще раз спасибо :) – Tim
Добавить под импорт: import java.io.IOException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; Проверьте свой путь сборки, чтобы иметь под файлами jar: hadoop-hdfs и hadoop-common – user1652210