zoukankan      html  css  js  c++  java
  • Hadoop权威指南学习笔记三

    HDFS简单介绍

    声明:本文是本人基于Hadoop权威指南学习的一些个人理解和笔记,仅供学习參考。有什么不到之处还望指出,一起学习一起进步。

     转载请注明:http://blog.csdn.net/my_acm


    Hadoop说白了就是一个提供了处理分析大数据的文件集群,当中最重要的无疑是HDFS(Hadoop Distributed File System)即Hadoop分布式文件系统。

    1、

             HDFS是一种以流式数据訪问模式(一次写入多次读取的模式)存储超大文件的系统。

    其不须要的高端的硬件系统,普通市面上的硬件就能满足要求。

             眼下不适合应用HDFS的有:低延迟的数据訪问、大量小的文件、多用户写入随意改动文件等。

    2、

             HDFS存储以块为单位,通常块大小为64M。之所以要分为这么大的块,主要是为了降低寻址时间,由于眼下来看。传输数据速率越来越快,对于HDFS处理大数据时,假设频繁的寻址必定会使得执行时间变长。

             HDFS集群有两种节点名称节点和多个数据节点。当中名称节点充当管理者,数据节点充当工作者。

    名称节点相当于HDFS文件树上的枝干分叉点,而数据节点则标注着全部块的存储信息。所以名称节点的丢失就意味着HDFS的瘫痪。

    因此Hadoop提供了两种机制解决这一问题:

    一种是复制组成文件系统元数据的持久状态文件。即在本地磁盘写入的同一时候也写入一个远程NFS挂载。

    还有一种是设置一个二级名称节点。

    3、

             HDFS提供命令行接口的交互。

    4、

             Hadoop是一个抽象的文件系统概念,HDFS是当中的一个详细实现,java抽象类org.apache.hadoop.fs.FileSystem展示了Hadoop的一个文件系统,并且有几个详细实现。



    如上图所看到的。Hadoop提供了很多文件的接口,一般是通过URL来确定使用何种文件系统实现交互。

    5、

             Hadoop是java实现的所以,java接口无疑是当中重中之重。以下是java接口的一些详细实现。

    (1)      数据读取:

    使用URL读取数据

    Java识别Hadoop文件系统的URL方案,就是通过一个FsUrlStreamHandlerFactory实例来调用在URL中的setURLStreamHandlerFactory方法。

    注意:这样的方法在java虚拟机中仅仅能被调用一次。所以通常设置为static,也因此假设程序其它部件(可能不是在你控制的第三方部件)设置了一个URLStreamHandlerFactory,那么久再也不能从Hadoop读取数据。

    代码:


    输入执行:

    % hadoop URLCat hdfs://localhost/user/tom/test.txt

    结果:

    Hello world Hello world

    Hello world

    Hello world Hello world

    使用FileSystem API读取数据

    直接看代码吧。注意看凝视

    (2)      数据写入

    FileSystem类有一系列创建文件的方法。

    public FSDataOutputStream create(Pathf) throws IOException

    用create创建文件是可用exists()推断其父文件夹是否存在。

    另一个用于传递回调接口的重载方法 Progressable,如此一来。我们所写的应用就会被告知数据写入数据节点的进度。

    package org.apache.hadoop.util;

    public interface Progressable{

                publicvoid progress();

    }

    创建文件的还能够用例如以下方法:

    Public FSDataOutputStream append(Pathf) throws IOException

    此方法同意在打开文件的末尾追加数据。

    (3)      文件夹

    FileSystem题目了创建文件夹的方法:

    public Boolean mkdirs(Path f) thorwsIOException

    (4)      查询文件系统

    FileStatus类封装了文件系统中文件和文件夹的元数据。包含文件长度、块大小、副本、改动时间、全部者以及许可信息。

    FileSystem的getFileStatus()提供了获取一个文件或文件夹的状态对象方法。

    假设仅仅是推断一个文件是否存在。则能够使用前文提到的exists(Path f)方法。

    Hadoop有时要查询批量文件时通常要用到通配符。所以它为运行通配符提供了

    Hadoop支持与Unix bash同样的通配符两个FileSystem方法:

    public FileStatus[] globStatus (PathpathPattern) throws IOException

    public FileStatus[] globStatus (Path pathPattern,PathFileter filter)throws IOException

    通配符:


    (5)      删除数据

    FileSystem中的delete()方法能够永久删除文件夹。

    public Boolean delete(Path f,Boolean recursive) throwsIOException

             

  • 相关阅读:
    java中创建线程的方式
    idea查看一个接口的子接口或实现类的快捷键
    idea查看源码没有注释的问题
    spring中的Aop
    spring中的ApplicationListener监听器
    spring中的事务管理
    IDEA创建springboot 项目
    xiaopiu产品设计
    java 6大设计原则 一:观察者模式
    java面向对象
  • 原文地址:https://www.cnblogs.com/jzssuanfa/p/6958412.html
Copyright © 2011-2022 走看看