Hadoop的简介
Apache™ Hadoop® 项目为可靠、可扩展、分布式计算开发开源软件。apachehadoop软件库是一个框架,允许使用简单的编程模型跨计算机集群对大型数据集进行分布式处理。它被设计成从单个服务器扩展到数千台机器,每台都提供本地计算和存储。与依赖硬件来提供高可用性不同,库本身的设计目的是在应用程序层检测和处理故障,因此在一组计算机上提供高可用性服务,每台计算机都可能发生故障。
Hadoop的框架最核心的设计就是HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。Hadoop的高吞吐,海量数据处理的能力使得人们可以方便地处理海量数据。但是,Hadoop的缺点也和它的优点同样鲜明——延迟大,响应缓慢,运维复杂。
Hadoop原本来自于谷歌一款名为MapReduce的编程模型包。谷歌的MapReduce框架可以把一个应用程序分解为许多并行计算指令,跨大量的计算节点运行非常巨大的数据集。使用该框架的一个典型例子就是在网络数据上运行的搜索算法。Hadoop最初只与网页索引有关,迅速发展成为分析大数据的领先平台。
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。
Hadoop的框架最核心的设计就是:HDFS和MapReduce。
HDFS为海量的数据提供了存储,
MapReduce则为海量的数据提供了计算。MapReduce可以普遍应用于很多大规模数据的计算问题。MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)"和"Reduce(归约)",是它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。
HDFS和MapReduce共同组成Hadoop分布式系统体系结构的核心。HDFS在集群上实现了分布式文件系统,MapReduce在集群上实现了分布式计算和任务处理。HDFS在MapReduce任务处理过程中提供了文件操作和存储等支持,MapReduce在HDFS的基础上实现了任务的分发、跟踪、执行等工作,并收集结果,二者相互作用,完成分布式集群的主要任务。
官网:
Apache Hadoop 3.2.1
1、HDFS体系结构图
HDFS作为分布式文件系统在数据管理方面可借鉴点——文件块的放置。一个Block会有三份备份,一份在NameNode指定的DateNode上,一份放在与指定的DataNode不在同一台机器的DataNode上,一根在于指定的DataNode在同一Rack上的DataNode上。备份的目的是为了数据安全,采用这种方式是为了考虑到同一Rack失败的情况,以及不同数据拷贝带来的性能的问题。
图示:NameNode是管理者,DataNode是文件存储者,Client客户端是需要获取分布式文件系统的应用程序。
文件写入
(1)、 Client向NameNode发起文件写入的请求。
(2)、 NameNode根据文件大小和文件块配置情况,返回给Client它管理的DataNode的信息。
(3)、 Client将文件划分为多个block,根据DataNode的地址,按顺序将block写入DataNode块中。
文件读取
(1)、Client向NameNode发起读取文件的请求。
(2)、NameNode返回文件存储的DataNode信息。
(3)、Client读取文件信息。
Hadoop的深入理解
0、深入了解Hadoop的其它相关基础知识
0.1、Hbase数据管理——Hadoop database
BigData之Hbase:Hbase数据管理的简介、下载、案例应用之详细攻略
0.2、Hive数据管理——建立在Hadoop上的数据仓库基础架构
BigData之Hive:Hive数据管理的简介、下载、案例应用之详细攻略
0.3、MongDB基于分布式文件存储数据库
BigData之MongoDB:MongoDB基于分布式文件存储数据库的简介、下载、案例应用之详细攻略