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,分担其工作量;定期合并fsimage和fsedits,推送给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 提供的一些接口查看作业运行状态。
- JobTracker:Master节点,只有一个,管理所有作业,作业/任务的监控、错误处理等;将任务分解成一系列任务,并分派给TaskTracker。
- TaskTracker:Slave节点,运行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 安装模式
- 单机模式:测试使用
- 伪分布模式:运行于单机
- 全分布模式:集群模型