Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在hadoop中创建datanode路径?_Java_Hadoop_Hdfs_Microsoft Distributed File System - Fatal编程技术网

Java 如何在hadoop中创建datanode路径?

Java 如何在hadoop中创建datanode路径?,java,hadoop,hdfs,microsoft-distributed-file-system,Java,Hadoop,Hdfs,Microsoft Distributed File System,这是我用来将文件写入hdfs import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.URI; import java.net.URISyntaxException; import org.apache.hadoop

这是我用来将文件写入
hdfs

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URI;
import java.net.URISyntaxException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;
import org.apache.hadoop.util.Progressable;

public class WriteFileToHDFS {
  public static void main(String[] args) throws IOException, URISyntaxException 
   {
      System.setProperty("hadoop.home.dir", "/");   
      System.setProperty("HADOOP_USER_NAME", "hdfs");  

      //1. Get the instance of COnfiguration
      Configuration configuration = new Configuration();

      //2. Create an InputStream to read the data from local file
      InputStream inputStream = new BufferedInputStream(new FileInputStream("/Users/rabbit/Research/hadoop/sample_files/TAO.mp4"));  

      //3. Get the HDFS instance
      FileSystem hdfs = FileSystem.get(new URI("hdfs://192.168.143.150:9000"), configuration);  

      //4. Open a OutputStream to write the data, this can be obtained from the FileSytem
      OutputStream outputStream = hdfs.create(new Path("hdfs://192.168.143.150:9000/filestore/TAO.mp4"),   
      new Progressable() {  
              @Override
              public void progress() {
                System.out.println("....");
              }
        });
      try
      {
        IOUtils.copyBytes(inputStream, outputStream, 4096, false); 
      }
      finally
      {
        IOUtils.closeStream(inputStream);
        IOUtils.closeStream(outputStream);
      } 
  }
}
我希望它被写成
/data/hadoop data/dn/current/blk_1073741869
而不是
/data/hadoop data/dn/current/BP-1308070615-172.22.131.23-1533215887051/current/finalized/subdir0/subdir0/blk_1073741869
。我不明白
BP-1308070615-172.22.131.23-1533215887051/current/finalized/subdir0/subdir0
-该路径是在哪里生成的

在hadoop中写入数据节点时如何定义路径结构?

BP代表“块池”,是属于单个HDFS命名空间的块的集合

这是hdfs管理数据块的方式,您可以参考此链接了解有关它的一切:

BP代表“块池”,是属于单个HDFS命名空间的块的集合

下一部分是1308070615,是随机生成的整数

IP地址172.22.131.23是最初创建块池的NameNode的地址


最后一部分1533215887051是名称空间的创建时间。

仅基于当前/blk_1073741869的期望值?你从哪里得到的那个号码?那是fsimage中的块id。@cricket\u 007当然,但我想问你,如果不先看fsimage,你怎么会想到那个号码?(基于给出的代码)无论如何,我觉得你的问题在这里得到了回答,这是一个非常有趣的问题。如果你已经得到了答案,如果你能分享答案,那就太好了:)