доступ к данным в VirtualBox gust redhat7.7 окно формы 10 хост java API - PullRequest
0 голосов
/ 10 апреля 2020

Я пытаюсь запустить 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

accessable  from window on  http://localhost:8088/cluster

доступный из окна браузера на http://localhost:9870/

доступный из Linux Red Hat браузера на http://192.168.122.1:9870

accessable  from window browser on  http://localhost: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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...