java—如何在hadoop中创建数据节点路径?

qnzebej0  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(446)

这是我用来编写文件的示例代码段 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. //1. Get the instance of COnfiguration
  2. Configuration configuration = new Configuration();
  3. //2. Create an InputStream to read the data from local file
  4. InputStream inputStream = new BufferedInputStream(new FileInputStream("/Users/rabbit/Research/hadoop/sample_files/TAO.mp4"));
  5. //3. Get the HDFS instance
  6. FileSystem hdfs = FileSystem.get(new URI("hdfs://192.168.143.150:9000"), configuration);
  7. //4. Open a OutputStream to write the data, this can be obtained from the FileSytem
  8. OutputStream outputStream = hdfs.create(new Path("hdfs://192.168.143.150:9000/filestore/TAO.mp4"),
  9. new Progressable() {
  10. @Override
  11. public void progress() {
  12. System.out.println("....");
  13. }
  14. });
  15. try
  16. {
  17. IOUtils.copyBytes(inputStream, outputStream, 4096, false);
  18. }
  19. finally
  20. {
  21. IOUtils.closeStream(inputStream);
  22. IOUtils.closeStream(outputStream);
  23. }

}
}

  1. 我希望这是写为 `/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` -这条路生成了吗?
  2. hadoop中写入数据节点时如何定义路径结构?
83qze16e

83qze16e1#

bp代表“block pool”,它是属于单个hdfs名称空间的块的集合。
这就是hdfs管理数据块的方式,您可以参考此链接了解它的所有内容:
https://hortonworks.com/blog/hdfs-metadata-directories-explained/

e37o9pze

e37o9pze2#

bp代表“block pool”,是属于单个hdfs命名空间的块的集合。
下一部分是1308070615,是一个随机生成的整数。
ip地址172.22.131.23是最初创建块池的namenode的地址。
最后一部分1533215887051是命名空间的创建时间。

相关问题