Hadoop的简要介绍

系列博客目录链接:Hadoop权威指南学习笔记:总章

零. 本节主要内容

  • Hadoop产生的背景
  • Hadoop的历史
  • 什么是Hadoop
  • Hadoop的主要作用是什么
  • Hadoop的基础架构

一. Hadoop产生的背景

在当今这个数据爆炸的时代,我们要想在未来取得成功,就不仅需要管理存储自己的数据,还要从其他企业或组织获取数据,此时我们就需要对大规模的数据进行存储分析,然而以往的关系型数据库对这方面确捉襟见肘。

二. Hadoop的历史

  • 雏形开始于2002年的Apache的Nutch,Nutch是一个开源Java 实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。包括全文搜索和Web爬虫。
  • 2003年Google发表了一篇技术学术论文谷歌文件系统(GFS)。GFS也就是google File System,google公司为了存储海量搜索数据而设计的专用文件系统。
  • 2004年Nutch创始人Doug Cutting基于Google的GFS论文实现了分布式文件存储系统名为NDFS。
  • 2004年Google又发表了一篇技术学术论文MapReduce。MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行分析运算。
  • 2005年Doug Cutting又基于MapReduce,在Nutch搜索引擎实现了该功能。
  • 2006年,Yahoo雇用了Doug Cutting,Doug Cutting将NDFS和MapReduce升级命名为Hadoop,Yahoo开建了一个独立的团队给Goug Cutting专门研究发展Hadoop。

不得不说Google和Yahoo对Hadoop的贡献功不可没。

三. 什么是Hadoop

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算

四. Hadoop的主要作用是什么

用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。

五. Hadoop的基础架构

本节内容部分参考自:HDFS

从Hadoop产生的背景我们可以得知,Hadoop需要解决大规模数据存储和大规模数据并行计算两个痛点,而针对大规模的数据进行计算时,又涉及到多个节点的资源分配,任务管理,因此在Hadoop 2.0 框架中,Hadoop集群主要分为以下三个部分:

5.1 HDFS

Hadoop Distributed File System (HDFS) 是Hadoop集群中最根本的文件系统,它提供了高扩展,高容错,机架感知数据存储等特性,可以非常方便的部署在机器上面。HDFS除过分布式文件系统所通有的特点之外,还有些仅属自己的特点:

  • 对硬件故障的考虑设计
  • 更大的数据单元,默认的块大小为128M
  • 对序列操作的优化
  • 机架感知
  • 支持异构集群和跨平台

Hadoop集群中的数据被划分成更小的单元(通常被称为块),并且将其分布式存储在集群中,每个块有两个副本,这个两个副本被存储在集群的的一个机架上。这样数据包含自身便有三个副本,具有极高的可用性和容错性,如果一个副本丢失,HDFS将会自动的重新复制一份,以确保集群中一共包含三个数据副本(包含自身)。

5.2 MapReduce

MapReduce是为能够在集群上分布式处理海量数据而量身订做的框架,MapReduce job分为以下三个操作

  • Map 将输入数据划分为key-value集合。
  • Shuffle 将Map产生的结果传输给Reduce。
  • Reduce 则对接收到的key-value进一步处理。

以下以一个简单的单词出现次数统计为例:
原始文件:

Hello World
Hello Good
Hello Python
Python is Good

map阶段转化过程:

Hello World	->	(Hello, 1) (World, 1)
Hello Good	->	(Hello, 1) (Good, 1)
Hello Python	->	(Hello, 1) (Python, 1)
Python Good	->	(Python, 1) (Good, 1)

shuffle过程

(Hello, 1) (World, 1)
(Hello, 1) (Good, 1)			->(Good, [1, 1])  (Hello, [1, 1, 1])  (Python, [1, 1])  (World, [1])
(Hello, 1) (Python, 1)
(Python, 1) (Good, 1)

reduce过程

(Good, [1, 1]) 		-> (Good, 2)
(Hello, [1, 1, 1])  	-> (Hello, 3)
(Python, [1, 1])  	-> (Python, 2)
(World, [1])		-> (World, 1)

5.3 Yarn

YARN (Yet Another Resource Negotiator) 是为应用执行分配计算资源的一个框架。YARN主要包含下面三个核心组件

  • ResourceManager(一个集群只有一个)
  • ApplicationMaster(每个应用都有一个)
  • NodeManagers (每个节点都有一个)

Note:
YARN 使用了一些容易让人误解的名词作为术语,因此应该特别注意。比如在Hadoop ecosystem中,Container这个概念,平常我们听到Container时,我们都认为是与Docker相关。但是这里却是指Resource Container (RC),即表示物理资源的集合。通常被抽象的表示,将资源分配给到目标和可分配单元。
Application也是一个熟词僻义的用法,在YARN中,一个Application指的是被一并执行的task的集合,YARN中的Application的概念大概类似于MapReduce中的job这个概念。

你可能感兴趣的:(hadoop权威指南学习笔记)