文档章节

Hadoop(三)java操作HDFS

Joker上上签
 Joker上上签
发布于 2017/03/06 15:36
字数 706
阅读 17
收藏 0

1.Java读取hdfs文件内容

    1.1.在创建 /root/Downloads/ 目录下创建hello文件,并写入内容

    1.2.把hello文件从linux上传到hdfs中

    1.3 eclipse中创建java项目并导入jar包(jar包来自hadoop)

    1.4 输入如下代码,并执行

public class TestHDFSRead {
	
	public static final String HDFS_PATH="hdfs://192.168.80.100:9000/hadooptest/hello";
	
	public static void main(String[] args) throws Exception {
		// 将hdfs 格式的url 转换成系统能够识别的
		URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory());
		final URL url = new URL(HDFS_PATH);
		final InputStream in = url.openStream();
		//copyBytes(in, out, buffSize, close)
		//四个参数分别为输入流,输出流,缓冲区大小,是否关闭流
		IOUtils.copyBytes(in, System.out, 1024, true);
	}
}

2.java创建HDFS文件夹

import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

import java.net.URI;

import org.apache.hadoop.conf.Configuration;

public class TestHDFS {
	
	public static final String HDFS_PATH="hdfs://192.168.80.100:9000";
	//前面有斜线表示从根目录开始,没有斜线从/usr/root开始
	public static final String HadoopTestPath="/hadooptest2";
	
	public static void main(String[] args) throws Exception {
		final FileSystem fileSystem = FileSystem.get(new URI(HDFS_PATH), new Configuration());
		//创建文件夹
		fileSystem.mkdirs(new Path(HadoopTestPath));
	}
}

执行后,指令查询是否有该文件夹:

3.java上传文件到HDFS

import java.io.FileInputStream;
import java.net.URI;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;

public class TestHDFS {
	
	public static final String HDFS_PATH="hdfs://192.168.80.100:9000";
	//前面有斜线表示从根目录开始,没有斜线从/usr/root开始
	public static final String HadoopTestPath="/hadooptest2";
	public static final String HadoopFilePath="/hadooptest2/hello123";//hello123为需要写入的文件
	
	public static void main(String[] args) throws Exception {
		final FileSystem fileSystem = FileSystem.get(new URI(HDFS_PATH), new Configuration());
		//创建文件夹
		//fileSystem.mkdirs(new Path(HadoopTestPath));
		//上传文件
		final FSDataOutputStream out = fileSystem.create(new Path(HadoopFilePath));
		final FileInputStream in = new FileInputStream("d:/hello2.txt");//hello2.txt文件写入hello123
		IOUtils.copyBytes(in,out, 1024, true);
	}
}

4.java下载HDFS文件

public class TestHDFS {
	
	public static final String HDFS_PATH="hdfs://192.168.80.100:9000";
	//前面有斜线表示从根目录开始,没有斜线从/usr/root开始
	public static final String HadoopTestPath="/hadooptest2";
	public static final String HadoopFilePath="/hadooptest2/hello123";//hello123为需要写入的文件
	
	public static void main(String[] args) throws Exception {
		final FileSystem fileSystem = FileSystem.get(new URI(HDFS_PATH), new Configuration());
		//创建文件夹
		//fileSystem.mkdirs(new Path(HadoopTestPath));
		//上传文件
		//final FSDataOutputStream out = fileSystem.create(new Path(HadoopFilePath));
		//final FileInputStream in = new FileInputStream("d:/hello2.txt");//hello2.txt文件写入hello123
		//IOUtils.copyBytes(in,out, 1024, true);
		//下载文件
		final FSDataInputStream in = fileSystem.open(new Path(HadoopFilePath));
		IOUtils.copyBytes(in,System.out, 1024, true);
		
	}
}

5.java删除HDFS文件

public class TestHDFS {
	
	public static final String HDFS_PATH="hdfs://192.168.80.100:9000";
	//前面有斜线表示从根目录开始,没有斜线从/usr/root开始
	public static final String HadoopTestPath="/hadooptest2";
	public static final String HadoopFilePath="/hadooptest2/hello123";//hello123为需要写入的文件
	
	public static void main(String[] args) throws Exception {
		final FileSystem fileSystem = FileSystem.get(new URI(HDFS_PATH), new Configuration());
		//创建文件夹
		//fileSystem.mkdirs(new Path(HadoopTestPath));
		//上传文件
		//final FSDataOutputStream out = fileSystem.create(new Path(HadoopFilePath));
		//final FileInputStream in = new FileInputStream("d:/hello2.txt");//hello2.txt文件写入hello123
		//IOUtils.copyBytes(in,out, 1024, true);
		//下载文件
		//final FSDataInputStream in = fileSystem.open(new Path(HadoopFilePath));
		//IOUtils.copyBytes(in,System.out, 1024, true);
		//删除文件(夹),两个参数 第一个为删除路径,第二个为递归删除
		fileSystem.delete(new Path(HadoopFilePath),true);
	}
}

下图第一个红框为删除前,第二个红框为删除后:

 

© 著作权归作者所有

Joker上上签
粉丝 0
博文 8
码字总数 4630
作品 0
南昌
高级程序员
私信 提问
hadoop2.2.0伪分布式搭建

第一步:安装jdk 我的linux版本是centos7,使用最简单的安装方式,这里首先说一下,由于系统会预装openjdk版本等其他各种版本,首先要做的是清除这些版本,然后iu安装oracle的jdk版本 1.1 查...

施耀邦
2015/06/23
145
0
CDH版本hadoop2.6伪分布式安装

CDH版本hadoop的一个重要分支,使用hadoop-2.6.0-cdh5.9.0在单台CentOS配置hadoop伪分布式环境; 1、基础环境配置 1.1、关闭防火墙和SELinux 1.1.1、关闭防火墙 1.1.2、关闭SELinux 注:以上...

巴利奇
2018/10/30
0
0
HDFS 实验 (三) hadoop节点配置

vi /etc/hosts 添加节点dns信息 192.168.209.157 node1 192.168.209.158 node2 192.168.209.159 node3 vi /etc/profile 添加运行目录 export HADOOP_HOME=/home/hadoop/hadoop-3.1.0 exportP......

pcdog
2018/04/13
0
0
hadoop 2.8.1安装和配置(单机)

一、java环境(略) 二、配置SSH无密码登陆 出现signandsendpubkey: signing failed: agent refused operation 测试无密码登录 三、创建hadoop用户组、用户 打算以普通用户(平时常用的这里m...

wangxuwei
2017/08/17
304
0
Hadoop 2.7.5 集群搭建基于CentOS7u3

记录在64位CentOS 7环境下搭建Hadoop 2.7集群的步骤,这些记录都仅供参考! 1、操作系统环境配置 1.1、操作系统环境 1.2、关闭防火墙和SELinux 1.2.1、关闭防火墙 1.2.2、关闭SELinux 注:以...

巴利奇
2018/10/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

EDI 电子数据交换全解指南

EDI(Electronic Data Interchange,电子数据交换)技术使得企业与企业(B2B)实现通信自动化,帮助交易伙伴和组织更快更好地完成更多工作,并消除了人工操作带来的错误。从零售商到制造商、物...

EDI知行软件
今天
3
0
CentOS7的LVM动态扩容

# 问题 CentOS7上面的磁盘空间有点紧张,需要扩容。 解决 查询当前磁盘状态 [root@xxx ~]# lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTfd0 2:0 1 4K ...

亚林瓜子
今天
3
0
Kafka 0.8 Producer (0.9以前版本适用)

Kafka旧版本producer由scala编写,0.9以后已经废除 示例代码如下: import kafka.producer.KeyedMessage;import kafka.javaapi.producer.Producer;import kafka.producer.ProducerConfig;......

实时计算
今天
5
0
Giraph源码分析(八)—— 统计每个SuperStep中参与计算的顶点数目

作者|白松 目的:科研中,需要分析在每次迭代过程中参与计算的顶点数目,来进一步优化系统。比如,在SSSP的compute()方法最后一行,都会把当前顶点voteToHalt,即变为InActive状态。所以每次...

数澜科技
今天
6
0
Navicat 快捷键

操作 结果 ctrl+q 打开查询窗口 ctrl+/ 注释sql语句 ctrl+shift +/ 解除注释 ctrl+r 运行查询窗口的sql语句 ctrl+shift+r 只运行选中的sql语句 F6 打开一个mysql命令行窗口 ctrl+l 删除一行 ...

低至一折起
今天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部