小标
2019-01-23
来源 :
阅读 1107
评论 0
摘要:本文主要向大家介绍了【云计算】HDFS相关操作,通过具体的内容向大家展现,希望对大家学习云计算有所帮助。
本文主要向大家介绍了【云计算】HDFS相关操作,通过具体的内容向大家展现,希望对大家学习云计算有所帮助。
package demo;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.junit.Test;
/*
* 原因:
* Caused by: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.AccessControlException):
* Permission denied: user=lenovo, access=WRITE, inode="/folder1":root:supergroup:drwxr-xr-x
*
* 当前用户:lenovo 执行w权限
* HDFS的根的权限:root:supergroup:drwxr-xr-x
*
* 四种方式,执行程序:
* 1、设置一个属性
* 2、使用-D参数
* 3、改变目录的权限 hdfs dfs -chmod 777 /folder2
* 4、dfs.permissions ---> false 禁用HDFS的权限检查功能
*/
public class TestMkDir {
@Test
public void test1() throws Exception{
//方式一:设置一个属性,代表用户的身份
System.setProperty("HADOOP_USER_NAME", "root");
//指定NameNode的地址
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://192.168.157.111:9000");
//获取一个HDFS的客户端
FileSystem client = FileSystem.get(conf);
//创建目录
client.mkdirs(new Path("/folder1"));
//关闭客户端
client.close();
}
@Test
public void test2() throws Exception{
//指定NameNode的地址
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://192.168.157.111:9000");
//获取一个HDFS的客户端
FileSystem client = FileSystem.get(conf);
//创建目录
client.mkdirs(new Path("/folder2"));
//关闭客户端
client.close();
}
@Test
public void test3() throws Exception{
//指定NameNode的地址
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://192.168.157.111:9000");
//获取一个HDFS的客户端
FileSystem client = FileSystem.get(conf);
//创建目录
client.mkdirs(new Path("/folder2/folder3"));
//关闭客户端
client.close();
}
@Test
public void test4() throws Exception{
//指定NameNode的地址
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://192.168.157.111:9000");
//获取一个HDFS的客户端
FileSystem client = FileSystem.get(conf);
//创建目录
client.mkdirs(new Path("/folder4"));
//关闭客户端
client.close();
}
}
上传文件
package demo;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStream;
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.junit.Test;
public class TestUpload {
@Test
public void test1() throws Exception{
//构造一个输入流
InputStream in = new FileInputStream("d:\\dowload\\hadoop-2.4.1.zip");
//配置NameNode地址
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://192.168.157.111:9000");
//客户端
FileSystem client = FileSystem.get(conf);
//得到一个输出流
OutputStream out = client.create(new Path("/tools/a.zip"));
//构造一个缓冲区
byte[] buffer = new byte[1024];
int len=0;
while((len=in.read(buffer)) >0) {
//读取到了数据
out.write(buffer, 0, len);
}
out.flush();
out.close();
in.close();
}
@Test
public void test2() throws Exception{
//构造一个输入流
InputStream in = new FileInputStream("d:\\dowload\\hadoop-2.4.1.zip");
//配置NameNode地址
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://192.168.157.111:9000");
//客户端
FileSystem client = FileSystem.get(conf);
//得到一个输出流
OutputStream out = client.create(new Path("/tools/b.zip"));
//使用工具类简化程序
IOUtils.copyBytes(in, out, 1024);
}
}
下载文件
package demo;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
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.junit.Test;
public class TestDownload {
@Test
public void test1() throws Exception{
//配置NameNode地址
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://192.168.157.111:9000");
//客户端
FileSystem client = FileSystem.get(conf);
//打开一个输入流 <------HDFS
InputStream in = client.open(new Path("/tools/a.zip"));
//构造一个输出流 ----> d:\temp\aa.zip
OutputStream out = new FileOutputStream("d:\\temp\\bb.zip");
//使用工具类简化程序
IOUtils.copyBytes(in, out, 1024);
// //构造一个缓冲区
// byte[] buffer = new byte[1024];
// int len=0;
// while((len=in.read(buffer)) >0) {
// //读取到了数据
// out.write(buffer, 0, len);
// }
// out.flush();
// out.close();
// in.close();
}
}
查看文件信息
package demo;
import java.util.Arrays;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.BlockLocation;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hdfs.DistributedFileSystem;
import org.junit.Test;
public class TestMetaData {
@Test
public void testCheckFileInfo() throws Exception{
//配置NameNode地址
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://192.168.157.111:9000");
//客户端
FileSystem client = FileSystem.get(conf);
//获取该目录下所有文件的信息
FileStatus[] filesStatus = client.listStatus(new Path("/tools"));
for(FileStatus f:filesStatus){
System.out.println(f.isDirectory()"目录":"文件");
System.out.println(f.getPath().getName());
System.out.println(f.getBlockSize());
System.out.println("*************************");
}
client.close();
}
@Test
public void testCheckFileBlock() throws Exception{
//配置NameNode地址
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://192.168.157.111:9000");
//客户端
FileSystem client = FileSystem.get(conf);
//获取该文件的信息
FileStatus fs = client.getFileStatus(new Path("/tools/a.zip"));
//获取文件的数据块的信息
BlockLocation[] location = client.getFileBlockLocations(fs, 0, fs.getLen());
for(BlockLocation block:location){
//block.getHosts() ---> 为什么返回一个String[] System.out.println(Arrays.toString(block.getHosts()) + "\t"+ Arrays.toString(block.getNames()));
}
client.close();
}
}
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标大数据云计算大数据安全频道!
喜欢 | 0
不喜欢 | 0
您输入的评论内容中包含违禁敏感词
我知道了

请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号