Hadoop系列之初始Hadoop

前言

  工作后很少主动再学习其他新的技术了,这次终于鼓足勇气开始了新的篇章——Hadoop,作为一个如今最火的技术之一,我也来瞧瞧它的庐山真面目。不过本次要准备写的Hadoop系列基本是个学习笔记了,中间会掺杂些自己的理解,以自己理解的方式展现出来。


正题

Hadoop历史

  万事从头说起,我们先来看下Hadoop的由来:

始于2002年的apache项目Nutch

2003年Google发表了关于GFS的论文

2004年Nutch的开发者开发了NDFS

2004年Google发表了关于MapReduce的论文

2005年MapR被引入了NDFS

2006年改名为Hadoop,NDFS的创始人加入Yahoo,Yahoo成立了一个专门的小组发展Hadoop


Hadoop核心

  说起Hadoop,其实很简单,它主要就是用来解决2个问题:海量数据的存储和分析,用到的主要是下面两个技术:

HDFS(用于海量数据的存储
  HDFS(Hadoop Distributed File System,Hadoop分布式文件系统),它是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,适合那些有着超大数据集(large data set)的应用程序。
    
HDFS的设计特点

1、大数据文件,非常适合上T级别的大文件或者一堆大数据文件的存储,如果文件只有几个G甚至更小就没啥意思了。

2、文件分块存储,HDFS会将一个完整的大文件平均分块存储到不同计算器上,它的意义在于读取文件时可以同时从多个主机取不同区块的文件,多主机读取比单主机读取效率要高得多得都。

3、流式数据访问,一次写入多次读写,这种模式跟传统文件不同,它不支持动态改变文件内容,而是要求让文件一次写入就不做变化,要变化也只能在文件末添加内容。

4、廉价硬件,HDFS可以应用在普通PC机上,这种机制能够让给一些公司用几十台廉价的计算机就可以撑起一个大数据集群。

5、硬件故障,HDFS认为所有计算机都可能会出问题,为了防止某个主机失效读取不到该主机的块文件,它将同一个文件块副本分配到其它某几个主机上,如果其中一台主机失效,可以迅速找另一块副本取文件。


HDFS的关键元素

Block:将一个文件进行分块,通常是64M。

NameNode:保存整个文件系统的目录信息、文件信息及分块信息,这是由唯一一台主机专门保存,当然这台主机如果出错,NameNode就失效了。在Hadoop2.*开始支持activity-standy模式----如果主NameNode失效,启动备用主机运行NameNode。

DataNode:分布在廉价的计算机上,用于存储Block块文件。


HDFS架构
Hadoop系列之初始Hadoop_第1张图片

MapReduce(用于海量数据的分析
  MapReduce是一套从海量·源数据提取分析元素最后返回结果集的编程模型,将文件分布式存储到硬盘是第一步,而从海量数据中提取分析我们需要的内容就是MapReduce做的事了。
  
  MapReduce的基本原理就是:将大的数据分析分成小块逐个分析,最后再将提取出来的数据汇总分析,最终获得我们想要的内容。当然怎么分块分析,怎么做Reduce操作非常复杂,Hadoop已经提供了数据分析的实现,我们只需要编写简单的需求命令即可达成我们想要的数据。

小结
  总的来说Hadoop适合应用于大数据存储和大数据分析的应用,适合于服务器几千台到几万台的集群运行,支持PB级的存储容量。
  
  Hadoop典型应用有:搜索、日志处理、推荐系统、数据分析、视频图像分析、数据保存等。
 
  如果你也想使用Hadoop,要看看项目适不适合,不要盲目使用。


你可能感兴趣的:(Hadoop,Hadoop)