大数据全系列 教程
1869个小节阅读:467.3k
目录
408考研
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
准备工作:
xxxxxxxxxx
#在node1通过脚本生成一个文本文件hh.txt
[root@node1 ~]# for i in `seq 100000`; do echo "hello itbaizhan $i" >> hh.txt; done
# 安装lrzsz包
[root@node1 ~]# yum install lrzsz -y
#将生产的文件下载到F:
[root@node1 ~]# sz hh.txt
方式一:编写Java基础代码(选学):
xxxxxxxxxx
@Test
public void uploadFile() throws Exception {
//1.创建配置文件对象
Configuration configuration = new Configuration();
//2.创建文件系统对象,指定URI,conf,userName
FileSystem fileSystem = FileSystem.get(new URI("hdfs://node1:9820"),
configuration,"root");
//3.创建本地输入流对象
FileInputStream fileInputStream = new FileInputStream("F:\\hh.txt");
//4.创建HDFS文件系统的输出流对象
FSDataOutputStream fsDataOutputStream = fileSystem.create(new Path("/api/show/hh.txt"));
//5.创建字节数组,临时存储中间缓存数据
byte[] data = new byte[1024];
int len = -1;
while((len = fileInputStream.read(data))!=-1){
fsDataOutputStream.write(data,0,len);
}
//6.关闭输入流对象
fileInputStream.close();
//7.刷新输出流中的数据
fsDataOutputStream.flush();
//8.关闭输出流
fsDataOutputStream.close();
//9.断开和HDFS之间的连接
fileSystem.close();
}
方式二:调用HDFS高级API
xxxxxxxxxx
//使用HDFS高级API
@Test
public void copyFromLocalFile() throws Exception {
//1.创建文件系统对象
Configuration configuration = new Configuration();
//2.设置block大小为1MB,上传时候使用,仅对当前方法有效
configuration.set("dfs.blocksize","1048576");
//3.设置副本数
//configuration.set("dfs.replication","2");
//4.创建文件系统对象
FileSystem fileSystem = FileSystem.get(new URI("hdfs://node1:9820"), configuration, "root");
//5.上传文件
fileSystem.copyFromLocalFile(new Path("F:\\hh.txt"),new Path("/api/show/hh3.txt"));
//6.关闭资源
fileSystem.close();
System.out.println("上传操作完成。。。");
}
参数优先级总结:
参考原则是“就近一致”(约近优先级约高)
客户端代码中的参数设置的值 > 自定义配置文件中的参数的值 > 服务器默认xxx-default.xml