Hadoop生态介绍
一、 大数据概述
1.1 大数据主要处理的问题:
大数据主要解决海量数据的存储和海量数据的分析计算问题。
1.2 大数据特点 — 4V
- ( Volume )大量
- ( Velocity )高速
- ( Variety )多样:结构、非结构化数据
- ( Value )低价值密度
二、 Hadoop
2.1 Hadoop是什么
- Hadoop是一个由Apache基金会所开发的分布式系统基础架构
- 主要解决海量数据的存储和海量数据的分析计算问题
- 广义上来说,Hadoop通常是指一个更广泛的概念 ----- Hadoop生态圈
- Hadoop生态圈有: zookeeper 、 HAMA 、 HBASE 、 HIVE、flume等等
2.2 Hadoop 三大发行版本
Hadoop三大发行版本:Apache、Cloudera、Hortonworks。
- Apache版本最原始(最基础)的版本,对于入门学习最好。(免费)
- 官网地址:http://hadoop.apache.org/releases.html
- 下载地址:https://archive.apache.org/dist/hadoop/common/
- Cloudera内部集成了很多大数据框架。对应产品CDH。 (每年每个节点10000美元)
- 官网地址:https://www.cloudera.com/downloads/cdh/5-10-0.html
- 下载地址:http://archive-primary.cloudera.com/cdh5/cdh/5/
- Hadoop的创始人Doug Cutting也加盟Cloudera公司
- Hortonworks文档较好。对应产品HDP。
- 官网地址:https://hortonworks.com/products/data-center/hdp/
- 下载地址:https://hortonworks.com/downloads/#data-platform
- Hortonworks目前已经被Cloudera公司收购
- 特点:有专门研究Hadoop的开发团队
2.3 Hadoop的优势 — 4高
高可靠性
Hadoop底层维护多个数据副本,一台机器维护一个副本,所以即使Hadoop某个计算元素或存储出现故障,也不会导致数据的丢失。
高扩展性
在集群间分配任务数据,可方便的扩展数以千计的节点
高效性
在MapReduce的思想下,Hadoop是并行工作的,以加快任务处理速度
高容错性
能够自动将失败的任务重新分配
2.4 Hadoop组成对比
- hadoop1.x
- MapReduce ( 计算+ 资源调度 )
- HDFS 分布式文件系统 ( 数据存储 )
- common 辅助工具
- hadoop2.x / 3.x (2.x 和 3.x 的组成结构没有区别)
- MapReduce ( 计算 )
- HDFS 分布式文件系统 ( 数据存储 )
- common 辅助工具
- Yarn 资源调度管理 资源指的是内存(主要),磁盘,网络,cpu等
在1.x时代中,Hadoop中的MapReduce同时处理业务逻辑运算和资源的调度,耦合性较大,不符合低耦合的理念;在2.x后就增加了Yarn专门负责资源的调度,让MapReduce只负责运算
三、 Hadoop组成
3.1 HDFS架构
由多台机器共同组成的分布式文件系统(HDFS)。例如:集群中有三台机器,每台机器都是50G的存储容量, 那么HDFS总容量是150G。
(1)**NameNode ** ( nn )
存储文件的元数据,如文件名,文件目录结构,文件属性(生成时间、副本数、文件权限),以及每个文件的块列表和块所在的DataNode等。
元数据: 描述数据的数据,例如对书本的介绍,这本书的名称、作者、销量、出版时间等信息就是元数据。
(2)DataNode ( dn )
在本地文件系统存储文件块数据,以及块数据的校验和
DataNode存放的就是书本的全部具体内容
(3)Secondary NameNode ( 2nn ) — 辅助nn的工作
作用:每隔一段时间对 NameNode 元数据备份
**2nn并不具备nn的功能,只能用于辅助nn的工作,帮nn减轻压力。**就好比,2nn是nn的秘书
注意:2nn并不是第二个nn,并且可以有3nn、4nn意思同2nn一样。
思考:在一个HDFS中, nn 、 dn 、 2nn可以有几个?
**在一个集群中(非高可用集群):nn(1个) dn(多个) 2nn(1个)**
3.2 Yarn架构
(1)ResourceManager ( RM ) — 整个集群的管理者 — 经理
- 处理客户端请求
- client客户端发送job,RM接收job并为job启动AM
- 监控NodeManager
- 启动监控ApplicationMaster
- 资源的分配与调度
(2)NodeManager ( NM ) — 集群中的每台机器的管理者 — 组长
- 管理单个节点上的资源
- 处理来自ResourceManager的命令
- 处理来自ApplicationMaster的命令
(3)ApplicationMaster ( AM ) —处理命令的执行者 —技术员
- 负责数据的切分
- 为应用程序申请自愿并分配给内部的任务
- 任务的监控与容错
一个job对应一个AM
(4)Container — 资源的容器
- 对多维度资源的封装
- 方便资源管理
- 防止资源被占用
Container是YARN中的资源抽象,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f4JT403S-1631607468587)(E:\markdowns\Markdown笔记\Hadoop笔记\imgs\Hadoop生态介绍\yarn架构.jpg)]
过程: 客户向经理提交了一个请求,经理将客户的需求交给了组长,组长挑选一名技术员负责这个需求,这名技术员了解需求后向上级申请资源,得到经理的批准后处理需求。
3.3 MapReduce架构
MapReduce将计算过程分为两个阶段: **Map **和 Reduce
- Map 阶段 (MapTask): 并行处理输入数据(将数据分发到多台机器中)
- Reduce 阶段(ReduceTask):对 Map 结果进行汇总(将多台机器在Map阶段计算出的数据,进行整体汇总)
- shuffle机制: 范围在Map后半段 到 Reduce前半段
四、 大数据技术生态体系
名词解释:
- Sqoop:Sqoop是一款开源的工具,主要用于在Hadoop、Hive与传统的数据库(MySql)间进行数据的传递,可以将一个关系型数据库(例如 :MySQL,Oracle 等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。
- Flume:Flume是一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;
- Kafka:Kafka是一种高吞吐量的分布式发布订阅消息系统;
- Storm:Storm用于“连续计算”,对数据流做连续查询,在计算时就将结果以流的形式输出给用户。
- Spark:Spark是当前最流行的开源大数据内存计算框架。可以基于Hadoop上存储的大数据进行计算。
- Flink:Flink是当前最流行的开源大数据内存计算框架。用于实时计算的场景较多。
- Oozie:Oozie是一个管理Hdoop作业(job)的工作流程调度管理系统。
- Hbase:HBase是一个分布式的、面向列的开源数据库。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。
- Hive:Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的SQL查询功能,可以将SQL语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。
. Hive:Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的SQL查询功能,可以将SQL语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。 - ZooKeeper:它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。