大数据入门之Hadoop简介&HDFS原理

Posted 数据轩

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据入门之Hadoop简介&HDFS原理相关的知识,希望对你有一定的参考价值。


1、什么是云计算?


云计算的概念定义非常的抽象、广泛,比较笼统。

指的就是一种服务形式,包含了分布式计算和并行计算,基于大数据计算出来的结果提供给客户使用。


2、超算与云计算的关联与区别?


云计算是服务的概念,可以理解为通过互联网或以太网将计算机连成的一个集群,解决的IO瓶颈问题。比如视频网站,IO很大,但不需要太复杂的计算,这时候就可以用多台服务器处理,每台服务器都可访问分布式存储系统。

但很多问题是不适用使用云计算的。比如说,模拟导弹轨迹,属于大型浮点运算,不需什么存储,只需要大型的运算能力。如果你用云计算的框架,把运算分发到各个节点上,云计算的存储资源可能就用不上了,而且各个节点是通过网络接口传递消息的,这样效率会特别低下!这时候就需要超级计算机了。


超级计算机可以理解为用过交换机将许多cpu或gpu连接成的计算机,也就是cpu和cpu直接的交换信息,它由很多台服务器组合在一起,显著提高单次计算速度。在处理大型计算的时候,这种cpu直接交换信息的架构更适合。

超算是性能的概念,就好比是F1,而云计算就好比是公共汽车。F1可以非常快地把一个人带到目的地,而公共汽车擅长同时为多个乘客服务。


云计算使用虚拟化技术提高CPU和IO利用率,而超级计算机生来就是为了跑满CPU的。


云计算基础平台一般需要关注高可用性,以此基础上性能越高越好。超算则是高性能,在此基础之上兼顾可用性。

云计算,面对的是大众企业应用。超算,面向的是科学计算


3、什么是大数据应用?


在当今互联网社会,数据是一切生产性企业的行业基础。对人们在日常的网上互动中产生的日常操作记录日志进行相关的数据分析,便是大数据应用。


平时各种互联网应用使用的数据库服务器,当数据量达到GB级别以后,单表查询就会变得很慢,而传统的方式无法处理这个技术瓶颈问题,更无法高效处理更高量级级别以上的数据。


从google的技术起源发展而来的Hadoop则是目前业内广泛使用的首选解决方案。


4.Hadoop是什么?


Hadoop是大数据处理的工具。包含了数据存储和数据计算。数据计算也可以被称之为数据挖掘和分析。


Hadoop的思想之源:Google


作为当时全球数据量最大的公司,她所面对的数据和计算难题包括了:大量的网页怎么存储;搜索算法;如何精确高效的进行检索。由此产生了一系列的关键技术和思想:GFS;Map-Reduce;Bigtable等。


2003-2004年,Google公开了部分GFS和Mapreduce思想的细节,以此为基础Doug Cutting等人用了2年业余时间实现了DFS和Mapreduce机制,一个微缩版:Nutch。


Nutch是当时JAVA编写的一个爬虫软件,对于爬取到的海量数据的处理,也涉及到了如何进行合理的存储以及更有效率的计算分析的问题。


Hadoop名字来源于Doug Cutting儿子的玩具大象。于 2005 年秋天作为 Lucene的子项目 Nutch的一部分正式引入Apache基金会。2006 年 3 月份,Map-Reduce 和 Nutch Distributed File System (NDFS) 分别被纳入称为 Hadoop 的项目中。


大数据入门之Hadoop简介&HDFS原理

5.HDFS 是什么?


HDFS 是Hadoop存储的解决方案,全称是分布式存储系统HDFS (Hadoop Distributed File System ),它提供了 高可靠性、高扩展性和高吞吐率的数据存储服务。这种文件存储形式应用在大数据的各行各业,是性能最好的解决方案。最典型的应用案例就是云盘。采用该种文件存储的最直接的好处就是成本很低,可构建在廉价二手设备之上。


HDFS具备以下优点:

  1. 高容错性

  • 数据自动保存多个副本

  • 发生数据丢失、机器故障等副本丢失的情况后,可以自动恢复

    2.适合批处理

  • 移动计算而非数据

  • 数据位置暴露给计算框架

  • 支持任何技术框架

    3.适合大数据处理,理论上来说,没有数量上限

  • GB 、TB 、甚至PB 级数据

  • 百万规模以上的文件数量

  • 10K+ 节点

    4.可构建在廉价机器上,成本很低

  • 通过多副本提高可靠性

  • 提供了容错和恢复机制

HDFS具备以下缺点:

  • 小文件存取占用NameNode大量内存,寻道时间超过读取时间

  • 不支持并发写入、文件随机修改,一个文件只能有一个写者。修改文件内容 的成本太高,仅支持append-追加,但是成本消耗和新增基本持平。


6.HDFS节点介绍


分为三种节点类型:

(1) 主节点-NameNode;(NN)

NameNode主要功能:接受客户端的读写服务,保存数据的metadate信息,文件上传会出现数据的新增。包括以下三种内容:

1.文件owership和permissions;

Permissions 包含了拥有者、文件名,属组的区分和LINUX几乎相通。

2.文件包含哪些块,存储了blockID,是块的位置信息。

3.Block保存在哪个DataNode,由DataNode启动时上报。

4.NameNode的metadate信息在启动后会加载到内存

  • metadata存储到磁盘文件名为”fsimage”

  • Block的位置信息不会保存到fsimage

  • edits记录对metadata的操作日志

(2)第二节点-Secondary NameNode(SNN)

1.该节点主要是为了分担主节点的功能和资源消耗。用户的读写是不间断的,上述的NameNode对metadata 的数据的内存、磁盘的存储,需要同时操作内存和磁盘,容易引起文件的频繁修改、IO阻塞、线程阻塞等问题。特别是在元数据太大的时候触发的更新会引起瞬间爆发的IO,造成机器访问故障。该节点作为新的机器,可以协助 NameNode 更新fsimage文件。它不是NN的备份(但可以做备份),它的主要工作是帮助NN合并edits log,减少NN启动时间。


2.metadata是键值对的数据结构,SNN可以根据edits 日志修改fsimage。

 

SNN执行合并时

  • 根据配置文件设置的时间间隔fs.checkpoint.period  默认3600秒-1h

  • 根据配置文件设置edits log大小 fs.checkpoint.size 规定edits文件的最大值默认是64MB


大数据入门之Hadoop简介&HDFS原理

(3).从节点-DataNode(DN)

是真正存储数据(Block)的位置。DataNode 随 NameNode 启,并且上报Block的位置信息。通过向NN发送心跳保持与其联系(3秒一次),如果NN 10分钟没有收到DN的心跳,则认为其已经lost,并copy其上的block到其它DN。


DN拥有自我自检机制,通过Block副本数量以及是否损坏的检查完成自动节点间的相互新增或复制。

大数据入门之Hadoop简介&HDFS原理

7.HDFS 数据存储单元(block)


HDFS中的数据按照数据块-block的形式进行存储。文件被切分成固定大小的数据块。不同版本的Hadoop所支持的数据快的默认大小不同。hadoop 1.x 的block大小是64M,hadoop 2.x 的block大小是128M。


一个文件按大小被切分成若干个block ,存储到不同节点上。若文件大小不到指定值 ,也需要单独存成一个block。默认情况下每个block都有三个副本。副本作为相互的备份,相互间没有主从关系,可以同级使用。

Block大小和副本数通过Client端上传文件时设置,文件上传成功后副本数可以变更,Block Size不可变更。


大数据入门之Hadoop简介&HDFS原理

一个机架通常使用一条网页、一个电源。Block的副本不允许放到同一个机器节点,以下是放置策略:

第一个副本:放置在上传文件的DN;如果是集群外提交,则随机挑选一台磁盘不太满,CPU不太忙的节点。

第二个副本:放置在于第一个副本不同的 机架的节点上。

第三个副本:与第二个副本相同机架的节点。

更多副本:随机节点

大数据入门之Hadoop简介&HDFS原理

8.HDFS 写流程

大数据入门之Hadoop简介&HDFS原理

HDFS的API - 上传文件

请求 NameNode - 文件名、大小、用户

返回NameNode 配置 - 默认的 block 大小

空闲的 DataNode 机器

输出流

字节流 写入 DataNode

边写边切 - 【不需要先切】

副本的生产和客户端无关,当 DataNode 接收到第一个 block 时,就会往别的 DataNode 上复制。


9.HDFS 读流程

大数据入门之Hadoop简介&HDFS原理

文件路径请求

反馈元数据

字节流

三个以上的副本

block 完全一致,依次去读

 

同一个副本才比较相对的空闲。

由 NameNode 反馈一个相对空闲的 DataNode,哪一个节点的IO是空闲的,读取哪个。


10、HDFS文件权限

与Linux文件权限类似:

r: read; w:write; x:execute,权限x对于文件忽略,对于文件夹表示是否允许访问其内容

如果Linux系统用户zhangsan使用hadoop命令创建一个文件,那么这个文件在HDFS中owner就是zhangsan。

HDFS的权限目的:阻止好人错错事,而不是阻止坏人做坏事。HDFS相信,你告诉我你是谁,我就认为你是谁。只做用户认证,不做密码认证。


11.HDFS安全模式


namenode启动的时候,首先将映像文件(fsimage)载入内存,并执行编辑日志(edits)中的各项操作。

一旦在内存中成功建立文件系统元数据的映射,则创建一个新的fsimage文件(这个操作不需要SecondaryNameNode)和一个空的编辑日志。

此刻namenode运行在安全模式。即namenode的文件系统对于客服端来说是只读的。(显示目录,显示文件内容等。写、删除、重命名都会失败)。

在此阶段Namenode收集各个datanode的报告,当数据块达到最小副本数以上时,会被认为是“安全”的, 在一定比例(可设置)的数据块被确定为“安全”后,再过若干时间,安全模式结束。重启之后,需要等待1-2min。

当检测到副本数不足的数据块时,该块会被复制直到达到最小副本数,系统中数据块的位置并不是由namenode维护的,而是以块列表形式存储在datanode中。

大数据入门之Hadoop简介&HDFS原理

END

数据轩

关于大数据的“术、道、势”

科技|应用|趋势

以上是关于大数据入门之Hadoop简介&HDFS原理的主要内容,如果未能解决你的问题,请参考以下文章

大数据入门知识总结

Hadoop入门之hdfs

大数据技术之Hadoop(入门)概述运行环境搭建运行模式

大数据技术之Hadoop(入门)概述运行环境搭建运行模式

Hadoop之HDFS入门实战

Hadoop之HDFS入门实战