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

1.hadoop核心组件—HDFS

■  HDFS的文件被分成块进行存储,块的默认大小128M,块是文件存储处理的逻辑单元

■  HDFS中有两类节点NameNode和DataNode:

  NameNode是管理节点,存放文件元数据:(1)文件与数据块的映射表(2)数据块与数据节点的映射表。
  DataNode是工作节点,存放数据块
  SecondaryNameNode的职责是合并NameNode的edit logs到fsimage文件中
  NameNode与DataNode有心跳检测,DataNode定期向NameNode发送心跳消息;SecondaryNameNode定期同步元数据映像文件和修改日志。

客户端从hdfs读取文件时的元数据访问流程,如下图:

客户端向hdfs中上传文件时的元数据访问流程,如下图:

SecondaryNameNode同步元数据映像文件和修改日志,如下图:

  上面的这张图片展示了NameNode怎么把元数据保存到磁盘上的。这里有两个不同的文件:

  1.fsimage - 它是在NameNode启动时对整个文件系统的快照
  2.edit logs - 它是在NameNode启动后,对文件系统的改动序列

■  HDFS中数据管理与容错:对于最常见的 3 个复制块,分布在两个机架内的三个节点。第一个复制块存储在同一机架的不同节点上,最后一个复制块存储在不同机架的某个节点上。       

■  HDFS的特点:

  数据冗余,硬件容错
  流式的数据访问(一次写入,多次读取,修改是删除之前块,写新块)
  存储大文件

■  HDFS的适用性和局限性:

  适合数据批量读写,吞吐量高
  不适合交互式应用,低延迟很难满足
  适合一次写入多次读取,顺序读写
  不支持多用户并发写相同文件

■  HDFS实现思想和概念

■  HDFS简单使用:

hadoop fs -mkdir filetest #建立filetest文件夹
hadoop fs -ls #显示HDFS文件列表
hadoop fs -put hello.java filetest/ #将hello.java文件put到filetest目录下
hadoop fs -ls /user/hadoop/filetest #显示filetest目录下的文件
hadoop fs -cat filetest/hello.java #输出filetest目录下hello.java文件内容
hadoop fs -get filetest/hello.java hello2.java #将filetest目录下的hello.java获取到本地,命名为hello2.java
hadoop fs -rmr filetest # 删除filetest文件夹 hadoop dfsadmin -report #打印文件系统的信息

2.hadoop核心组件——MapReduce

■  MapReduce思想:分而治之,一个大任务分成多个小的子任务(map),并行执行后,合并结果(reduce)。Job,一个作业,被拆分成多个Task(MapTask、ReduceTask)

MapReduce只是分布式运算框架的一种实现,类似的框架还有很多,比如Storm(流式计算)、Spark(内存迭代计算)。MapReduce是离线批量计算,Storm、Spark是实时计算。

■  在hadoop1.x中, MapReduce引擎由JobTrackers和TaskTrackers组成

JobTracker承担的任务有:接受任务、计算资源、分配资源、与DataNode进行交流 。
     TaskTracker承担的任务有:从JobTracker接收并执行各种命令:运行任务、提交任务、杀死任务等;另一方面,将本地节点上各个任务的状态通过心跳周期性汇报给   JobTracker,这些信息包括两部分:机器级别信息(节点健康情况、资源使用情况等)、任务级别信息(任务执行进度、任务运行状态等)。
     TaskTracker与JobTracker和Task之间采用了RPC协议进行通信

■  在hadoop2.x中, MapReduce引擎由ResourceManager和NodeManaer组成. 这就是Yarn资源调度框架。 Yarn的基本思想是拆分资源管理的功能,作业调度/监控到单独的守护进程。

ResourceManager是全局的,负责对于系统中的所有资源有最高的支配权。ResourceManager有两个组件:调度器和应用程序管理器。
    ApplicationMaster 每一个job有一个ApplicationMaster 。AppMaster负责向ResourceManager索要NodeManager执行任务所需要的资源容器,更具体来讲是ApplicationMaster负责从Scheduler申请资源,以及跟踪这些资源的使用情况以及任务进度的监控
    NodeManager是基本的计算框架。NodeManager 是客户端框架负责 containers, 监控他们的资源使用 (cpu, 内存, 磁盘, 网络) 和上报给 ResourceManager/Scheduler.

为何要使用yarn?我们看到JobTracker的功能被分散到各个进程中包括ResourceManager和NodeManager:比如监控功能,分给了NodeManager,和Application Master。ResourceManager里面又分为了两个组件:调度器及应用程序管理器。Yarn重构后,JobTracker的功能,被分散到了各个进程中。同时由于这些进程可以被单独部署所以这样就大大减轻了单点故障,及压力。如下图,展示了yarn的工作流程及与hadoop1.x的区别:

3.hadoop生态圈

■  Hive:数据仓库与hql操作mr

■  pig:数据流语言,是hadoop轻量级封装,相对于它,hive是重量级

■  HBase: 基于列存储的nosql数据库,可以用于海量数据存储和实时查询

■  Sqoop:在数据库和HDFS之间高效传输数据的工具

■  Storm: 分布式实时计算,强调实时性,常用于实时性要求较高的地方

■  Spark:基于map reduce算法实现的分布式计算框架

拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Job中间输出和结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的map reduce的算法

Hadoop的核心组件和生态圈的更多相关文章

  1. 一篇了解大数据架构及Hadoop生态圈

    一篇了解大数据架构及Hadoop生态圈 阅读建议,有一定基础的阅读顺序为1,2,3,4节,没有基础的阅读顺序为2,3,4,1节. 第一节 集群规划 大数据集群规划(以CDH集群为例),参考链接: ht ...

  2. 大数据之路week06--day07(Hadoop生态圈的介绍)

    Hadoop 基本概念 一.Hadoop出现的前提环境 随着数据量的增大带来了以下的问题 (1)如何存储大量的数据? (2)怎么处理这些数据? (3)怎样的高效的分析这些数据? (4)在数据增长的情况 ...

  3. Hadoop的介绍、搭建、环境

    HADOOP背景介绍 1.1Hadoop产生背景 HADOOP最早起源于Nutch.Nutch的设计目标是构建一个大型的全网搜索引擎,包括网页抓取.索引.查询等功能,但随着抓取网页数量的增加,遇到了严 ...

  4. hadoop 核心概念及入门

    Hadoop Hadoop背景 什么是HADOOP HADOOP是apache旗下的一套开源软件平台HADOOP提供利用服务器集群,根据用户的自定义业务逻辑,对海量数据进行分布式处理,HADOOP的核 ...

  5. Hadoop(一) HADOOP简介

    1. HADOOP背景介绍 1.1 什么是HADOOP HADOOP是apache旗下的一套开源软件平台 HADOOP提供的功能:利用服务器集群,根据用户的自定义业务逻辑,对海量数据进行分布式处理 H ...

  6. Hadoop学习之路(二)Hadoop发展背景

    Hadoop产生的背景 1. HADOOP最早起源于Nutch.Nutch的设计目标是构建一个大型的全网搜索引擎,包括网页抓取.索引.查询等功能,但随着抓取网页数量的增加,遇到了严重的可扩展性问题—— ...

  7. 大数据入门第五天——离线计算之hadoop(上)概述与集群安装

    一.概述 根据之前的凡技术必登其官网的原则,我们当然先得找到它的官网:http://hadoop.apache.org/ 1.什么是hadoop 先看官网介绍: The Apache™ Hadoop® ...

  8. 1.0 Hadoop的介绍、搭建、环境

    HADOOP背景介绍 1.1 Hadoop产生背景 HADOOP最早起源于Nutch.Nutch的设计目标是构建一个大型的全网搜索引擎,包括网页抓取.索引.查询等功能,但随着抓取网页数量的增加,遇到了 ...

  9. HADOOP背景介绍

    1. HADOOP背景介绍 1.1 什么是HADOOP 1. HADOOP是apache旗下的一套开源软件平台 2. HADOOP提供的功能:利用服务器集群,根据用户的自定义业务逻辑,对海量数据进行分 ...

随机推荐

  1. MyBatis - MyBatis使用log4j2显示sql和结果集

    mybatis-config.xml <settings> <setting name="logImpl" value="LOG4J2" /& ...

  2. B窗体继承于A窗体,B启动:问题点

    uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls; t ...

  3. java抽象类实践

    package javaClassStudy; /** * * @author yuxg * 抽象类实践 */ public abstract class Person { private Strin ...

  4. onDestroy  和 onBackPressed、onfinish 的区别

    在android 开发中, 我容易不区分 onDestroy .onBackpress.onFinish. 其实,可以这样理解: (1)onDestory 的使用,是销毁了activity的实例在内存 ...

  5. VBA找不到progress bar的处理办法。

    Search your pc for MSCOMCTL.Ocx. If you find it then register it by clicking on Windows Start Button ...

  6. 自己写的AutoMapper

    using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using Sy ...

  7. Linux CentOS6.5下安装Oracle ASM

    Oracle版本:Oracle 11g 1.确定自己的Linux版本: [root@localhost ~]#uname -r 2.6.32-431.el6.x86_64 2.6.32-431.el6 ...

  8. 【PostgreSQL】PostGreSQL数据库,时间数据类型

    ---"17:10:13.236"time without time zone:时:分:秒.毫秒 ---"17:10:13.236+08"time with t ...

  9. <五>JDBC_利用反射及JDBC元数据编写通用的查询方法

    此类针对javaBean类写了一个通用的查询方法,List<javaBean> 通用查询更新中...:通过学习,深刻体会到学会反射就等于掌握了java基础的半壁江山! 一.使用JDBC驱动 ...

  10. PHP伪静态

    伪静态 从形式上看是一个静态地址,实际上还是访问的动态地址, 比如:访问:http://www.abc.com/news-sport-id123.html 实际上是:http://www.abc.co ...