一、概述
1.1 Hadoop简介
-
Hadoop是Apache软件基金会旗下的一个开源分布式计算平台,为用户提供了系统底层细节透明的分布式基础架构,基于Java语言开发的,具有很好的跨平台特性,并且可以部署在廉价的计算机集群中 。
-
Hadoop的核心是分布式文件系统HDFS和MapReduce,被公认为行业大数据标准开源软件,在分布式环境下提供了海量数据的处理能力,几乎所有主流厂商都围绕Hadoop提供开发工具、开源软件、商业化工具和技术服务 。
1.2 Hadoop发展简史
-
Hadoop最初是由Apache Lucene项目的创始人Doug Cutting开发的文本搜索库。
-
在2004年,Nutch项目也模仿GFS开发了自己的分布式文件系统NDFS(Nutch Distributed File System),也就是HDFS的前身 。
-
2004年,谷歌公司又发表了另一篇有深远影响的论文,阐述MapReduce分布式编程思想。
-
2005年,Nutch开源实现了谷歌的MapReduce。
-
2006年2月,Nutch中的NDFS和MapReduce开始独立出来,成为Lucene项目的一个子项目,称为Hadoop。
-
2008年1月,Hadoop正式成为Apache顶级项目。
-
2008年4月,Hadoop打破世界纪录,成为最快排序1TB数据的系统。
-
在2009年5月,Hadoop更是把1TB数据排序时间缩短到62秒。
1.3 Hadoop的特性
Hadoop是一个能够对大量数据进行分布式处理的软件框架,并且是以一种可靠、高效、可伸缩的方式进行处理的,它具有以下几个方面的特性:
-
高可靠性
-
高效性
-
高可扩展性
-
高容错性
-
支持多种编程语言
1.4 Hadoop的应用架构
二、Hadoop项目结构
Hadoop的项目结构不断丰富发展,已经形成一个丰富的Hadoop生态系统:
三、Hadoop的安装与使用
-
单机模式:Hadoop 默认模式为非分布式模式(本地模式),无需进行其他配置即可运行。非分布式即单 Java 进程,方便进行调试 。
-
伪分布式模式:Hadoop 可以在单节点上以伪分布式的方式运行,Hadoop 进程以分离的 Java 进程来运行,节点既作为 NameNode 也作DataNode,同时,读取的是 HDFS 中的文件 。
-
分布式模式:使用多个节点构成集群环境来运行Hadoop。
四、Hadoop集群的部署与使用
4.1 集群节点类型
Hadoop框架中最核心的设计是对数据进行计算的MapReduce和为海量数据提供存储的HDFS。MapReduce的作业主要包括:从磁盘或从网络读取数据,即IO密集工作和计算数据,即CPU密集工作 。Hadoop集群的整体性能取决于CPU、内存、网络以及存储之间的性能平衡。一个基本的Hadoop集群中的节点主要有:
-
NameNode:负责协调集群中的数据存储
-
DataNode:存储被拆分的数据块
-
JobTracker:协调数据计算任务
-
TaskTracker:负责执行由JobTracker指派的任务
-
SecondaryNameNode:帮助NameNode收集文件系统运行的状态信息
4.2 集群网络拓扑
-
普通的Hadoop集群结构由一个两阶网络构成
-
-
在相同的机架中的节点间的带宽的总和,要大于不同机架间的节点间的带宽总和
五、总结
-
Hadoop被视为事实上的大数据处理标准,具有高可靠性、高效性、高可扩展性、高容错性、成本低、运行在Linux平台上、支持多种编程语言等特性 。
-
经过多年发展,Hadoop项目已经变得非常成熟和完善,包括Avro、Zookeeper、HDFS、MapReduce、HBase、Hive、Chukwa、Pig等子项目,其中,HDFS和MapReduce是Hadoop的两大核心组件。
六、参考资料