02HDFS分布式文系统

一、HDFS分布式文件系统概述

Hdfs Hadoop Distrabuted File System 分布式文件系统

1、分布式:

2、HDFS特点:

海量数据存储(GB,TB,PB级的数据)1MB=1024KB   1 GB=1024MB 

高容错性:默认保存副本(3个),当一份数据丢失时,可以恢复数据,hdfs内部机制实现的。

数据冗余

高延时

不适合场景:

低延时:

不适合存放大量小文件

多用户输入,不适合做任意修改。

了解几个名词

3、了解几个名词

1POSIX:可移植操作系统接口(英语:Portable Operating System Interface)是IEEE为要在各种UNIX操作系统上运行软件

2、什么是数据的流式访问

  1. 流式数据访问:最小化磁盘的寻址开销,只需要寻址一次,然后一直读下去,适合一次写,多次读的数据访问
  2. 随机数据访问:要求定位、查询或修改数据的延迟较小,传统关系型数据库符合这一点

3Nutch,Lucene,Avro

1Apache Nutch WebNutch是一个开源Java 实现的搜索引擎。包括全文搜索和Web爬虫

2 Nutch的创始人是Doug Cutting(道格卡廷),他同时也是Lucene(全文检索引擎)、HadoopAvro开源项目的创始人

3AvroHadoop下的子项目,是一个数据序列化系统,设计用于支持大批量数据交换的应用。主要特点有:支持二进制序列化方式,可以便捷,快速地处理大量数据;

二、HDFS的基本架构

由三部分组成(Client   NameNode    DataNode)采用了Master-Slaver(主—从)模式

1、Client作用

向NN发出请求,获得文件的位置,副本数

将文件切分block,每个块默认是128M(大小可以设置)

向DataNode读写文件

2、NameNode作用:

管理元数据信息(文件名,位置,大小,副 本,属组)

数据块的映射

配置副本

和DN保持 心跳,如果10分钟没有收到,表示宕机了,则删除,数据转移。

3、DataNode的作用:

真正存放数据

执行数据的读写

向NN发送心跳,3秒一次

4、NameNode 和DataNode 区别

NameNode

DataNode

存储元数据

存储数据内容

元数据保存在内存

文件内容存在磁盘上

问题一:为什么不能存放大量小文件?

因为一个集群只有一个NameNode,NameNode存放元数据信息在内存,如果存放大量小文件,会占用很大内存,成为集群的瓶颈。

问题二:如何理解元数据信息

5、NameNode是如何存放数据

Fsimgage存放目录

Editlog客户端的操作(创建,删除,重命名)

三、HDFS的高可靠性(HA)

解决了只有一个NameNode可能会产生单 点故障问题-----------主备模式

  1. 主NN和备NN的数据同步

主NN写日志到JN上,同时备NN从JN上读取日志

2.主备切换

ZKFC对主NN进行监控,当主NN出现错误或宕机时时,ZKFC发送给zookeeper,Zookeeper让备NN成为主NN

四、元数据持久化

触发条件:每隔1个小时,或editlog满了64M时进行合并

  1. 备NN通知主NN生成EditLog.new文件
  2. 从主结点获取FsImage和Editlog
  3. 将获得的文件进行合并,生成新文件fsimage.ckpt
  4. 将新文件fsimage.ckpt上传到主NN
  5. 重命名为fsimage,覆盖原来的fsimage
  6. 将Editlog.new命名为Editlog
  7. 根据触发条件循环1-6步骤。
  8. 五、HDFS联邦 (Federation)

  9. 在使用主Namenode中的元数据,而且是放在内存里面,当数据增到大一定时,会出现内存不够用的状态,namenode内存就成为整个集群的一个瓶颈,为了解决这个问题,将NameNode做一个横向扩展,方案就是Federation,很好的解决了内存过高的问题。

    六、HDFS副本策略

    副本距离公式:

    同一台服务器的距离是0

    同一个机架不同的服务器距离为2

    不同机架的服务器距离为4


    七、HDFS读取流程

    八、HDFS文件写入流程

    九、常用的shell命令

    1、ls     显示目录信息


    2 mkdir   创建目录

    3、put :上传系统中的文件到HDFS指定的目 录

    4、cat   显示文件的内容


    5、text  以字符形式打印一个文件的内容


    6、moveFromLocal  从本地剪切到HDFS


    7、appendToFile  追加一个文件到已经存在的文件的末尾


    8、cp 拷贝


    9、mv 移动


    10、rm  删除文件或文件夹


    11、getmerge 合并下载多个文件


    12、df  统计文件系统的可用空间

    13、 du  统计文件夹的大小


    十、Zookeeper容灾能力

    ZooKeeper能够完成选举即能够正常对外提供服务。


    ZooKeeper选举时,当某一个实例获得了半数以上的票数时,则变为leader。


    对于n个实例的服务,n可能为奇数或偶数。


    n为奇数时,假定n=2*x+1      ,则成为leader的节点需获得x+1票,容灾能力为x。


    n为偶数时,假定  n=2*x+2     ,则成为leader的节点需要获得x+2票 (大于一半),容灾能力为x。


    注:由于5台和6台机器构成的集群容灾能力是一样的,所以建议使用奇数个服务器去构建集群,以免造成 浪费。


    十一、思考题:


    1.ZooKeeper为什么建议奇数部署?


    答:容灾能力相同,但部署成本低


    2.HDFS的数据块大小为什么一般比磁盘块大?


    块比磁盘大(磁盘的块一般为512字节),目的是为了最小化寻址开销。块足够大,那么从磁盘传输数据的时间会明显大于定位这个块开始位置所需的时间。但也不能太大,因为map通常只处理一个块中的数据。如果Map数太少,则作业运行速度会比较慢


    3.HDFS的数据在写入时,能够读取到吗?
    当数据在写入的时候,写入数据不能立即可见,在命令空间是立即可见的。当写入超过一个块或者结束的时候,对一个新的reader就是可见的。当前正在写入的块,对其他reader是不可见的

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>