- 在集群实体机中,我们可以直接通过实体机操作hdfs系统,直接使用hdfs命令将实体机中的文件上传至集群文件系统中,但实际应用中集群会面向客户端操作,不再是传统命令操作,而是通过相应的客户端程序来执行
测试之前先注意一下几点:
- 1.集群启动状况,是否正常
- 2.测试环境是否搭好(这里使用的eclipse导入jar方式,也可以使用pom配置,intellij搭建也可以)
- 3.测试的文件在客户端磁盘路径中不要带中文字符(文件内容可以带中文)
- 4.文件路径不能写错,上传之后支持不会报错,但集群文件不存在
- 5.下面URL中用主机名代替的ip,因为做了hosts映射,windows端和集群中各个节点最好都给hosts文件中做主机映射(不配置hosts也可以直接写ip,但相对繁琐)
测试文件内容:
测试源码如下:
package hdfs0508;
import java.net.URI;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
public class HDFSClient {
public static void main(String[] args) throws Exception {
//0.获取系统配置信息
Configuration conf = new Configuration();
//conf.set("fs.defaultFS", "hdfs://hadoop18020");此方法需要走后门连接集群,
//1.获取HDFS文件系统,
FileSystem fileSystem = FileSystem.get(new URI("hdfs://hadoop1:8020") , conf, "york");
//2.拷贝文件到集群,true表示文件上传成功后自动删除源文件,即删除客户端下的源文件
fileSystem.copyFromLocalFile(true,new Path("C:/win10Hadoop/xiyou.txt"),new Path("/user/york/input"));
//3.关闭fileSystem
fileSystem.close();
}
}
执行结果:
- 1.日志信息(未加log4j日志包,出现警告提醒,导入即可):
log4j:WARN No appenders could be found for logger (org.apache.hadoop.metrics2.lib.MutableMetricsFactory).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
- 集群命令查看上传的文件:
- 网页查看
可支持下载: