Установлена и запущена Linux VM с Hadoop. И есть приложение Java, работающее в Eclipse, которое извлекает данные из HDFS. Если я копирую файлы или файлы из HDFS внутри виртуальной машины, все работает нормально. Но когда я бег приложения на Windows, физической машину я получаю следующее исключение:Ошибка при копировании файла с HDFS на компьютер Windows
WARN hdfs.DFSClient: Failed to connect to /127.0.0.1:50010 for block, add to
deadNodes and continue. java.net.ConnectException: Connection refused: no further
information. Could not obtain BP-*** from any node: java.io.IOException:
No live nodes contain current block. Will get new block locations from namenode and retry
Я могу только получить список файлов из HDFS. Кажется, что при извлечении данных из узла данных он подключается к моему локальному хосту Windows. Потому что, когда я сделал туннель в шпаклере от моего локального хоста до ВМ, все было в порядке.
Вот мой Java-код:
Configuration config = new Configuration();
config.set("fs.defaultFS", "hdfs://ip:port/");
config.set("mapred.job.tracker", "hdfs://ip:port");
FileSystem dfs = FileSystem.get(new URI("hdfs://ip:port/"), config, "user");
dfs.copyToLocalFile(false, new Path("/tmp/sample.txt"),newPath("D://sample.txt"), true);
Как это исправить? Спасибо.
P.S. Эта ошибка возникает, когда я использую QuickStart VM от Cloudera.