Hadoop

Hadoop是什么

小故事版本的解释

小明接到一个任务:计算一个100M的文本文件中的单词的个数,
这个文本文件有若干行,每行有若干个单词,每行的单词与单词之间都是以空格键分开的。 对于处理这种100M量级数据的计算任务,小明感觉很轻松。 他首先把这个100M的文件拷贝到自己的电脑上,然后写了个计算程序在他的计算机上执行后顺利输出了结果。

后来,小明接到了另外一个任务,计算一个1T(1024G)的文本文件中的单词的个数。 再后来,小明又接到一个任务,计算一个1P(1024T)的文本文件中的单词的个数……

面对这样大规模的数据,小明的那一台计算机已经存储不下了, 也计算不了这样大的数据文件中到底有多少个单词了。

机智的小明上网百度了一下,他在百度的输入框中写下了:大数据存储和计算怎么办? 按下回车键之后,出现了有关Hadoop的网页。

看了很多网页之后,小明总结一句话:

Hadoop就是存储海量数据和分析海量数据的工具。

稍专业点的解释

Hadoop是由java语言编写的,

在分布式服务器集群上存储海量数据并运行分布式分析应用的开源框架,

其核心部件是HDFS与MapReduce。

HDFS是一个分布式文件系统:

引入存放文件元数据信息的服务器Namenode和实际存放数据的服务器Datanode,对数据进行分布式储存和读取。  

MapReduce是一个计算框架:MapReduce的核心思想是把计算任务分配给集群内的服务器里执行。

通过对计算任务的拆分(Map计算/Reduce计算)再根据任务调度器(JobTracker)对任务进行分布式计算。

记住下面的话:

Hadoop的框架最核心的设计就是:HDFS和MapReduce。

HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。

把HDFS理解为一个分布式的,有冗余备份的,可以动态扩展的用来存储大规模数据的大硬盘。

把MapReduce理解成为一个计算引擎,按照MapReduce的规则编写Map计算/Reduce计算的程序,可以完成计算任务。

Hadoop能干什么?

大数据存储:分布式存储

日志处理:擅长日志分析

ETL:数据抽取到oracle、mysql、DB2、mongdb及主流数据库

机器学习: 比如Apache Mahout项目

搜索引擎:Hadoop + lucene实现

数据挖掘:目前比较流行的广告推荐,个性化广告推荐

Hadoop是专为离线和大规模数据分析而设计的,并不适合那种对几个记录随机读写的在线事务处理模式。

Copyright: 采用 知识共享署名4.0 国际许可协议进行许可

Links: https://www.xiaofsu.com/archives/hadoop