三、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 ...
随机推荐
- elastic job 动态设置定时任务
1. 版本 <!-- import elastic-job lite core --> <dependency> <groupId>com.dangdang< ...
- php编程--二叉树遍历算法实现
今天使用php来实现二叉树的遍历 创建的二叉树如下图所示 php代码如下所示: <?php class Node { public $value; public $child_l ...
- base64编码 的 图片 另存为下载
功能描述: 有一段base64字符串的图片,将其保存下载为png图片! 可以: 直接 a 链接下载: <a id="tttt" download="1.jpg& ...
- js小数乘法精确率问题
研究拓扑图百分比乘法计算,带小数位计算会出现值溢出的问题 JS里做小数的乘法运算时会出现浮点错误: 结果是251.89999999999998 而不是251.9 这个问题想必有很多人为之头痛. 那 ...
- Java 文件上传与下载、email
1. 文件上传与下载 1.1 文件上传 文件上传,要点: 前台: 1. 提交方式:post 2. 表单中有文件上传的表单项: <input type="file" /> ...
- ES6入门——正则的扩展
1.RegExp构造函数 在ES5中,RegExp构造函数的参数有两种情况.第一种情况是参数是字符串,这时第二个参数表示正则表达式的修饰符:第二种情况是,参数是一个正则表示式,这时会返回一个原有正则表 ...
- c# 依赖注入之---setterInjection(转)
图3.1 Setter注入示意 定义一个接口: namespace SetterInjection { internal interface IServiceClass { string Servic ...
- nginx 应用包编译及常用文件配置
1.zlib wget http://www.zlib.net/fossils/zlib-1.2.8.tar.gz 2.openssl wget http://www.openssl.org/sour ...
- python链接安卓 跳一跳
借鉴: 一百行代码实现微信跳一跳 之前需要安装adb 开启服务: adb nodaemon server 显示设备: adb devices 代码: import math import os im ...
- web images
ps切图时,我们保存时会要求选择文件格式. 一般来说,如果图像的色彩丰富,没有透明度的要求,则选择为jpeg格式: 如果图像色彩不丰富,我们就选择为png-8的格式,注意:ps中要选择无杂边,无仿色 ...