初识Hadoop—邻家有女初长成

1、了解妹子的总体状况

         Hadoop是一个能够对大量数据进行分布式处理的软件框架,实现了GoogleMapReduce编程模型和框架,能够把应用程序分割成许多小的工作单元,并把这些单元放到任何集群节点上执行。在MapReduce中,一个准备提交执行的应用程序称为“作业(job)'',而从一个作业划分出的、运行于各计算节点的工作单元称为“任务(task)'’。此外,Hedoop提供的分布式文件系统(HDFS)主要负责各个节点上的数据存储,并实现了高吞吐率的数据读写。

        在分布式存储和分布式计算方面,Hadoop都使用主/从(Master/Salve)架构。在一个配置完整的集群上想让Hadoop这头大象奔跑起来,需要在集群中运行一系列后台(deamon)程序。不同的后台程序扮演不同的角色,这些角色由NameNodeDataNodeSecondaryNameNodeJobTrackeTaskTracker组成。其中NameNodeSecondaryNameNodeJobTracker运行在Master节点上(如图11所示),而在每个slave节点上,部署一个DataNode和几个TaskTracker,以便这个Slave服务器上运行的数据处理程序能尽可能直接处理本机的数据。对Master节点需要特别说明的是,在小集群中,SecondayNameNode可以属于某个从节点;在大型集群中,NameNodeJobTracke:被分别部署在两台服务器上。


下面介绍各个角色在Hadoop中的作用:

1.1 NameNode

   NameNodeHDFS的守护程序,负责记录文件是如何分割成数据块的,以及这些数据块分别被存储到哪些数据节点上。它的主要功能是对内存及1/0进行集中管理。

   一般来说,NameNode所在的服务器不存储任何用户信息或执行计算任务,以避免这些程序降了服务器的性能。如果其它从服务器因出现软硬件的问题而宕机,Hadoop集群仍旧可以继续运转,或者快速重启。但是,由于NameNodeHadoop集群中的一个单点,一旦NameNode 服务器宕机,整个系统将无法运行。

1.2 DataNode

   集群中的每个从服务器都运行一个DataNode 后台程序,这个后台程序负责把HDFS数据块读写到本地的文件系统。当需要通过客户端读/写某个数据时,先由NameNode告诉客户端去哪个DataNode进行具体的读/写操作,然后,客户端直接与这个DataNode服务器上的后台程序进行通信,并且对相关的数据块进行读/写操作。

1.3 Secondary NameNode

 SecondaryNameNode 是一个用来监控HDFS状态的辅助后台程序。就NameNode一样,每个集群都有一个SecondaryNameNode,并且部署在一台单独的服务器上。SecondaryNameNode不同于NameNode,它不接收或记录任何实时的数据变化,但是,它会与NameNode进行通信,以便定期地保存HDFS元数据的快照。由于NameNode是单点的,通过SecondaryNameNode的快照功能,可以将NameNode的宕机时间和数据损失降低到最小。同时,如果NameNode发生问题,SecondaryNameNode可以及时地作为备用NameNode使用。但是通常以手动的方式进行切换。

1.4 JobTracker

 JobTracker后台程序用来连接应用程序与Hadoop。用户代码提交到集群以后,由JobTracker决定哪个文件将被处理,并且为不同的task分配节点。同时,它还监控所有运行的task,一旦某个task失败了,JobTracker会自动重新开启这个task,在大多数情况下这个task会被放在不同的节点上。当然,具体运行情况取决于重启的预设值。每个Hadoop集群只有一个JobTracker,一般运行在集群的Master节点上。

1.5 TaskTracker 

 TaskTracker与负责存储数据的DataNode相结合,其处理结构上也遵循/从架构。JobTracker位于主节点,统领MapReduce工作;而TaskTrackers位于从节点,独立管理各自的task。每个TaskTracker负责独立执行具体的task,而JobTracker负责分配task。虽然每个从节点上仅有唯一的一个TaskTracker,但是每个TaskTracker可以产生多个Java虚拟机(JvM),用于并行处理多个map以及reduce任务。TaskTracker的一个重要职责就是与JobTracker交互。如果JobTracker无法准时地获取TaskTracker提交的信息,JobTracker就判定TaskTracker已经崩溃,并将任务分配给其他节点处理。

2、妹子的家庭成员面面观

2.1直系亲属

Hadoop Common:就是原来的Hadoop Core,是整个Hadoop项目的核心部分,为Hadoop各子项目提供各               种工具,比如配置文件和日志操作等。其他的Hadoop子项目都是在HadoopCommon的基础上发展的。

HDFS:向应用程序提供高吞吐量访问的分布式文件系统,是GFS的开源实现。

MapReduce:大型数据的分布式并行编程模型和程序执行框架,GoogleMapReduce的开源实现。

2.2旁系血亲

HBase:是ApacheHadoop项目的一个重要部分,是一个开源的、基于列存储模型的分布式数据库

Hive:hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。

Pig:是在MapReduce上构建的一种高级的数据流语言,是Sawzall的开源实现。sawzan是一种建立在MaPReduce基础上的领域语言,它的程序控制结构(如if、while等)与C语言无异,但它的领域语言语义使它完成相同功能的代码比MaPReduc。的C++代码简洁得多。

ZooKceper:用于解决分布式系统中一致性问题,是Chubby的开源实

chukwa:一个基于Hadoop用来管理大型分布式系统的数据采集系统

Hama:为科学计算提供的一个基于整体同步并行计算技术的分布式计算框架。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值