Я пытаюсь запустить java код в окне для доступа к Had oop 3.1.3 в virtualbox 6.1 с redhat 7.7.
has oop со всеми компонентами, работающими нормально (NameNode, datanode , ....).
19856 NameNode
20864 NodeManager
20274 SecondaryNameNode
20532 ResourceManager
20043 DataNode
Я могу отобразить данные oop и кластер из окна после создания порта. Предисловие VBox
Host IP 127.0.0.1
Gust IP 192.168.122.1
Для следующих портов:
9870
80888
9000
9866
9864
9869
9865
9867
] 1 ] 1
Если бы oop работал нормально и отображался как с хоста, так и с гостем
доступный из окна на http://localhost:8088/cluster
доступный с Linux красная шляпа http://192.168.122.1:8088
доступный из окна браузера на http://localhost:9870/
доступный из Linux Red Hat браузера на http://192.168.122.1:9870
Linux /ect/hosts
######127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
####::1 localhost localhost.localdomain localhost6 localhost6.localdomain6q
192.168.122.1 master.hadoop master
Virsualbox Network:
NAT
Java Код успешно запущен на виртуальной коробке (gust с h ad oop), но не может быть успешно запущен из windows (хост)
import java.io.IOException;
import java.net.URI;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;
public class HadoopFileSystemCat {
public static void main(String[] args) throws IOException {
String uri = "hdfs://localhost:9000/TES";
Configuration conf = new Configuration();
conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");
FileSystem fs = FileSystem.get(URI.create(uri), conf);
FSDataInputStream in = null;
try {
in = fs.open(new Path(uri));
System.out.println(fs.getFileBlockLocations(new Path(uri), 0, 0)[0]);
System.out.println(fs.getFileBlockLocations(new Path(uri), 0, 0)[0].getNames()[0]);
IOUtils.copyBytes(in, System.out, 4096, false);
} finally {
IOUtils.closeStream(in);
}
}
}
Кодовый вывод
0,10,localhost
192.168.122.1:9866
Сообщение об исключении
Exception in thread "main" org.apache.hadoop.hdfs.BlockMissingException: Could not obtain block: BP-428104912-127.0.0.1-1586539199175:blk_1073741825_1001 file=/DDD
at org.apache.hadoop.hdfs.DFSInputStream.refetchLocations(DFSInputStream.java:875)
at org.apache.hadoop.hdfs.DFSInputStream.chooseDataNode(DFSInputStream.java:858)
at org.apache.hadoop.hdfs.DFSInputStream.chooseDataNode(DFSInputStream.java:837)
at org.apache.hadoop.hdfs.DFSInputStream.blockSeekTo(DFSInputStream.java:566)
at org.apache.hadoop.hdfs.DFSInputStream.readWithStrategy(DFSInputStream.java:756)
at org.apache.hadoop.hdfs.DFSInputStream.read(DFSInputStream.java:825)
at java.io.DataInputStream.read(DataInputStream.java:100)
at org.apache.hadoop.io.IOUtils.copyBytes(IOUtils.java:94)
at org.apache.hadoop.io.IOUtils.copyBytes(IOUtils.java:68)
at com.mycompany.hdfs_java_api.HadoopFileSystemCat.main(HadoopFileSystemCat.java:39)
фактически блокировка доступна, как мы видим через терминал
[muneeralnajdi@localhost hadoop]$ bin/hdfs dfs -ls /
Found 1 items
-rw-r--r-- 1 muneeralnajdi supergroup 10 2020-04-10 20:25 /DDD
Имеет oop Конфигурация
Core-site.xsml
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://master.hadoop:9000</value>
</property>
</configuration>
пряжа-сайт. xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/muneeralnajdi/hadoop_store/hdfs/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/muneeralnajdi/hadoop_store/hdfs/datanode</value>
</property>
<property>
<name>dfs.client.use.datanode.hostname</name>
<value>true</value>
<description>Whether clients should use datanode hostnames when
connecting to datanodes.
</description>
</property>
<property>
<name>dfs.namenode.http-address</name>
<value>master.hadoop:9870</value>
</property>
</configuration>
hdfs-сайт. xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/muneeralnajdi/hadoop_store/hdfs/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/muneeralnajdi/hadoop_store/hdfs/datanode</value>
</property>
<property>
<name>dfs.client.use.datanode.hostname</name>
<value>true</value>
<description>Whether clients should use datanode hostnames when
connecting to datanodes.
</description>
</property>
<property>
<name>dfs.namenode.http-address</name>
<value>master.hadoop:9870</value>
</property>
</configuration>
Может ли кто-нибудь помочь мне решить эту проблему
I go с помощью некоторых ответов
Доступ к файлу в oop Виртуальный кластер
Но API java по-прежнему не может получить доступ к блоку данных с windows