HDFS使用JavaAPI操作上传特定副本到datanode

本文介绍了如何在Hadoop环境中,通过JavaAPI实现对HDFS的文件上传,并指定副本存放的datanode。首先,列举了需要导入的相关jar包,接着展示了具体的Java代码实现。
摘要由CSDN通过智能技术生成

一、首先自然是导包

   $HADOOP_HOME/share/hadoop/common/*.jar
   $HADOOP_HOME/share/hadoop/common/lib/*.jar
   $HADOOP_HOME/share/hadoop/hdfs/*.jar
   $HADOOP_HOME/share/hadoop/hdfs/lib/*.jar


二、代码如下

package com.stu.hdfs;
/**
 * 
 * @author ysw28
 * HDFS的API操作
 */

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URI;
import java.util.Arrays;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.BlockLocation;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.LocatedFileStatus;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.RemoteIterator;
import org.apache.hadoop.io.IOUtils;
import org.junit.Test;

public class TestDemo319 {

	@Test
	// 创建目录
	public void mkDir() {

		try {
			// 连接HDFS,设置副本数
			Configuration conf = new Configuration();
			conf.set("dfs.replication", "1");
			// 创建一个客户端
			FileSystem client = FileSystem.get(new URI("hdfs://HP110:9000"), conf, "root");
			// 创建目录
			Path path = new Path("/Demo319");
			client.mkdirs(path);
			// 关闭客户端
			client.close();
			System.out.println("创建目录成功");
		} catch (Exception e) {
			e.printStackTrace();
			System.out.println("创建目录失败");
		}
	}

	@Test
	// 删除目录,删除文件同理
	public void delDir() {

		try {
			// 连接HDFS
			Configuration conf = new Configuration();
			// 创建客户端
			FileSystem client = FileSystem.get(new URI("hdfs://HP110:9000"), conf, "root");
			// 删除目录
			Path path = new Path("/Demo319");
			if (client.exists(path)) {
				client.delete(path, true);
				// 关闭客户端
				client.close();
				System.out.println("删除目录成功");
			} else {
				System.out.println("没有这个文件");
			}
		} catch (Exception e) {
			e.printStackTrace();
			System.out.println("删除目录失败");
		}
	}

	@Test
	// 上传文件
	public void copyFromLocal() {

		try {
			// 连接HDFS,指定副本数
			Configuration conf = new Configuration();
			conf
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青年夏日科技

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值