Java接口对Hadoop集群的操作
Java接口对Hadoop集群的操作
首先要有一个配置好的Hadoop集群
这里是我在SSM框架搭建的项目的测试类中实现的
一、windows下配置环境变量
下载文件并解压到C盘或者其他目录。
链接:http://pan.baidu.com/s/1jHHPElg 密码:aufd
配置环境变量
1.配置HADOOP_HOME
2.配置PATH
在PATH中添加
%HADOOP_HOME%\bin
- 1
3.配置HADOOP_USER_NAME
这是Hadoop集群的用户名
HADOOP_USER_NAME root
- 1
二、Maven处理依赖jar包
<!--hadoop依赖-->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>2.7.4</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
三、创建测试类
package com.mavenssmlr.hadoop;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
/**
* java接口对Hadoop进行操作
* 1.配置环境变量:HADOOP_HOME
* HADOOP_USER_NAME
* Created by shirukai on 2017/11/2.
*/
@RunWith(SpringJUnit4ClassRunner.class)
//告诉junit spring配置文件
@ContextConfiguration({"classpath:spring/spring-dao.xml"})
public class TestHadoop {
private Logger logger = LoggerFactory.getLogger(this.getClass());
/**
* 连接Hadoop
*/
public FileSystem connectHadoop() {
String nameNodeUrl = "hdfs://10.110.13.243:9000";
String nameNodeName = "fs.defaultFS";
FileSystem fs = null;
Configuration configuration = new Configuration();
try {
configuration.set(nameNodeName, nameNodeUrl);
fs = FileSystem.get(configuration);
logger.info("连接成功:Path={}", fs.getFileStatus(new Path("/")));
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
return fs;
}
/**
* 创建目录
*
* @throws Exception 异常
*/
@Test
public void mkdirFolder() throws Exception {
FileSystem fs = connectHadoop();
String folderName = "/input";
fs.mkdirs(new Path(folderName));
}
/**
* 上传文件到Hadoop
*
* @throws Exception 异常
*/
@Test
public void uploadFile() throws Exception {
FileSystem fs = connectHadoop();
//定义本地上传的文件路径
String localFilePath = "D://Hadoop//upload//";
//定义上传文件
String fileName = "user.xlsx";
//定义要上传到的文件夹
String uploadFolder = "/input/";
InputStream in = new FileInputStream(localFilePath + fileName);
OutputStream out = fs.create(new Path(uploadFolder + fileName));
IOUtils.copyBytes(in, out, 4096, true);
}
/**
* 从Hadoop获取文件
*
* @throws Exception 异常
*/
@Test
public void getFileFromHadoop() throws Exception {
FileSystem fs = connectHadoop();
//定义要下载路径
String downloadPath = www.meiwanyule.cn "/input/";
//定义要下载的文件名
String downloadFileName = "user.xlsx";
//定义要保存的路径
String savePath = "D://www.mhylpt.com Hadoop//download//" + downloadFileName;
InputStream in = fs.open(new Path(downloadPath + downloadFileName));
OutputStream out = new FileOutputStream(savePath);
IOUtils.copyBytes(in, out, 4096, true);
}
/**
* 删除文件
* delete(path,boolean)
* boolean如果为true,将进行递归删除,子目录及文件都会删除
* false 只删除当前
*
* @throws Exception
*/
@Test
public void deleteFile() throws Exception {
FileSystem fs = connectHadoop(www.dongfan178.com);
//要删除的文件路径
String deleteFilePath = "/inputuser.xlsx";
Boolean deleteResult = fs.delete(new Path(deleteFilePath), true);
logger.info("删除文件:={}", deleteResult);
}
/**
* 遍历指定目录下所有的文件
* @throws Exception 异常
*/
@Test
public void getAllFile()throws Exception{
FileSystem fs = connectHadoop();
//定义要获取的目录
String getPath = "/";
FileStatus[] statuses = fs.listStatus(new Path(getPath));
for (FileStatus file: statuses
) {
logger.info("fileName={www.taohuayuan178.com}",file.getPath().getName());
}
}
@Test
public void otherOption(www.yongshiyule178.com) throws Exception{
FileSystem fs = connectHadoop();
}
}
Java接口对Hadoop集群的操作的更多相关文章
- 使用HDFS客户端java api读取hadoop集群上的信息
本文介绍使用hdfs java api的配置方法. 1.先解决依赖,pom <dependency> <groupId>org.apache.hadoop</groupI ...
- 使用JAVA API获取hadoop集群的FileSystem
所需要配置的参数: Configuration conf = new Configuration(); conf.set("fs.defaultFS", "hdfs ...
- 搭建Hadoop集群 (三)
通过 搭建Hadoop集群 (二), 我们已经可以顺利运行自带的wordcount程序. 下面学习如何创建自己的Java应用, 放到Hadoop集群上运行, 并且可以通过debug来调试. 有多少种D ...
- 3-3 Hadoop集群完全分布式配置部署
Hadoop集群完全分布式配置部署 下面的部署步骤,除非说明是在哪个服务器上操作,否则默认为在所有服务器上都要操作.为了方便,使用root用户. 1.准备工作 1.1 centOS6服务器3台 手动指 ...
- 三节点Hadoop集群搭建
1. 基础环境搭建 新建3个CentOS6.5操作系统的虚拟机,命名(可自定)为masternode.slavenode1和slavenode2.该过程参考上一篇博文CentOS6.5安装配置详解 2 ...
- hadoop集群配置和在windows系统上运用java操作hdfs
安装 配置 概念 hadoop常用shell命令 使用java操作hadoop 本文介绍hadoop集群配置和在windows系统上运用java操作hdfs 安装 http://mirror.bit. ...
- Hadoop(八)Java程序访问HDFS集群中数据块与查看文件系统
前言 我们知道HDFS集群中,所有的文件都是存放在DN的数据块中的.那我们该怎么去查看数据块的相关属性的呢?这就是我今天分享的内容了 一.HDFS中数据块概述 1.1.HDFS集群中数据块存放位置 我 ...
- 大数据实操2 - hadoop集群访问——Hadoop客户端访问、Java API访问
上一篇中介绍了hadoop集群搭建方式,本文介绍集群的访问.集群的访问方式有两种:hadoop客户端访问,Java API访问. 一.集群客户端访问 Hadoop采用C/S架构,可以通过客户端对集群进 ...
- Java+大数据开发——Hadoop集群环境搭建(一)
1集群简介 HADOOP集群具体来说包含两个集群:HDFS集群和YARN集群,两者逻辑上分离,但物理上常在一起 HDFS集群: 负责海量数据的存储,集群中的角色主要有 NameNode / DataN ...
随机推荐
- 01HTML
1.认识HTML标记 2.元信息标记meta 2.1设置页面关键字 2.2设置页面说明 2.3定义编辑工具 2.4添加作者信息 2.5设置网页文字及语言 2.6设置网页的定时跳转 <html&g ...
- 51nod——1402最大值、2479小b分糖果 (套路)
1402最大值:正向从1到n,如果没有限制,就依次递增1,如果有限制,就取那个限制和递增到这的最小值.这样保证1和每个限制点后面都是符合题意的递增,但是限制点前面这个位置可能会有落差(之前递增多了). ...
- 数据结构期末复习( はち)--VOA图关键路径求法
题目如下图: 注:将123456当成abcdef. 事件最早发生事件求法:找从原点到该事件的最长路径(从前往后推) 对a:Ve=0 对b:Ve=max{ 2 , 15+4 }=19 对c:Ve=15 ...
- 数据库sql语句的exists和in的区别
性能变化的关键: #1 执行的先后顺序 谁是驱动表,谁先执行查询,谁后执行查询 #2 执行过程 exists的优点是:只要存在就返回了,这样的话很有可能不需要扫描整个表. in需要扫描完整个表,并 ...
- Linux NFS服务器的安装与配置详解
一.NFS服务简介 NFS是Network File System(网络文件系统).主要功能是通过网络让不同的服务器之间可以共享文件或者目录.NFS客户端一般是应用服务器(比如web,负载均衡等),可 ...
- 一次完整的HTTP请求需要的7个步骤
HTTP通信机制是在一次完整的HTTP通信过程中,Web浏览器与Web服务器之间将完成下列7个步骤: 1:建立TCP连接 在HTTP工作开始之前,Web浏览器首先要通过网络与Web服务器建立连接,该连 ...
- JS如何判断是否为ie浏览器的方法(包括IE10、IE11在内)
判断是否IE浏览器用的是window.navigator.userAgent,跟踪这个信息,发现在开发环境,识别为IE10,但访问服务器则识别为IE11,但IE11的userAgent里是没有MSIE ...
- devicemaps_init(mdesc)
devicemaps_init的参数为machine_desc结构体.以s3c6410为例,在arch/arm/mach-s3c64xx/mach-smdk6410.c中使用上述宏声明machine_ ...
- proc的妙用
今天在在公司做网络驱动开发测试时,随机包出现收包计数停止的现象,当时怀疑是DMA rx buffer不足导致,想通过对比收发包正常和收发包不正常是DMA相关寄存器的情况. 后跟踪代码,若在收发包里面增 ...
- 传送流(TS)的基础知识
数字电视的TS包和TS流的组成和功能 综合考虑几下几个因素: (1)包的长度不能过短,否则包头开销所占比例过大, 导致传输效率下降 (2)包的长度不能过长,否则在丢失同步的情况下恢复同步的 周期过长, ...