zoukankan      html  css  js  c++  java
  • 三、HDFS——Hadoop分布式文件系统

    一、hdfs的设计目标

    1.1、硬件错误是常态而不是异常。Hadoop的设计理念之一就是它可以运行在廉价的普通PC机上,因而硬件故障是常态。在硬件故障时,可通过容错机制保证数据的正确性、完整性,从而保证系统的正常运行。

    1.2、大文件存储。hdfs存储的文件大小一般在GB~TB的级别。

    1.3、流式数据访问。由于hadoop处理的都是大文件,因此流式数据访问方式更适合。流式数据访问是指一次性地读取一大块文件后再做处理,其特点是吞吐率高,延迟高;与之相反的是随机数据访问,特点是随机性地读取数据,延迟低。

    1.4、一次写入、多次读取。用户需要对文件实行一次写、多次读的访问模式。文件一旦上传到hdfs,便不能再做修改,如需修改,需删除文件重新上传。在上传完数据之后,便在该数据集上进行长时间的数据分析,也避免了数据一致性的问题。

    二、hdfs的缺点

    2.1、高延迟。

    2.2、不适合存储大量小文件。

    三、hdfs的基本架构图

    3.1、几个重要概念

    (1)NameNode。NameNode负责管理整个dfs文件系统的元数据,即,存储所有的文件目录、每个文件的具体信息(即:每个文件被分了多少块、每块文件的大小及存放位置)等。

    (2)DataNode。DataNode负责存放具体数据内容。

    (3)其他。Block是数据块,通常以64MB为单位,具有多个冗余副本。Rack表示机柜,一个数据块的多个副本被分散在多个机柜中,以便机柜宕机时,可及时复原数据。

    3.2、读数据流程

    client在向hdfs读数据时,首先向NameNode发出请求,获取文件的每个数据块的存放位置,然后client再去指定的DataNode读取数据,最后通知NameNode关闭文件。

    3.3、写数据流程

    client在向hdfs写数据时,首先告知NameNode创建文件,NameNode经过一系列的检查,反馈给client一个DataNode列表进行写数据操作。然后,client再去找特定的DataNode进行写数据,最后关闭文件。

    client在写入某一块特定的数据时,要同时备份多份数据块,假设要备份3份,则写数据的流程如下:

    client只向第一个DataNode写数据,随后的备份操作由DataNode传递下去,这样做的目的是减小client的读写压力,当备份完最后一块数据时,由最后一块数据所在DataNode向前一个DataNode发送ack确认包,此操作一直传递到client那里,这样,一份数据块的备份操作结束。

    四、hadoop2.6中的hdfs的常用命令

    hdfs官方命令查询:http://hadoop.apache.org/docs/r2.6.4/hadoop-project-dist/hadoop-common/FileSystemShell.html#mkdir

    4.1、ls——查看文件列表

    hadoop fs -ls /
    

    列出hdfs文件系统根目录下的目录和文件。

    hadoop fs -ls -R /
    

    列出hdfs文件系统所有的目录和文件。

    hadoop fs -ls /input
    

    列出hdfs文件系统中input目录中的目录和文件。

    4.2、put——上传文件到hadoop

    hdfs dfs -put localfile /input/file1
    

    将本地文件localfile拷贝到hadoop文件系统的input目录下的file1。

    hdfs dfs -put localfile1 localfile2 /input
    

    将本地文件localfile1、localfile2拷贝到hadoop文件系统的input目录下。

    4.3、get——下载文件到本地

    hdfs dfs -get /input/file localfile
    

    将hfds文件系统input目录下的file文件拷贝到本地localfile文件中。

    4.4、mkdir——创建目录

    hadoop fs -mkdir /input
    

    在hdfs文件系统的根目录下创建input文件夹。该方式只能一级一级地创建目录,父目录必须存在。

    hadoop fs -mkdir -p /dir1/dir2
    

    递归创建目录,如果父目录不存在就创建该父目录。

    4.5、rm——删除文件、文件夹

    hdfs dfs -rm /input/file1
    

    删除文件。

    hdfs dfs -rm -R /input
    或: hdfs dfs -rm -r /input

    删除文件夹。

    4.6、cp——复制文件

    hdfs dfs -cp /input/file1 /input/file2
    

    重命名文件,file1、file2都会存在。

    hdfs dfs -cp /input/file1 /another/file2
    

    不同目录下拷贝文件。

    hdfs dfs -cp /input/file1 /input/file2 /another
    

    拷贝多个文件到another目录下。

    4.7、mv——移动文件

    hdfs dfs -mv /input/file1 /another/file2
    

    不同目录下移动文件。

    hdfs dfs -mv /input/file1 /input/file2 /another
    

    移动多个文件到another目录下。

    4.8、cat——打印文件内容

    hdfs dfs -cat /input/file1
    

    打印/input/file1文件的内容。

    4.9、查看hdfs系统状态

    hdfs dfsadmin -report
    

    查看hdfs文件系统的基本信息:存储空间使用情况、datanode节点信息等。

  • 相关阅读:
    MQTT-SN协议乱翻之实现要点
    MQTT-SN协议乱翻之功能描述
    NUnit单元测试
    NHibernate多对多关联映射的实现
    Windows Phone 8 开发初体验
    ASP.NET MVC概述
    Entity Framework多对多关联映射的实现
    C#通过ODAC访问Oracle12c
    64位Win8系统下安装Oracle12c
    C# 异步下载文件
  • 原文地址:https://www.cnblogs.com/yuan2016/p/5789436.html
Copyright © 2011-2022 走看看