package com.slp.hdfs;

import org.apache.commons.io.output.ByteArrayOutputStream;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;
import org.junit.Test; import java.io.IOException; /**
* @author sanglp
* @create 2017-12-08 11:26
* @desc hdfs测试
**/
public class TestHdfs { /**
* 正常输出
* i am a girl
* i want to be a super man
* but i cannot still now
* resource下的core-site.xml中s201如果没有在本地映射会报unknow host
* 如果读取的文件不存在会报 File not exists
*/
@Test
public void testSave(){
/**
* 加载操作源码
* static {
* deprecationContext = new AtomicReference(new Configuration.DeprecationContext((Configuration.DeprecationContext)null, defaultDeprecations));
* ClassLoader cL = Thread.currentThread().getContextClassLoader();
* if(cL == null) {
* cL = Configuration.class.getClassLoader();
* }
*
* if(cL.getResource("hadoop-site.xml") != null) {
* LOG.warn("DEPRECATED: hadoop-site.xml found in the classpath. Usage of hadoop-site.xml is deprecated. Instead use core-site.xml, mapred-site.xml and hdfs-site.xml to override properties of core-default.xml, mapred-default.xml and hdfs-default.xml respectively");
* }
*
* addDefaultResource("core-default.xml");
* addDefaultResource("core-site.xml");
* }
*/
Configuration configuration = new Configuration();//加载类路径下的文件
try{
FileSystem fs = FileSystem.get(configuration);
Path path = new Path("hdfs://192.168.181.201/user/sanglp/hadoop/hello.txt");//本地未配置s201解析 java.lang.IllegalArgumentException: java.net.UnknownHostException: s201 文件不存在java.io.FileNotFoundException: File does not exist: /user/sanglp/hadoop/hello.txt FSDataInputStream fis = fs.open(path);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
IOUtils.copyBytes(fis,baos,1024);
fis.close();
System.out.print(new String(baos.toByteArray()));
} catch (IOException e) {
e.printStackTrace();
}
} /**
* 权限配置:
* org.apache.hadoop.security.AccessControlException: Permission denied: user=hadoop, access=WRITE, inode="/user/sanglp/hadoop":sanglp:supergroup:drwxr-xr-x
* hdfs dfs -chmod o+w /user/sanglp/hadoop
*/
@Test
public void testWrite(){
Configuration configuration = new Configuration();
try {
FileSystem fs = FileSystem.get(configuration);
Path path = new Path("hdfs://192.168.181.201/user/sanglp/hello.txt");
FSDataOutputStream fsDataOutputStream = fs.create(new Path("/user/sanglp/hadoop/a.txt"));
fsDataOutputStream.write("how are you".getBytes());
} catch (IOException e) {
e.printStackTrace();
}
} /**
* 定制副本数和blocksize
* 设置块过小
* org.apache.hadoop.ipc.RemoteException(java.io.IOException): Specified block size is less than configured minimum value (dfs.namenode.fs-limits.min-block-size): 5 < 1048576
* hdfs-site.xml
* <property>
* <name>dfs.namenode.fs-limits.min-block-size</name>
* <value>5</value>
* </property> */
@Test
public void testWrite2(){
Configuration configuration = new Configuration();
try {
FileSystem fs = FileSystem.get(configuration);
Path path = new Path("hdfs://192.168.181.201/user/sanglp/hello.txt");
//public FSDataOutputStream create(Path f, boolean overwrite, int bufferSize, short replication, long blockSize)
FSDataOutputStream fsDataOutputStream = fs.create(new Path("/user/sanglp/hadoop/a.txt"),true,1024,(short)2,5);
fsDataOutputStream.write("how are you".getBytes());
} catch (IOException e) {
e.printStackTrace();
}
}
}

  

【大数据系列】使用api修改hadoop的副本数和块大小的更多相关文章

  1. 大数据系列(4)——Hadoop集群VSFTP和SecureCRT安装配置

    前言 经过前三篇文章的介绍,已经通过VMware安装了Hadoop的集群环境,当然,我相信安装的过程肯定遇到或多或少的问题,这些都需要自己解决,解决的过程就是学习的过程,本篇的来介绍几个Hadoop环 ...

  2. 大数据系列(3)——Hadoop集群完全分布式坏境搭建

    前言 上一篇我们讲解了Hadoop单节点的安装,并且已经通过VMware安装了一台CentOS 6.8的Linux系统,咱们本篇的目标就是要配置一个真正的完全分布式的Hadoop集群,闲言少叙,进入本 ...

  3. 大数据系列(2)——Hadoop集群坏境CentOS安装

    前言 前面我们主要分析了搭建Hadoop集群所需要准备的内容和一些提前规划好的项,本篇我们主要来分析如何安装CentOS操作系统,以及一些基础的设置,闲言少叙,我们进入本篇的正题. 技术准备 VMwa ...

  4. 大数据系列(5)——Hadoop集群MYSQL的安装

    前言 有一段时间没写文章了,最近事情挺多的,现在咱们回归正题,经过前面四篇文章的介绍,已经通过VMware安装了Hadoop的集群环境,相关的两款软件VSFTP和SecureCRT也已经正常安装了. ...

  5. 大数据系列(1)——Hadoop集群坏境搭建配置

    前言 关于时下最热的技术潮流,无疑大数据是首当其中最热的一个技术点,关于大数据的概念和方法论铺天盖地的到处宣扬,但其实很多公司或者技术人员也不能详细的讲解其真正的含义或者就没找到能被落地实施的可行性方 ...

  6. 【大数据系列】windows搭建hadoop开发环境

    一.安装JDK配置环境变量 已经安装略过 二.安装eclipse 已经安装略过 三.安装Ant 1.下载http://ant.apache.org/bindownload.cgi 2.解压 3.配置A ...

  7. 【大数据系列】hive修改默认的derby数据库

    <?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml- ...

  8. 大数据系列之并行计算引擎Spark部署及应用

    相关博文: 大数据系列之并行计算引擎Spark介绍 之前介绍过关于Spark的程序运行模式有三种: 1.Local模式: 2.standalone(独立模式) 3.Yarn/mesos模式 本文将介绍 ...

  9. 大数据系列之并行计算引擎Spark介绍

    相关博文:大数据系列之并行计算引擎Spark部署及应用 Spark: Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎. Spark是UC Berkeley AMP lab ( ...

随机推荐

  1. php判断文件存在是用file_exists 还是 is_file

    From: http://www.php100.com/html/php/hanshu/2013/0905/4672.html [导读] 在写程序时发现在判断文件是否存在时,有两种写法,有的人用了is ...

  2. Jenkins使用简易教程

    Jenkins是一款能提高效率的软件,它能帮你把软件开发过程形成工作流,典型的工作流包括以下几个步骤 开发 提交 编译 测试 发布 有了Jenkins的帮助,在这5步中,除了第1步,后续的4步都是自动 ...

  3. 自动批改android模拟器的imei的小程序 和 下载各个版本SDK Tools及ADT

    ADT 22.6.0版本的下载路径是:http://dl.google.com/android/ADT-22.6.0.zip ADT22.6.1版本的下载路径是:http://dl.google.co ...

  4. 如何能延长windows server 2008 R2激活期 .

    当windows server 2008 R2使用已经到期的时候,要求激活,我们可以通过以下命令,延长激活期. 在运行中输入:slmgr.vbs -rearm 重新启动windows server 2 ...

  5. JVM垃圾回收机制之引用类型

    一:引用的类型 javac编译器编译源文件后,生成字节码文件,在类加载器加载字节码文件到内存中时,在内存中开辟 空间,栈.堆以及方法区,来存放对象以及引用.引用可以分为四种: 强引用:平常我们在编写程 ...

  6. application/x-www-form-urlencoded 的contentType,POST数据内容过大,导致tomcat的request取不到参数

    如题, 可通过设置tomcat的connector的参数 server.xml中的connector中加上属性 maxPostSize="20971520" maxPostSize ...

  7. 如何在 CentOS 7 上安装 Docker

    Docker 是一个开源工具,它可以让创建和管理 Linux 容器变得简单.容器就像是轻量级的虚拟机,并且可以以毫秒级的速度来启动或停止.Docker 帮助系统管理员和程序员在容器中开发应用程序,并且 ...

  8. 5 -- Hibernate的基本用法 --2 Hibernate入门

    5.2.1 Hibernate 下载和安装 5.2.2 Hibernate 的数据库操作 5.2.3 在Eclipse中使用Hibernate 啦啦啦

  9. php 图片上传 500 Internal Server Error 错误

    写php简单上传图片时,发现200k的图片上传时报Internal Server Error错误,检查了upload_max_filesize,及其他post_max_size.max_input_t ...

  10. express不是内部或外部命令,也不是可运行的程序或批处理文件

    如上安装了express以后,仍然报如下错误:express不是内部或外部命令,也不是可运行的程序或批处理文件 原因是版本问题:当前版本是4.0.0,改成3.5.0即可运行. npm install ...