关键字
高扩展性:在集群间分配任务数据,可方便扩展结点。
高可用性:多个数据副本维护。
高容错性:能够自动将失败的任务重新分配,
低成本:Hadoop框架可以部署在廉价的机器上。
高效性:在MapReduce的思想下,Hadoop是并行工作的,以加快任务处理速度。
Hadoop是一个分布式系统框架,存储和分析海量数据的工具
Hadoop分为三大核心组件:hdfs数据存储、mapReduce计算、Yarn资源调度、Common辅助工具
HDFS分布式文件系统、yarn分布式资源调度系统、mapReduce分布式计算框架
还包括
数据查询分析:hive,pig,impala,presto;
协调管理:Hcatalog、Zookeeper、Ambari;
数据迁移:sqoop、Flume
Spark、Nosql、机器学习、任务调度
HDFS(分布式文件系统) -—— 实现将文件分布式存储在集群服务器上
MAPREDUCE(分布式运算编程框架) —— 实现在集群服务器上分布式并行运算 以加快任务处理速度,这叫高效性。
YARN(分布式资源调度系统) —— 帮用户调度大量的 MapReduce 程序,并合理分配运算资源(CPU和内存)
可以分布式的服务器集群上面,可以分布式的存储海量数据,并分布式的并行执行应用执行。
HDFS:它是一个文件系统,通过目录树来定位文件;是分布式的。
HDFS的使用场景:适合一次写入,多次读出的场景。目前不支持文件修改。适合用来做数据分析,不适合做网盘的应用。
HDFS的架构
1)NameNode:储存文件的元数据,如文件名,文件目录结构,文件属性,以及每个文件的块列表和块所在的DataNode等。
2)DataNode:在本地文件系统存储文件块数据,以及块数据的校验和。
3)Secondary NameNode:用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照。
YARN 架构概述
Yet Another Resource Negotiator 简称 YARN ,另一种资源协调者,是 Hadoop 的资源管理器。
1)ResourceManager(RM):整个集群资源(内存、CPU等)的老大
3)ApplicationMaster(AM):单个任务运行的老大
2)NodeManager(N M):单个节点服务器资源老大
4)Container:容器,相当一台独立的服务器,里面封装了任务运行所需要的资源,如内存、CPU、磁盘、网络等。
MapReduce架构
MapReduce将计算过程分为两个阶段:Map和Reduce
1)Map阶段并行处理输入数据
2)Reduce阶段对Map结果进行汇总
Mapper:
1.第一阶段是把输入文件进行分片(inputSplit)得到block。有多少个block就对应启动多少maptask
2.第二阶段是对输入片中的记录按照一定的规则解析成键值对。键(key)表示每行首字符偏移值,值(value)表示本行文本内容。
3.第三阶段是调用map方法。解析出来的每个键值对,调用一次map方法。
4.第四阶段是按照一定规则对第三阶段输出的键值对进行分区。
5.第五阶段是对每个分区中的键值对进行排序。首先按照键进行排序,然后按照值。完成后将数据写入内存中,内存中这片区域叫做环形缓冲区。
Reduce:
1.第一阶段(copy)reduce任务从Mapper任务复制输出的键值对。
2.第二阶段(sort)合并排序是把复制到Reduce本地数据,全部合并。再对合并后的数据排序
3.第三阶段是对排序后的键值对调用reduce方法。键相等的键值对调用一次reduce方法,每次调用会产生零个或者多个键值对,最后把这些输出的键值对写入到HDFS文件中。
涉及的技术名词解释如下:
1)Sqoop:Sqoop 是一款开源的工具,主要用于在 Hadoop、Hive 与传统的数据库(MySQL)间进行数据的传递,可以将一个关系型数据库(例如 :MySQL,Oracle 等)中的数据导进到 Hadoop 的 HDFS 中,也可以将 HDFS 的数据导进到关系型数据库中。
2)Flume:Flume 是一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume 支持在日志系统中定制各类数据发送方,用于收集数据;
3)Kafka:Kafka 是一种高吞吐量的分布式发布订阅消息系统;
4)Spark:Spark 是当前最流行的开源大数据内存计算框架。可以基于 Hadoop 上存储的大数据进行计算。
5)Flink:Flink 是当前最流行的开源大数据内存计算框架。用于实时计算的场景较多。
6)Oozie:Oozie 是一个管理 Hadoop 作业(job)的工作流程调度管理系统。
7)Hbase:HBase 是一个分布式的、面向列的开源数据库。HBase 不同于一般的关系数据库,
它是一个适合于非结构化数据存储的数据库。
8)Hive:Hive 是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的 SQL 查询功能,可以将 SQL 语句转换为 MapReduce 任务进行运行。其优点是学习成本低,可以通过类 SQL 语句快速实现简单的 MapReduce 统计,不必开发专门的 MapReduce 应用,十分适合数据仓库的统计分析。
9)ZooKeeper:它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。