zoukankan      html  css  js  c++  java
  • 学习Hadoop整体理解

    HDFS是Hadoop的核心模块之一,围绕HDFS是什么、HDFS的设计思想和HDFS的体系结构三方面来介绍。

    Hadoop的设计思想受到Google公司的GFS设计思想的启示,基于一种开源的理念实现的分布式分布式文件系统。HDFS的设计基础与目标如下。

    1)硬件错误(Hardware Failure)是常态,因而需要数据冗余技术。

    2)流失数据访问(Streaming Data Access),即数据批量读取而非随机读写,Hadoop擅长做数据分析而不是事务处理。

    3)大规模数据集(Large Data Sets)。

    4)简单一致性模型(Simple Coherency Model),即为了降低系统复杂度,对文件采用一次性写多次读的逻辑设计,也就是文件一经写入,关闭,就再不要修改。

    5)“Moving Computation is Cheaper than Moving Data”,通俗理解,程序采用“数据就近”原则分配节点执行。

    6)Portability Across Heterogeneous Hardware and Software Platforms,即有着很强的可扩展性。

    HDFS体系结构如图1所示,它采用主从结构,Namenode属于主段,Datanode属于从端。

    Namenode

    1)管理文件系统的命名空间。

    2)记录 每个文件数据快在各个Datanode上的位置和副本信息。

    3)协调客户端对文件的访问。

    4)记录命名空间内的改动或者空间本省属性的改动。

    5)Namenode 使用事务日志记录HDFS元数据的变化。使用映像文件存储文件系统的命名空间,包括文件映射,文件属性等。

    从社会学来看,Namenode是HDFS里面的管理者,发挥者管理、协调、操控的作用。

    Datanode

    1)负责所在物理节点的存储管理。

    2)一次写入,多次读取(不修改)。

    3)文件由数据库组成,一般情况下,数据块的大小为64MB。

    4)数据尽量散步到各个节点。

    从社会学的角度来看,Datanode是HDFS的工作者,发挥按着Namenode的命令干活,并且把干活的进展和问题反馈到Namenode的作用。

    客户端如何访问HDFS中一个文件呢?具体流程如下。

    1)首先从Namenode获得组成这个文件的数据块位置列表。

    2)接下来根据位置列表知道存储数据块的Datanode。

    3)最后访问Datanode获取数据。

    注意:Namenode并不参与数据实际传输。

    数据存储系统,数据存储的可靠性至关重要。HDFS是如何保证其可靠性呢?它主要采用如下机理。

    1)冗余副本策略,即所有数据都有副本,副本的数目可以在hdfs-site.xml中设置相应的复制因子。

    2)机架策略,即HDFS的“机架感知”,一般在本机架存放一个副本,在其它机架再存放别的副本,这样可以防止机架失效时丢失数据,也可以提供带宽利用率。

    3)心跳机制,即Namenode周期性从Datanode接受心跳信号和快报告,没有按时发送心跳的Datanode会被标记为宕机,不会再给任何I/O请求,若是Datanode失效造成副本数量下降,并且低于预先设置的阈值,Namenode会检测出这些数据块,并在合适的时机进行重新复制。

    4)安全模式,Namenode启动时会先经过一个“安全模式”阶段。

    5)校验和,客户端获取数据通过检查校验和,发现数据块是否损坏,从而确定是否要读取副本。

    6)回收站,删除文件,会先到回收站/trash,其里面文件可以快速回复。

    7)元数据保护,映像文件和事务日志是Namenode的核心数据,可以配置为拥有多个副本。

    8)快照,支持存储某个时间点的映像,需要时可以使数据重返这个时间点的状态。

    附录:HDFS 文件操作

    对HDFS文件操作有两种方式,一是命令行方式,二是HDFS API方式。

    HDFS常用命令归总

    1)列出HDFS下的文件

    hadoop fs -ls

    2)上传本地文件到HDFS

    hadoop fs -put  dir1  dir2

    说明:dir1,本地文件系统文件目录;dir2,HDFS文件系统文件目录

    3)下载HDFS文件到本地

    hadoop fs -get dir1  dir2

    说明:dir1,本地文件系统文件目录;dir2,HDFS文件系统文件目录

    4)创建HDFS文件

    hadoop fs -mkdir  dir

    5)删除HDFS下的文档

    hadoop fs -rmr dir

    6)查看HDFS下某个文件的内容

    hadoop fs -cat   文件路径

    7)查阅帮助

    获取所用Hadoop版本关于HDFS完整的命令列表,可执行

      hadoop fs

    或者

    使用help来显示某个命令的用法与简短描述。

    例如 要了解ls,可执行

       hadoop fs -help ls

    Source:

    http://www.wangluqing.com/2014/02/hadoop-hdfs/

    http://hadoop.apache.org/docs/r1.2.1/hdfs_design.html

    炼数成金《Hadoop数据分析平台》第三课分布式文件系统HDFS

    漫画HDFS工作原理

  • 相关阅读:
    C#基础第五天-作业-用DataTable制作名片集
    C#基础第四天-作业答案-Hashtable-list<KeyValuePair>泛型实现名片
    C#基础第四天-作业-Hashtable-list<KeyValuePair>泛型实现名片
    C#基础第三天-作业答案-集合-冒泡排序-模拟名片
    C#基础第三天-作业-集合-冒泡排序-模拟名片
    C#基础第二天-作业答案-九九乘法表-打印星星
    C#基础第二天-作业-九九乘法表-打印星星
    C#基础第一天-作业答案
    C#基础第一天-作业
    C#-string.Format对C#字符串格式化
  • 原文地址:https://www.cnblogs.com/nucdy/p/5684039.html
Copyright © 2011-2022 走看看