2017-02-14 27 views
0

Я сталкиваюсь с проблемами при попытке прочитать файл из HDFS (Hortonworks Sandbox) с использованием Java API. Ниже мой код -Исключение при чтении файла из HDFS (Hortonworks Sandbox) с использованием Java API

System.setProperty ("hadoop.home.dir", "/"); 
    URI uri = URI.create ("hdfs://localhost:8020/user/maria_dev/test.txt"); 

    Path path = new Path (uri); 

    Configuration conf = new Configuration(); 
    conf.set ("fs.defaultFS", "hdfs://localhost:8020"); 
    conf.set ("dfs.client.use.datanode.hostname","true"); 
    conf.set("dfs.datanode.use.datanode.hostname","true"); 
    conf.set("dfs.client.use.legacy.blockreader", "true"); 

    byte[] btbuffer = new byte[5]; 
    String s; 
    try (FileSystem fs = FileSystem.get (uri, conf)) { 
     try { 
      FSDataInputStream fileIn = fs.open (path); 
      //s = fileIn.readUTF(); 
      fileIn.read (btbuffer, 0, 20); 
      s = new String (btbuffer, Charset.forName ("UTF-8")); 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
    catch (Exception err){ 
     err.printStackTrace(); 
    } 

Ниже перечислены исключения я получаю -

10:39:51.803 [main] WARN org.apache.hadoop.hdfs.BlockReaderFactory - I/O error constructing remote block reader. java.net.ConnectException: Connection refused . 
10:39:51.803 [main] WARN org.apache.hadoop.hdfs.DFSClient - Failed to connect to sandbox.hortonworks.com/172.17.0.2:50010 for block, add to deadNodes and continue. java.net.ConnectException: Connection refused . 
10:39:51.804 [main] INFO org.apache.hadoop.hdfs.DFSClient - Could not obtain BP-1464254149-172.17.0.2-1477381671113:blk_1073742576_1752 from any node: java.io.IOException: No live nodes contain block BP-1464254149-172.17.0.2-1477381671113:blk_1073742576_1752 after checking nodes = [172.17.0.2:50010], ignoredNodes = null No live nodes contain current block Block locations: 172.17.0.2:50010 Dead nodes: 172.17.0.2:50010. 

Не удалось найти работающее решение. Любая помощь приветствуется.

Отредактировано: Ниже приведены данные из/и т.д./хосты моей хост-системы (откуда я звоню работу) -

127.0.0.1  localhost  
255.255.255.255 broadcasthost  
::1    localhost  
172.17.0.2 sandbox.hortonworks.com localhost  
+0

проверки 'hOSTNAME' и матч fs.defaultFS с что. – rbyndoor

+0

имя хоста - sandbox.hortonworks.com. Изменение fs.defaultFS на sandbox.hortonworks.com, похоже, ничего не меняет. – MK22

+0

Где у вас этот код? Песочница не имеет пользовательского интерфейса, так вы пишете это в терминале? Изменение настроек конфигурации ** внутри ** песочница не должна выполняться. Все в порядке. –

ответ

0

Это вы упомянули URI URI uri = URI.create ("hdfs://localhost:8020/user/maria_dev/test.txt");

Но он пытается достичь sandbox.hortonworks.com

Try путем изменения URI

+0

изменил URI на sandbox.hortonworks.com, но получил это исключение - java.lang.IllegalArgumentException: java.net.UnknownHostException: sandbox.hortonworks.com – MK22

+0

Можете ли вы разместить записи/etc/hosts – BruceWayne

+0

Файл в данном URI открывается, но чтение не происходит. Поэтому я предполагаю, что проблема может быть не с URI. – MK22