hadoop 简介

hadoop 简介

一、Hadoop 概述

Hadoop 是Doug Cutting(Apache Lucense发起人)基于Java开发的开源软件框架,实现在大型集群中对海量数据进行分布式计算;

The Apache Hadoop project develops open-source software for reliable, scalable, distributed computing.

Hadoop 起源于开源网络搜索引擎 Apache Nutch,根据 Google 发表的 MapReduce 和 Google文件系统的论文自行实现而成;

  • 2003:(GFS)The Google File System
  • 2004:(MapReduce)Simplified Data Processing On Large Cluster
  • 2006:(BigTable)A Distributed Storage System for Structure Data

Hadoop 版本

 

二、Hadoop 核心架构

1、HDFS(Hadoop分布式文件系统)

The Hadoop Distributed File System (HDFS) is a distributed file system designed to run on commodity hardware. 

  • Client:切分文件;访问HDFS;与NameNode交互,获取文件位置信息;与DataNode交互,读取和写入数据。
  • NameNode(NN)Master节点,在hadoop1.X中只有一个,管理HDFS的名称空间和数据块映射信息,配置副本策略,处理客户端请求。
  • DataNode(DN)Slave节点,存储实际的数据,汇报存储信息给NameNode。
  • Secondary NameNode(SNN):辅助NameNode,分担其工作量;定期合并fsimage和fsedits,推送给NameNode;紧急情况下,可辅助恢复NameNode,但Secondary NameNode并非NameNode的热备。

2、MapReduce(分布式计算框架)

MapReduce 是一种编程模型,用于大规模数据集的并行运算,MapReduce 的概念和它们的主要思想,都是从函数式编程语言借用而来;

  • JobClient:用户编写的 MapReduce 程序通过 Client 提交到 JobTracker 端; 同时,用户可通过 Client 提供的一些接口查看作业运行状态。
  • JobTrackerMaster节点,只有一个,管理所有作业,作业/任务的监控、错误处理等;将任务分解成一系列任务,并分派给TaskTracker。
  • TaskTrackerSlave节点,运行Map Task和Reduce Task;并与JobTracker交互,汇报任务状态。
  • Task
    • Map Task解析每条数据记录,传递给用户编写的map(),并执行,将输出结果写入本地磁盘(如果为map-only作业,直接写入HDFS)。
    • Reduce Task:从Map Task的执行结果中,远程读取输入数据,对数据进行排序,将数据按照分组传递给用户编写的reduce函数执行

3、YARN(Yet Another Resource Negotiator)

The fundamental idea of YARN is to split up the functionalities of resource management and job scheduling/monitoring into separate daemons. 

MRv1是Hadoop1中的MapReduce,MRv2是Hadoop2中的MapReduce,即YARN。

 

  • ResourceManager一个Cluster只有一个,负责资源调度、资源分配等工作
  • NodeManager运行在DataNode节点,负责启动Application和对资源的管理
  • Containers:Container通过ResourceManager分配,包括容器的CPU、内存等资源;
  • ApplicaionMaster:每个Application只有一个ApplicationMaster,运行在NodeManager节点,ApplicationMaster是由ResourceManager指派的;
  • client:一个提交给ResourceManager的Application程序;

三、Hadoop 生态圈

 

  • HDFS:Hadoop 分布式文件系统
  • MapReduce:分布式计算框架
  • Hbase分布式列存数据库;HBase是一个针对结构化数据的可伸缩、高可靠、高性能、分布式和面向列的动态模式数据库。 和传统关系数据库不同,HBase采用了BigTable的数据模型:增强的稀疏排序映射表(Key/Value),其中,键由行关键字、列关键字和时间戳构成。HBase提供了对大规模数据的随机、实时读写访问,同时,HBase中保存的数据可以使用MapReduce来处理,它将数据存储和并行计算完美地结合在一起。数据模型:Schema-->Table-->Column Family-->Column-->RowKey-->TimeStamp-->Value
  • Hive:基于Hadoop的数据仓库,Hive定义了一种类似SQL的查询语言(HQL),将SQL转化为MapReduce任务在Hadoop上执行,通常用于离线分析
  • Pig:基于Hadoop的数据流系统,将脚本转换为MapReduce任务在Hadoop上执行,通常用于进行离线分析。
  • Mahout:数据挖掘算法库。
  • Zookeeper:分布式协作服务,解决分布式环境下的数据管理问题:统一命名,状态同步,集群管理,配置同步等。
  • Sqoop:数据同步工具,主要用于传统数据库和Hadoop之前传输数据。数据的导入和导出本质上是Mapreduce程序,充分利用了MR的并行化和容错性。
  • Flume:日志收集工具。

猜你喜欢

转载自www.cnblogs.com/gaofubao/p/8904109.html