三、Hadoop 的 API
1.环境搭建
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>2.6.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-hdfs -->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.6.0</version>
</dependency>
2.问题解决
Windows开发Hadoop应用环境配置
- 解压hadoop安装包到C:/
- 将winutils.exe和hadoop.dll拷贝到hadoop的bin目录下
- 在windows配置HADOOP_HOME环境变量
- 重启开发工具idea,否则开发工具无法识别HADOOP_HOME
- 在Windows主机配置CentOS的主机名和IP的映射关系
C:\Windows\System32\drivers\etc\hosts
192.168.169.139 CentOS
HDFS权限不足导致写失败?
org.apache.hadoop.security.AccessControlException: Permission denied: user=HIAPAD, access=WRITE, inode="/":root:supergroup:drwxr-xr-x
at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkFsPermission(FSPermissionChecker.java:271)
at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:257)
...
解决方案
方案1
etc/hadoop/hdfs-site.xml
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
关闭HDFS文件权限检查,修改完成后,重启HDFS服务
方案2
-DHADOOP_USER_NAME=root
设置JAVA虚拟机启动参数java XXX -Dxx=xxx
3.HDFS
package com.baizhi.hdfs;/**
- @Author:luoht
- @Description:
- @Date:Create in 16:21 2019/1/3
*/
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.*;
import org.apache.hadoop.io.IOUtils;
import org.apache.hadoop.util.Progressable;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.*;
import java.io.*;
/**
- @program: hadoop_01
- @description:
- @author: luoht
- @create: 2019-01-03 16:21
**/
public class TestHDFS {
private FileSystem fileSystem;
private Configuration conf;
@Before
public void before() throws IOException {
conf = new Configuration();
conf.addResource("core-site.xml");
conf.addResource("hdfs-site.xml");
fileSystem=FileSystem.newInstance(conf);
}
@Test
public void testConfig(){
String value = conf.get("dfs.replication");
System.out.println(value);
}
@Test
public void testUpload01() throws IOException {
String file ="C:\\Users\\Administrator\\Desktop\\郁金香開了麽?.txt";
Path dst = new Path("/demo/access/springBoot.pdf");
FileInputStream inputStream = new FileInputStream(file);
FSDataOutputStream outputStream = fileSystem.create(dst, new Progressable() {
@Override
public void progress() {
System.out.println("..");
}
});
IOUtils.copyBytes(inputStream,outputStream,1024,true);
}
@Test
public void testUpload02() throws IOException {
Path src = new Path("C:\\Users\\Administrator\\Desktop\\郁金香開了麽?.txt");
Path dst = new Path("/郁金香开了么?.txt");
fileSystem.copyFromLocalFile(src,dst);
}
@Test
public void testDownload01() throws IOException {
String file="C:\\Users\\Administrator\\Desktop\\郁金香不开了.txt";
Path dst = new Path("/郁金香开了么?.txt");
FileOutputStream outputStream = new FileOutputStream(file);
InputStream inputStream = fileSystem.open(dst);
IOUtils.copyBytes(inputStream,outputStream,1024,true);
}
@Test
public void testDownload02() throws IOException {
Path dst = new Path("C:\\Users\\Administrator\\Desktop\\郁金香不开了.txt");
Path src = new Path("/demo/access/springBoot.pdf");
fileSystem.copyToLocalFile(false,src,dst,true);
}
@Test
public void testDelete() throws IOException {
Path src = new Path("/demo");
/*true 代表递归删除子文件*/
fileSystem.delete(src,true);
}
@Test
public void testExits() throws IOException {
Path src = new Path("/郁金香开了么?.txt");
boolean exists = fileSystem.exists(src);
//Junit之 断言 -静态导包
assertTrue(exists);
}
@Test
public void testMkdir() throws IOException {
Path src = new Path("/demo.assess");
boolean exists = fileSystem.exists(src);
if (!exists){
fileSystem.mkdirs(src);
}
}
@Test
public void testListFiles() throws IOException {
Path src = new Path("/tt");
RemoteIterator<LocatedFileStatus> files = fileSystem.listFiles(src, true);
while (files.hasNext()){
LocatedFileStatus fileStatus = files.next();
System.out.println(fileStatus.getPath()+"路径 "+fileStatus.isFile()+"是否文件 "+fileStatus.getLen()+"文件大小");
System.out.println("------------------------------");
BlockLocation[] locations = fileStatus.getBlockLocations();
for (BlockLocation location : locations) {
System.out.println("offset"+location.getOffset()+"length"+location.getLength());
}
System.out.println("================================");
}
}
@Test
public void testDeleteWithTrash() throws IOException {
Trash trash = new Trash(fileSystem, conf);
Path dst = new Path("/123.txt");
trash.moveToTrash(dst);
}
@After
public void after() throws IOException{
fileSystem.close();
}
}
三、Hadoop 的 API的更多相关文章
- Hadoop 系列(三)Java API
Hadoop 系列(三)Java API <dependency> <groupId>org.apache.hadoop</groupId> <artifac ...
- Python3调用Hadoop的API
前言: 上一篇文章 我学习使用pandas进行简单的数据分析,但是各位...... Pandas处理.分析不了TB级别数据的大数据,于是再看看Hadoop. 另附上人心不足蛇吞象 对故事一的感悟: ...
- 漫谈可视化Prefuse(三)---Prefuse API数据结构阅读有感
前篇回顾:上篇<漫谈可视化Prefuse(二)---一分钟学会Prefuse>主要通过一个Prefuse的具体实例了解了构建一个Prefuse application的具体步骤.一个Pre ...
- hadoop的API对HDFS上的文件访问
这篇文章主要介绍了使用hadoop的API对HDFS上的文件访问,其中包括上传文件到HDFS上.从HDFS上下载文件和删除HDFS上的文件,需要的朋友可以参考下hdfs文件操作操作示例,包括上传文件到 ...
- Zookeeper 系列(三)Zookeeper API
Zookeeper 系列(三)Zookeeper API 本节首先介绍 Zookeeper 的 Shell 命令,再对 Java 操作 Zookeeper 的三种方式进行讲解,本节先介绍 Zookee ...
- 通过流的方式操作hadoop的API
通过流的方式操作hadoop的API 功能: 可以直接用来操作hadoop的文件系统 可以用在mapreduce的outputformat中设置RecordWrite 参考: 概念理解 http:// ...
- ReactJS入门(三)—— 顶层API
本文基本跟着官方文档把API都走一遍,但会有实例来解释应该怎么用,木有比我更详细的API文档咯. React.createClass 参数:CONFIG(object) 创建一个ReactClass( ...
- 从零开始,做一个NodeJS博客(三):API实现-加载网易云音乐听歌排行
标签: NodeJS 0 研究了一天,翻遍了GitHub上各种网易云API库,也没有找到我想要的听歌排行API,可能这功能比较小众吧.但收获也不是没有,在 这里 明白了云音乐API加密的凶险,我等蒟蒻 ...
- hadoop: hdfs API示例
利用hdfs的api,可以实现向hdfs的文件.目录读写,利用这一套API可以设计一个简易的山寨版云盘,见下图: 为了方便操作,将常用的文件读写操作封装了一个工具类: import org.apach ...
随机推荐
- git 命令收藏
git init # 初始化本地git仓库(创建新仓库) git config --global user.name "xxx" # 配置用户名 git config -- ...
- 表单校验常用原生js库
1.字符串去除左右空格继承形式// 除去左右空格String.prototype.Trim = function() { return this.replace(/(^\s*)|(\s*$)/g, & ...
- Activiti学习之HelloWorld程序
流程图 部署流程定义 /** * 部署流程定义 */ @Test public void deploymentProcessDefinition() { ProcessEngine processEn ...
- Apache服务器运维笔记(3)----容器部分
1.<IfModule>容器 <IfModule>容器作用于模块,它会首先判断模块是否载入,然后再决定是否进行处理,也就是说只有当判断结果为真时才会执行容器内的指令,相反如果为 ...
- hdu 1162 Eddy's picture (Kruskal 算法)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1162 Eddy's picture Time Limit: 2000/1000 MS (Java/Ot ...
- 02_linux常用指令
[用户管理] 查看当前用户 whoami 新建用户 sudo adduser higginCui 查看新建用户 ls /home 使用新建用户登录 su -l higg ...
- 完整SQL分页存储过程(支持多表联接)
http://www.cnblogs.com/andiki/archive/2009/03/24/1420289.html Code/********************************* ...
- javascript fundamental concept
http://hzjavaeyer.group.iteye.com/group/wiki?category_id=283 上面这个url非常适合javascript初学者阅读,感谢原作者的分享 什么是 ...
- Timeout occurred while waiting for latch: class 'COLUMNSTORE_ROWGROUP_COLLECTION'
今天发现线上数据库主从延迟严重: SELECT ag.name AS ag_name, ar.replica_server_name AS ag_replica_server, dr_state.da ...
- January 29 2017 Week 5 Sunday
In order to be irreplaceable one must always be different. 若想无可替代,必须与众不同. If all your skills or pers ...