`
cyw
  • 浏览: 31726 次
  • 来自: 广州
社区版块
存档分类
最新评论

Hadoop

 
阅读更多

Hadoop

   我们知道,互联网近十年的数据增长是呈现爆炸增长的。大型互联网公司每天要处理的数据基本上都是TB级,甚至是PB级的。而为了存储处理这样海量的数据,传统的数据存储策略(关系型数据库)便陷入了瓶颈。不管是数据入库还是查询,使用传统的存储策略都设计到上亿条数据的便利查找操作,显然这使相当考验存储设备的性能的,也是相当耗时的。但我们知道,当代互联网是追求实时性、高用户体验的,这样的等待时间显然是不会被 认可的。

另外,在追求计算机性能的解决方案时,也必然意味着这样的计算机事极其昂贵、无法普及的,就像现在的超算中心一样,只能 是属于少数人的,大规模组织的。不利于小公司的发展,同样也不适应当代互联网的发展趋势。

而且,相比于互联网海量数据的增长速度,这样的一台高性能的机器,是否过不久还适合处理这样不断增长数据,还是一个问题呢。

https://hadoop.apache.org/

   于是,为适应这样的状况,有人就开始设计出了分布式系统,于是,Hadoop就出现了。

   Hadoop是一个分布式计算开源 软件框架。能在有大量廉价的硬件设备组成的集群上运行应用程序,存储处理海量级别数据。

   Hadoop的核心组件有两个,分别是分布式存储、分布式文件管理系统HDFS(Hadoop Distributed File System),还有就是分布式计算框架MapReduce。

   其实,Hadoop并不是一个原创的软件。因为在Hadoop之前已经有了很多的分布式框架,比如最著名的是Google的GFS、BigTable、MapReduce,Amason的 AWS、微软的 Azure和IBM的蓝云。但是这些软件都是闭源的、商业性的。而这时,Hadoop的创建者Doug Cutting就出现了,应Yahoo!的邀请,他开始在Yahoo!带领团队,开发Apache基金会的顶尖项目Hadoop。应该所Hadoop就是个山寨货,他就是Doug Cutting根据Google的三大论文的思想开发出来的,那个分布式计算框架MapReduce与Google的一模一样,连名字都不带改的。但是这并不妨碍Hadoop成为现如今最有影响力的软件。毕竟,这就是开源的力量。

 

 一、   Hadoop的两大组件

 1.1     HDFS

 



 

 

Namenode:名称节点,hdfs的管理程序。控制存储和IO交换。保存元数据

Secondary NameNode :辅助名称节点。与NomeNode通讯,复制并合并元数据(比如文件命名空间镜像、修改日志),合并为一个文件,并检查文件大小,将就得修改存入本地磁盘,防止文件过大。更新到NameNode之中。这个过程可以简称为“快照”。当NameNode崩溃是,可手动切换成NameNode,代替NameNode完成工作。

dataNode:是数据存储节点。

   以上便是Hadoop的基本存储架构。

   HDFS典型的部署是在一个专门的机器 运行NameNode,集群中的其他机器各运行一个DataNode,当然,也可以在运行NameNode的机器上面运行DataNode,或者一个机器运行多个DataNode。一个集群只能有一个NameNode。

   NameNode使用事务日志(EditLog)来记录HDFS元数据的变化,使用映射文件(FSImage)存储文件系统的命名空间,包含文件的映射、文件的属性信息等。事务日志和映射文件都存储在NameNode的本地文件系统之中。NameNode启动时,从磁盘中读取映射文件和事务日志,把事务日志的事务都应用到内存中的映射文件上,然后将新的元数据刷新到本地磁盘的新的映射文件上,这样可以截去旧的事务日志,这个过程称为检查点(CheckPoint)。HDFS还设有Secondary NameNode节点,他辅助NameNode处理映射文件和事务日志。NameNode启动的时候合并映射文件和事务日志,而Secondary NameNode周期性的从NameNode复制映射和事务日志到临时目录里面,合并成新的映射文件后再重新上传给NameNode,NameNode更新映射文件并处理事务日志,使得事务日志的大小始终控制在可配置的限度之下。



 

 



 

 



 

JobTracker:运工作监控器。行在主服务器Master节点里面,就近运行。操作切割分配监控task。

 

 
 

管理自己节点上面的task。

 



 

<!--[if !supportLists]-->1.2    <!--[endif]-->MapReduce

M/R就是一个编程模型。顾名思义,他就是有Map还有Reduce两个部分组成的 。Map是把一组数据一对一的映射成为另外的一组数据,Reduce是对一组数据进行归约,映射和归约分别有一个函数指定。

 

 二、   实现机理



 

 



 

 1、     机柜意识

通常,大型的HDFS集群跨多个安装点(机柜)排列。一个安装点中的不同节点之间的网络流量通常比跨安装点的网络流量更加的高校。一个NameNode尽量将一个块的多个副本放在多个安装点上以提高容错能力。但是,要平衡容错能力与网络流量的话,HDFS就允许管理员决定一个节点属于哪个安装点,于是,每一个节点就都可以知道它的机柜ID,也就是说,具有了机柜意识。

NameNode可以通过DataNode的机柜ID识别它们的位置。

 2、     冗余备份

HDFS是一个大集群、跨机器、可靠存储的大型文件系统。每个文件都存储在一个个的数据块之中,默认数据块大小为64MB。同一个文件中除了最后一块以外的所有都是一样大的。文件的数据块通过复制备份来保证容错。当然,文件的数据块的大小和复制因子都是可以进行配置的。

HDFS的文件都是一次性写入的,并且都是严格限制任何时候都是一个写用户。DataNode使用本地文件系统来存储HDFS的数据,但是它对于HDFS的文件是一无所知的,只是使用一个个文件来存储HDFS的数据块。每当DataNode启动的时候,都会先进行一次对于本地文件系统的便利,得到一份关于HDFS数据块与本地额对应关系列表,并把这个列表报告发给NameNode。这表示块报告,块报告包含了DataNode上所有块的列表。

 3、     副本存放

HDFS集群一般运行在多个机架之上,不同的机架上机器的通信是通过交换机的。通常,机架内节点之间的带宽比跨机架节点之间的带宽大、更快,而这会影响HDFS的可靠性以及性能。而HDFS会通过机架感知(Rack-aware,NameNode可以确定每个机架的所属的ID)来改进平衡数据可靠性。

一般,当复制因子是3的时候,HDFS的数据块备份策略是,将两个副本放在同一个机架的不同节点上,最后一个副本放在另外的一个机架的节点上。这样就可以防止整个机架失效的时候数据丢失。

 4、    HDFS心跳

因为在这样的大型集群里面,宕机是一种常态。所以,NameNode与DataNode之间的连通性,随时有可能会失效。因此,每个DataNode都会主动向NameNode发送定期心跳信息,如果NameNode没有接收到对应的DataNode的心跳信息,就表明连通性丧失。然后,NameNode会将不能响应心跳信息的DataNode标记为“死DataNode”,并不再向他们发送请求,而存储在该DataNode节点上的数据将不再对那个节点的HDFS客户端可用,该节点将被从系统中有效的移除。如果一个DataNode的死导致数据库的复制因子降到最小值以下,NameNode将会启动附加复制,将复制因子带回正常阶段。

 5、     安全模式

HDFS启动是时,NameNode会进入一个特殊的模式,安全模式,此时不会出现数据块的复制。NameNode会受到个DataNode的心跳信息以及数据块报告。数据块报告中包含一个DataNode所拥有的数据块列表,每个数据块里面都有指定书目的副本。当某个NameNode登记的数据复制品达到最小数目(<=最小数目)时,数据块会被认为是安全的,安全复制。在一定百分比(可配置)的数据块被NameNode检测确定是安全登记之后,在登记(加上附加的30秒),NameNode会推出安全模式。当检测到副本数不足的数据块时,该数据块会被复制到其他的节点之上,以达到最小副本数。

 6、    数据完成性检测

从DataNode中获取的数据块可能会是损坏的。为此,HDSF客户端实现了对于HDFS文件内容的校验和检查(Checksum)。在HDFS文件被创建时,会计算每个数据块的检验和,并将检验和作为一个单独的隐藏文件保存在命名空间里面。当获取这个文件后,会检查各个DataNode取出的数据块和相应的校验和进行匹配。如若不匹配,则会选择其他副本的DataNode去数据块。

 7、     空间回收

当文件被删除是,文件会被移动到/trash目录下,只要还在这个目录之下,文件就可以被快速回复。文件在这个目录里面的时间是可以设置的,超过这个时间,系统就会把它从系统的命名空间之中删除。而文件的删除便会引起相应数据块的释放。

 8、     元数据磁盘失效

映射文件和事务日志是HDFS的核心数据结构。若果这些文件损坏,将会导致HDFS的不可用。当然,可以设置NameNode支持维护映射文件和事务日志的多个副本,任何映射文件或事务日志的修改都会同步到他的副本上。每次NameNode重启时,都会选择最新的一致性的映射文件和事务日志。

 9、     快照

快照支持存储某一个时间点的数据复制。利用这一特性可以将损坏的HDFS回滚到以前的某一个正常的时间点。

 

 

以上便是最近的一些心得,还请斧正。

  • 大小: 78.2 KB
  • 大小: 118.6 KB
  • 大小: 208.4 KB
  • 大小: 100.9 KB
  • 大小: 106.7 KB
  • 大小: 101.6 KB
  • 大小: 77.4 KB
  • 大小: 95.5 KB
0
1
分享到:
评论

相关推荐

    hadoop2.7.3 hadoop.dll

    在windows环境下开发hadoop时,需要配置HADOOP_HOME环境变量,变量值D:\hadoop-common-2.7.3-bin-master,并在Path追加%HADOOP_HOME%\bin,有可能出现如下错误: org.apache.hadoop.io.nativeio.NativeIO$Windows....

    Hadoop权威指南 中文版

    本书从hadoop的缘起开始,由浅入深,结合理论和实践,全方位地介绍hado叩这一高性能处理海量数据集的理想工具。全书共14章,3个附录,涉及的主题包括:haddoop简介:mapreduce简介:hadoop分布式文件系统;hadoop的i...

    Hadoop下载 hadoop-2.9.2.tar.gz

    Hadoop 是一个处理、存储和分析海量的分布式、非结构化数据的开源框架。最初由 Yahoo 的工程师 Doug Cutting 和 Mike Cafarella Hadoop 是一个处理、存储和分析海量的分布式、非结构化数据的开源框架。最初由 Yahoo...

    Hadoop下载 hadoop-3.3.3.tar.gz

    Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进 Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不...

    《Hadoop大数据开发实战》教学教案—01初识Hadoop.pdf

    《Hadoop大数据开发实战》教学教案—01初识Hadoop.pdf《Hadoop大数据开发实战》教学教案—01初识Hadoop.pdf《Hadoop大数据开发实战》教学教案—01初识Hadoop.pdf《Hadoop大数据开发实战》教学教案—01初识Hadoop.pdf...

    hadoop-3.3.4 版本(最新版)

    Apache Hadoop (hadoop-3.3.4.tar.gz)项目为可靠、可扩展的分布式计算开发开源软件。官网下载速度非常缓慢,因此将hadoop-3.3.4 版本放在这里,欢迎大家来下载使用! Hadoop 架构是一个开源的、基于 Java 的编程...

    hadoop2.8.5-windows本地开发

    内容概要:windows环境下添加snappy源码,并对2.8.5的apache版本hadoop包进行编译,生成指定的hadoop.dll、snappy.dll文件,方便Windows环境下利用idea工具进行Hadoop、Spark的local模式下代码调试。 版本更新:...

    hadoop winutils 多个版本最全大合集dll,winutils.exe

    hadoop的hadoop.dll和winutils.exe “ Could not locate executable null\bin\winutils.exe in the Hadoop binaries”解决方法:把winutils.exe加入你的hadoop-x.x.x/bin下 包含hadoop.dll, winutils.exe hadoop-...

    Hadoop开发环境的插件hadoop-eclipse-plugin-2.10.1

    Hadoop Eclipse是Hadoop开发环境的插件,用户在创建Hadoop程序时,Eclipse插件会自动导入Hadoop编程接口的jar文件,这样用户就可以在Eclipse插件的图形界面中进行编码、调试和运行Hadop程序,也能通过Eclipse插件...

    Cloudera Hadoop 5&amp;Hadoop高阶管理及调优课程

    Cloudera Hadoop 5&Hadoop高阶管理及调优课程,完整版,提供课件代码资料下载。 内容简介 本教程针对有一定Hadoop基础的学员,深入讲解如下方面的内容: 1、Hadoop2.0高阶运维,包括Hadoop节点增加删除、HDFS和...

    hadoop最新版本3.1.1全量jar包

    hadoop-annotations-3.1.1.jar hadoop-common-3.1.1.jar hadoop-mapreduce-client-core-3.1.1.jar hadoop-yarn-api-3.1.1.jar hadoop-auth-3.1.1.jar hadoop-hdfs-3.1.1.jar hadoop-mapreduce-client-hs-3.1.1.jar ...

    Hadoop集群程序设计与开发

    《Hadoop集群程序设计与开发(数据科学与大数据技术专业系列规划教材)》系统地介绍了基于Hadoop的大数据处理和系统开发相关技术,包括初识Hadoop、Hadoop基础知识、Hadoop开发环境配置与搭建、Hadoop分布式文件系统、...

    hadoop-3.1.3安装包

    Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合...

    hadoop配置资源 ,hadoop-3.0.0,hadoop.dll,winutils

    调用保存文件的算子,需要配置Hadoop依赖 将文件夹中的 hadoop-3.0.0 解压到电脑任意位置 在Python代码中使用os模块配置:os.environ[‘HADOOP_HOME’] = ‘HADOOP解压文件夹路径’ winutils.exe,并放入Hadoop解压...

    部署全分布模式Hadoop集群 实验报告

    部署全分布模式Hadoop集群 实验报告一、实验目的 1. 熟练掌握 Linux 基本命令。 2. 掌握静态 IP 地址的配置、主机名和域名映射的修改。 3. 掌握 Linux 环境下 Java 的安装、环境变量的配置、Java 基本命令的使用。 ...

    Hadoop The Definitive Guide PDF

    书名:Hadoop The Definitive Guide 语言:英文 The rest of this book is organized as follows. Chapter 2 provides an introduction to MapReduce. Chapter 3 looks at Hadoop filesystems, and in particular ...

    Hadoop.Essentials.1784396680

    Title: Hadoop Essentials Author: Shiva Achari Length: 172 pages Edition: 1 Language: English Publisher: Packt Publishing Publication Date: 2015-04-24 ISBN-10: 1784396680 ISBN-13: 9781784396688 Delve ...

    基于Hadoop图书推荐系统源码+数据库.zip

    基于Hadoop图书推荐系统源码+数据库.zip基于Hadoop图书推荐系统源码+数据库.zip基于Hadoop图书推荐系统源码+数据库.zip基于Hadoop图书推荐系统源码+数据库.zip基于Hadoop图书推荐系统源码+数据库.zip基于Hadoop图书...

    hadoop-lzo-0.4.20.jar

    hadoop2 lzo 文件 ,编译好的64位 hadoop-lzo-0.4.20.jar 文件 ,在mac 系统下编译的,用法:解压后把hadoop-lzo-0.4.20.jar 放到你的hadoop 安装路径下的lib 下,把里面lib/Mac_OS_X-x86_64-64 下的所有文件 拷到 ...

    hadoop-eclipse-plugin-2.10.0.jar

    Eclipse集成Hadoop2.10.0的插件,使用`ant`对hadoop的jar包进行打包并适应Eclipse加载,所以参数里有hadoop和eclipse的目录. 必须注意对于不同的hadoop版本,` HADDOP_INSTALL_PATH/share/hadoop/common/lib`下的jar包...

Global site tag (gtag.js) - Google Analytics