Hadoop学习笔记


Hadoop学习笔记

hadoop生态圈
图1 Hadoop架构


Hdfs

Hdfs简介

Hdfs与Hadoop的关系

  Hadoop是一个以一种可靠、高效、可伸缩的方式进行处理的,能够对大量数据进行分布式处理的系统框架。
  Hdfs是开源的,存储着Hadoop应用将要处理的数据,类似于普通的Unix和linux文件系统,不同的是它是实现了google的GFS文件系统的思想,是适用于大规模分布式数据处理相关应用的、可扩展的分布式文件系统。
  Hdfs( Hadoop Distributed File System)是Hadoop项目的核心子项目,是分布式计算中数据存储管理的基础,是基于流数据模式访问和处理超大文件的需求而开发的,可以运行于廉价的商用服务器上。
  它所具有的高容错、高可靠性、高可扩展性、高获得性、高吞吐率等特征为海量数据提供了不怕故障的存储,为超大数据集( Large DataSet)的应用处理带来了很多便利。
  Hdfs是hadoop兼容最好的标准级文件系统。Hadoop是一个框架, HDFS是Hadoop中的一个部件。整个Hadoop的体系结构主要是通过HDFS来实现对分布式存储的底层支持,并通过MapReduce来实现对分布式并行任务处理的程序支持。

Hdfs设计目标

  Hadoop Distributed filesystem是一种分布式应用底层框架,并非单纯用于存储。其设计前提与主要目标是:

  1. 用于海量存储,必须具有良好的可扩展性。
  2. 硬件故障有平常,必须保证:
  3. 自动容错
  4. 故障探测与处理
  5. 数据安全性
  6. 系统可用性
  7. 一次写入多次读取模式
  8. 以文件访问的高吞吐量为目标
  9. 与MapReduce框架紧密结合
Hdfs的优缺点
Hdfs的优点
  1. 处理超大文件
      这里的超大文件通常是指百MB、设置数百TB大小的文件。目前在实际应用中, Hdfs已经能用来存储管理PB级的数据了。
  2. 流式的访问数据
      Hdfs的设计建立在更多地响应“一次写入、多次读写”任务的基础上。这意味着一个数据集一旦由数据源生成,就会被复制分发到不同的存储节点中,然后响应各种各样的数据分析任务请求。在多数情况下,分析任务都会涉及数据集中的大部分数据,也就是说,对Hdfs来说,请求读取整个数据集要比读取一条记录更加高效。
  3. 运行于廉价的商用机器集群上
      Hadoop设计对硬件需求比较低,只须运行在低廉的商用硬件集群上,而无需昂贵的高可用性机器上。廉价的商用机也就意味着大型集群中出现节点故障情况的概率非常高。这就要求设计Hdfs时要充分考虑数据的可靠性,安全性及高可用性。
Hdfs的缺点
  1. 不适合低延迟数据访问
      如果要处理一些用户要求时间比较短的低延迟应用请求,则HDFS不适合。 HDFS是为了处理大型数据集分析任务的,主要是为达到高的数据吞吐量而设计的,这就可能要求以高延迟作为代价。
      改进策略:对于那些有低延时要求的应用程序, HBase是一个更好的选择。
  2. 无法高效存储大量小文件
      因为Namenode把文件系统的元数据放置在内存中,所以文件系统所能容纳的文件数目是由Namenode的内存大小来决定。一般来说,每一个文件、文件夹和Block需要占据150字节左右的空间,所以,如果你有100万个文件,每一个占据一个Block,你就至少需要300MB内存。当前来说,数百万的文件还是可行的,当扩展到数十亿时,对于当前的硬件水平来说就没法实现了。
      改进策略:
    • 利用SequenceFile、MapFile、Har等方式归档小文件,这个方法的原理就是把小文件归档起来管理,HBase就是基于此的。对于这种方法,如果想找回原来的小文件内容,那就必须得知道与归档文件的映射关系。
    • 横向扩展,一个Hadoop集群能管理的小文件有限,那就把几个Hadoop集群拖在一个虚拟服务器后面,形成一个大的Hadoop集群。
    • 多Master设计,这个作用显而易见了。正在研发中的GFS II也要改为分布式多Master设计,还支持Master的Failover,而且Block大小改为1M,有意要调优处理小文件。
  3. 不支持多用户写入及任意修改文件
      在HDFS的一个文件中只有一个写入者,而且写操作只能在文件末尾完成,即只能执行追加操作。目前HDFS还不支持多个用户对同一文件的写操作,以及在文件任意位置进行修改。
Hdfs的安全性和速度

  Hdfs以流处理访问模式来存储文件,在使用流处理方式下,每个文件在系统里都能找到它的本地化映像。将大文件分成一个个的小文件(文件块),并备份每个分块文件, 分块冗余,本地校验。冗余后的分块文件还有个额外功能,只要冗余的分块文件中有一份是完整的,经过多次协同调整后,其他分块文件也将完整。
  Hadoop是处理大数据的,因此hdfs假设用户提供的文件是巨大的,而且这些大文件是不用搬来搬去的。Hdfs提供文件的一次写入,多次读取
  专注读取功能,由多台机器同时读取,影响读取性能的是网络速度和机器读取速度,当集群数量巨大,文件巨大时, Hdfs的集群优势能得到发挥。

Hdfs的主要组件

  Hdfs体系结构中有两类节点:一类是NameNode

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值