云计算上传大文件至hadoop
1 启动HDFS服务,查看HDFS的Web用户管理界面
手动创建一个大文件,并使用 HDFS Shell Command 进行操作,包括 dfsadmin(查看文件系统状态)、fsck(测试系统完
整性)和常规文件操作(ls、put、get 等);
①首次启动hdfs,需要格式化文件系统,后面不需要重复运行
在hadoop文件的bin目录下,执行 hdfs namenode -format
②到hadoop文件的sbin目录下,执行
./start-yarn.sh
./start-dfs.sh
再次输入jps出现jps、SecondaryNameNode、NameNode、DataNode则证明成功
本轮实现时并未出现DataNode,发现是配置文件出现问题,在hadoop文件下
找到hdfs-site.xml,增加对应tmp文件夹的子文件夹name和data即可
③在本机浏览器输入localhost:50070可以实现web访问
2 手动创建一个大文件,并使用 HDFS Shell Command 进行操作
①手动创建大文件
在想要创建文件夹的路径下打开中端
输入dd if=/dev/zero of=BiggestFile bs=1M count=2049
出现对应文件加载成功并能看见对应文件即成功
②使用 HDFS Shell Command 进行操作
1、 hdfs dfsadmin -report
2、 上传大文件
hadoop fs -mkdir /B19031517
hadoop fs -ls /
hadoop fs -put /home/ubuntu-2/YunJiSuan/BiggestFile.txt /B19031517
3、 测试系统完整性
hdfs fsck /B19031517/BiggestFile.txt
上传成功后可在文件系统查看到相应文件夹和文件
3 查阅 HDFS 的应用开发文档(JAVA API),编写 Java 客户端
(放到主机IDEA进行编译)
文件进行上传/下载操作;
后面为java源码
源码:import java.net.URI;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.junit.Test;
/**
-
author LEMON
-
date 2022-05-12-22:08
/
public class test {
/*-
IP地址:端口
/
static String STR = “hdfs://192.168.216.130:9000/”;
/* -
上传文件本地地址
/
static String UPLOAD_FILE = “D:\云计算\实验二\download.txt”;
/* -
上传Hadoop文件系统的地址
/
static String DES_POS = “/B19031517”;
/* -
从Hadoop文件系统下载文件地址
/
static String DOWNLOAD_FILE = “/B19031517/download.txt”;
/* -
下载文件存放地址
/
static String DOWNLOAD_POS = “D:\云计算\实验二”;
/* -
用户
*/
static String USER = “ubuntu-2”;
public static void main(String[] args) throws Exception {
//上传//1实例化configuration
Configuration configuration = new Configuration();
configuration.set(“fs.hdfs.impl”,“org.apache.hadoop.hdfs.DistributedFileSystem”);
//2.获取操作文件系统的客户端实例
FileSystem fs = FileSystem.get(new URI(STR), configuration, USER);
//3.执行上传操作 (src 本地资源 ,dst 上传目的地)
fs.copyFromLocalFile(new Path(UPLOAD_FILE), new Path(DES_POS));//两次上传一样的会被覆盖
//4.关闭链接
fs.close();
}
@Test
public void download() throws Exception{
//下载Configuration configuration = new Configuration(); FileSystem fs = FileSystem.get(new URI(STR), configuration, USER); fs.copyToLocalFile(false, new Path(DOWNLOAD_FILE), new Path(DOWNLOAD_POS), true); fs.close();
}
} -