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(分布式文件系统)

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,分担其工作量;定期合并fsimagefsedits,推送给NameNode;紧急情况下,可辅助恢复NameNode,但Secondary NameNode并非NameNode的热备。

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

1)MapReduce 概述

指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对;

指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组;

2)MapReduce 运行流程

InputSplit --> Map --> Partition --> Copy&Merge --> Sort --> Reduce --> Output

示例:

3)MRv1 运行环境

  • 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. 

MRv2 运行环境:

 

  • ResourceManager(RM)一个Cluster只有一个,负责资源调度、资源分配等工作
  • NodeManager(NM)运行在DataNode节点,负责启动Application和对资源的管理
  • Containers:Container通过ResourceManager分配,包括容器的CPU、内存等资源;
  • ApplicaionMaster(AM):每个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:日志收集工具。

 

四、Hadoop 安装模式

  • 单机模式:测试使用
  • 伪分布模式:运行于单机
  • 全分布模式:集群模型

 

posted @ 2018-04-22 00:13  fubao_gao  阅读(352)  评论(0编辑  收藏  举报