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则为海量的数据提供了计算。
(一)前言
Hadoop是Apache软件基金会发起的一个项目,在大数据分析以及非结构化数据蔓延的背景下,Hadoop受到了前所未有的关注 。
Hadoop是一种分布式数据和计算的框架。它很擅长存储大量的半结构化的数据集。数据可以随机存放,所以一个磁盘的失败并不会带来数据丢失。Hadoop也非常擅长分布式计算——快速地跨多台机器处理大型数据集合。
Hadoop特性
Hadoop是一个能够对大量数据进行分布式处理的软件框架,并且
是以一种可靠、高效、可伸缩的方式进行处理的,它具有以下几个方
面的特性:
• 高可靠性
• 高效性
• 高可扩展性
• 高容错性
• 成本低
• 运行在Linux平台上
• 支持多种编程语言
Hadoop大数据处理的意义
Hadoop得以在大数据处理应用中广泛应用得益于其自身在数据提取、转换和加载(ETL)方面上的天然优势。Hadoop的分布式架构,将大数据处理引擎尽可能的靠近存储,对例如像ETL这样的批处理操作相对合适,因为类似这样操作的批处理结果可以直接走向存储。Hadoop的MapReduce功能实现了将单个任务打碎,并将碎片任务(Map)发送到多个节点上,之后再以单个数据集的形式加载(Reduce)到数据仓库里。
Hadoop1.0的局限与不足
Hadoop1.0的核心组件(仅指MapReduce和HDFS,不包括Hadoop生态系统内的Pig、Hive、HBase等其他组件),
主要存在以下不足:
- 抽象层次低,需人工编码
- 表达能力有限
- 开发者自己管理作业(Job)之间的依赖关系
- 难以看到程序整体逻辑
- 执行迭代操作效率低
- 资源浪费(Map和Reduce分两阶段执行)
- 实时性差(适合批处理,不支持实时交互式)
(二)针对Hadoop1.0的改进与提升
Hadoop的优化与发展主要体现在两个方面:
-
一方面是Hadoop自身两大核心组件MapReduce和HDFS的架构设计改进
-
- 1、HDFS存在问题
NameNode单点故障,难以应用于在线场景
NameNode压力过大,且内存受限,影响系统可扩展性
- 1、HDFS存在问题
-
- 2、MapReduce存在的问题
JobTracker访问压力大,影响系统可扩展性
难以支持除MapReduce计算框架之外的计算框架、比如spark、storm
- 2、MapReduce存在的问题
-
另一方面是Hadoop生态系统其它组件的不断丰富,加入了Pig、Tez、Spark和Kafka等新组件
-
- Hadoop1.0只支持离线计算,不支持spark内存计算框架(专为大规模数据处理而设计的快速通用的计算引擎),storm是流式计算框架(计算实时数据)
Hadoop框架自身的改进:从1.0到2.0
组件 |
---|