《Hadoop与大数据挖掘》一2.4.1 HDFS Java API操作

2.4.1 HDFS Java API操作

Hadoop中关于文件操作类基本上是在org.apache.hadoop.fs包中,这些API能够支持的操作有:打开文件,读写文件,删除文件,创建文件、文件夹,判断是文件或文件夹,判断文件或文件夹是否存在等。
Hadoop类库中最终面向用户提供的接口类是FileSystem,这个类是个抽象类,只能通过类的get方法得到其实例。get方法有几个重载版本,如图2-28所示。

比较常用的是第一个,即灰色背景的方法。
FileSystem针对HDFS相关操作的API如表2-5所示。

代码清单2-22,是FileSystem API的一个简单示例。该代码首先获取FileSystem的一个实例,然后调用该实例的listStatus方法,获取所有根目录下面的文件或文件夹(注意这里获取的不包含递归子目录);接着,调用create方法创建一个新文件,并写入“Hello World!”;最后,读取刚才创建的文件,并把创建的文件内容打印出来;关闭FileSystem实例。

代码清单2-22 FileSystem API示例
package demo;
import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

public class FileSystemAPIDemo {
public static void main(String[] args) throws IOException {
    // 获取Hadoop默认配置
    Configuration conf = new Configuration();
    conf.set("fs.defaultFS", "hdfs://master:8020"); // 配置HDFS
    // 获取HDFS FileSystem实例
    FileSystem fs = FileSystem.get(conf);

    // 列出根目录下所有文件及文件夹
    Path root = new Path("hdfs://master:8020/");
    FileStatus[] children = fs.listStatus(root);
    for(FileStatus child :children){
        System.out.println(child.getPath().getName());
    }

    // 创建文件并写入“HelloWorld!”
    Path newFile = new Path("hdfs://master:8020/user/fansy/new.txt");   // 注意路径需要具有写权限
    if(fs.exists(newFile)){         // 判断文件是否存在
        fs.delete(newFile, false);      // 如果存在,则删除文件
    }
    FSDataOutputStream out = fs.create(newFile);    // 创建文件
    out.writeUTF("Hello World!");           // 写入“Hello World!”
    out.close();                    // 关闭输出流

    // 读取文件内容
    FSDataInputStream in = fs.open(newFile);    // 打开文件
    String info = in.readUTF();         // 读取输入流
    System.out.println(info);           // 打印输出

    // 关闭文件系统实例
    fs.close();
}
}

执行完成后,在HDFS上可以看到创建的文件及内容,如图2-29所示。

时间: 2024-10-06 16:08:22

《Hadoop与大数据挖掘》一2.4.1 HDFS Java API操作的相关文章

《Hadoop与大数据挖掘》一导读

前 言 为什么要写这本书 最早提出"大数据"时代到来的是全球知名咨询公司麦肯锡,麦肯锡称:"数据,已经渗透到当今每一个行业和业务职能领域,成为重要的生产因素.人们对于海量数据的挖掘和运用,预示着新一波生产率增长和消费者盈余浪潮的到来." 早在2012年,大数据(big data)一词已经被广泛提起,人们用它来描述和定义信息爆炸时代产生的海量数据,并命名与之相关的技术发展与创新.那时就有人预计,从2013年至2020年,全球数据规模将增长10倍,每年产生的数据量将由当

《Hadoop与大数据挖掘》——2.4 Hadoop编程开发

2.4 Hadoop编程开发 Hadoop框架最核心的设计就是HDFS和MapReduce.HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算.本节就MapReduce开发相关内容进行分析,包括HDFS Java API操作.MapReduce原理.MapReduce相关流程组件配置及编程等.最后将给出两个算法:Kmeans算法.Tf-idf算法的动手实践,加深对MapReduce编程的认识和理解. 2.4.1 HDFS Java API操作 Hadoop中关于文件操作类

《Hadoop与大数据挖掘》一2.4 Hadoop编程开发

2.4 Hadoop编程开发 Hadoop框架最核心的设计就是HDFS和MapReduce.HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算.本节就MapReduce开发相关内容进行分析,包括HDFS Java API操作.MapReduce原理.MapReduce相关流程组件配置及编程等.最后将给出两个算法:Kmeans算法.Tf-idf算法的动手实践,加深对MapReduce编程的认识和理解.

《Hadoop与大数据挖掘》一2.4.4 MapReduce组件分析与编程实践

2.4.4 MapReduce组件分析与编程实践 MapReduce整个流程包括以下步骤:输入格式(InputFormat).Mapper.Combiner.Partitioner.Reducer.输出格式(OutputFormat).这里会针对流程中的Combiner.Part-itioner.输入/输出格式进行分析,同时,也会介绍相关的编程技巧,如自定义键值对.1. Combiner分析 Combiner是什么呢?从字面意思理解,Combine即合并.其实,Combiner就是对Mapper

《Hadoop与大数据挖掘》——第2章 大数据存储与运算利器—Hadoop 2.1 Hadoop概述

第2章 大数据存储与运算利器-Hadoop 本章主要介绍了Hadoop框架的概念.架构.组件.生态系统以及Hadoop相关编程,特别是针对Hadoop组件HDFS.MapReduce.YARN,Hadoop MapReduce编程做了较详细的介绍.在介绍各个知识点的同时,结合动手实践章节,帮助读者理解对应的内容. 2.1 Hadoop概述 2.1.1 Hadoop简介 随着现代社会的发展,各种信息数据存量与增量都非常大,很多情况下需要我们能够对TB级,甚至PB级数据集进行存储和快速分析,然而单机

《Hadoop与大数据挖掘》一1.2 大数据平台

1.2 大数据平台 大数据平台有哪些呢? 一般认为大数据平台分为两个方面,硬件平台和软件平台.硬件平台一般如Open-Stack.Amazon云平台.阿里云计算等,类似这样的平台其实做的是虚拟化,即把多台机器或一台机器虚拟化成一个资源池,然后给成千上万人用,各自租用相应的资源服务等.而软件平台则是大家经常听到的,如Hadoop.MapReduce.Spark等,也可以狭义理解为Hadoop生态圈,即把多个节点资源(可以是虚拟节点资源)进行整合,作为一个集群对外提供存储和运算分析服务. Hadoo

《Hadoop与大数据挖掘》一2.1.2 Hadoop存储—HDFS

2.1.2 Hadoop存储-HDFS Hadoop的存储系统是HDFS(Hadoop Distributed File System)分布式文件系统,对外部客户端而言,HDFS就像一个传统的分级文件系统,可以进行创建.删除.移动或重命名文件或文件夹等操作,与Linux文件系统类似. 但是,Hadoop HDFS的架构是基于一组特定的节点构建的(见图2-2),这些节点包括名称节点(NameNode,仅一个),它在 HDFS 内部提供元数据服务:第二名称节点(Secondary NameNode)

《Hadoop与大数据挖掘》一2.1.4 Hadoop资源管理—YARN

2.1.4 Hadoop资源管理-YARN 在上一节中我们看到,当MapReduce发展到2.x时就不使用JobTracker来作为自己的资源管理框架,而选择使用YARN.这里需要说明的是,如果使用JobTracker来作为Hadoop集群的资源管理框架的话,那么除了MapReduce任务以外,不能够运行其他任务.也就是说,如果我们集群的MapReduce任务并没有那么饱满的话,集群资源等于是白白浪费的.所以提出了另外的一个资源管理架构YARN(Yet Another Resource Mana

《Hadoop与大数据挖掘》——1.2 大数据平台

1.2 大数据平台 大数据平台有哪些呢? 一般认为大数据平台分为两个方面,硬件平台和软件平台.硬件平台一般如Open-Stack.Amazon云平台.阿里云计算等,类似这样的平台其实做的是虚拟化,即把多台机器或一台机器虚拟化成一个资源池,然后给成千上万人用,各自租用相应的资源服务等.而软件平台则是大家经常听到的,如Hadoop.MapReduce.Spark等,也可以狭义理解为Hadoop生态圈,即把多个节点资源(可以是虚拟节点资源)进行整合,作为一个集群对外提供存储和运算分析服务. Hadoo