• Hadoop The Definitive Guide 2nd Edition 笔记


    数据块:

    HDFS的块大小为64MB,HDFS上的文件被划分为多个分块,作为独立的存储单元。但与其他文件系统不同的是,HDFS中小于一个块大小的文件不会占据整个块的空间。一个文件的大小可以大于集群中任何一个磁盘的容量,其他所有块不需要存储在同一个磁盘上。用 hadoop fsck / -files -blocks 可以查看整个文件系统中各文件的块组成情况。

    Namenode 与 Datanode:

    HDFS的模式是“管理者-工作者”模式,namenode就是管理者,datanode就是工作者。namenode手里有文件系统的整个命名空间,也就相当于有一个“管理账簿”。而datanode就是真正的工作结点。

    目录没有备份数这个概念,因为dir(目录)是作为元数据保存在namenode中的。

    Hadoop文件系统

    Hadoop有一个抽象的文件系统概念,而HDFS只是其中的一个实现。hadoop对文件系统提供了许多接口,它一般使用URI方案来选取合适的文件系统实例进行交互。例如,要想列出本地文件系统根目录下的文件,可以用以下命令:

    % hadoop fs -ls file:///

    尽管运行的MapReduce程序可以访问任何文件系统,但在处理大数据集时,还是要选择一个具有数据本地优化的分布式文件系统,如HDFS或KFS。

    通过FileSystem API读取数据

    FileSystem是一个通用文件系统API,第一步是要知道我们所用的文件系统类型,生成一个文件系统实例。获取FileSystem实例有两个工厂方法。

    public static FileSystem get(Configuration conf) throws IOException

    public static FileSystem get(URI uri, Configuration conf) throws IOException

    其中,Configuration对象封装了客户端或服务器的配置,这个配置就是conf/core-site.xml中指定的。

    文件读取剖析

    DistributedFileSystem通过使用RPC调用namenode,以确定文件起始块的位置。对于每一个块,namenode返回存有该块复本的datanode地址。此外,这些datanode根据它们与客户端的距离来排序。如果该客户端本身就是一个datanode(比如,在一个MapReduce任务中),并保存有相应数据块的一个复本时,该节点将从本地datanode中读取数据。

  • 相关阅读:
    对现有Hive的大表进行动态分区
    Hive表分区
    Hive常用的SQL命令操作
    Hadoop分布式安装
    Hadoop命令摘录
    HDFS基本知识整理
    Hive基本命令整理
    Hadoop
    淘宝数据魔方技术架构解析
    Eclipse 下 opennms 开发环境搭建
  • 原文地址:https://www.cnblogs.com/hengli/p/2805240.html
Copyright © 2020-2023  润新知