从技术角度入门Hadoop

Hadoop这个名字不是一个缩写,它是一个虚构的名字。该项目的创建者,Doug Cutting这样解释Hadoop的得名:"这个名字是我孩子给一个棕黄色的大象样子的填充玩具命名的。我的命名标准就是简短,容易发音和拼写,没有太多的意义,并且不会被用于别处。小孩子是这方面的高手。”

Hadoop是 适合海量数据的分布式存储和计算平台。它可以用来处理比较小的只有几十K,几十M的数据,但显示不出高效性,甚至可能还不如传统的单虚拟机运行效率,所以Hadoop更适合处理TB数量级以上的数据。对于怎么理解分布式存储和计算,我们先来看一下Hadoop的架构图:


HDFS和Map/Reduce是核心组成,它们分别负责存储和计算。
一、 HDFS
分布式文件系统,采用主从结构。存储在 HDFS 中的文件被分成块,然后将这些块复制到多个计算机中(DataNode)。这与传统的 RAID 架构大不相同。块的大小(预设 64MB)和复制的块数量在创建文件时由客户机决定。NameNode 可以控制所有文件操作。HDFS 内部的所有通信都基于标准的 TCP/IP 协议。HDFS 的架构是基于一组特定的节点构建的,只有一个主节点NameNode(NN)和多个从节点DataNode(DN)。解释一下NN和DN:

NN:主要功能是提供名称查询服务,是一个jetty服务器。
    --接受用户操作请求(例如读文件)
    --维护文件系统的目录结构
    --管理文件和block之间的关系,block与DN之间的关系
DN:--保存block
     --启动DN线程时会向NN汇报block信息
     --通过向NN发送心跳保持联系(3秒一次),如果NN10分钟没有收到DN的心跳,则认为其lost,并copy其上的block到其他DN。

此外,HDFS通过副本机制提高可靠度和读取吞吐量,block副本系数一般为3,放置策略:
第一个副本:放置在上传文件的DN,如果是集群外提交,则随机挑选一台磁盘不太满,CPU不太忙的节点;
第二个副本:放置在与第一个副本不同的机架的节点上;
第三个副本:与第二个副本相同集群的节点。

二、 Map/Reduce
Map/Reduce是一个使用简易的软件框架,基于它写出来的应用程序能够运行在由上千个商用机器组成的大型集群上,并以一种可靠容错的方式并行处理上T级别的数据集。
Map/Reduce框架也是主从结构,由一个单独的master JobTracker 和每个集群节点一个slave TaskTracker共同组成。master负责调度构成一个作业的所有任务,这些任务分布在不同的slave上,master监控它们的执行,重新执行已经失败的任务。而slave仅负责执行由master指派的任务。(类似项目经理和程序员的上下级关系)

正因为HDFS和Map/Reduce的设计原则,Hadoop有了下面四个特点:
1. 扩容能力:能可靠的存储和处理PB数据。
2. 成本低:可以通过普通机器组成的服务器群来分发以及处理数据。这些服务器群总计可达数千个节点。
3: 高效率:通过分发数据,Hadoop可以在数据所在的节点上并行处理。
4. 可靠性:Hadoop能自动的维护数据的多份副本,并且在任务失败后能自动的重新部署计算任务。

猜你喜欢

转载自1316478764.iteye.com/blog/2098533
今日推荐