Hadoop入门

Hadoop是什么?

  1. Hadoop是一个由Apache机机会所开发的分布式系统基础架构,主要解决海量数据的存储海量数据分析计算问题。
  2. 广义上来说,Hadoop通常是指一个更广泛的概念——Hadoop生态圈
  3. Hadoop的优势(4高)可靠、可扩、高效、容错
    • 高可靠性:Hadoop底层维护了数据副本,所以即使Hadoop某个计算元素或存储出现故障也不会导致数据的丢失
    • 高扩展性:在集群见分配任务和数据,可以方便的扩展数以千计的节点
    • 高效性:在MapReduce的思想下,Hadoop是并行工作的,以加快任务处理速度
    • 高容错性:能够自动将失败的任务重新分配

Hadoop组成

在这里插入图片描述
Hadoop1.x时代,Hadoop中的MapReduce同时处理业务逻辑运算和资源调度,耦合性较大;
Hadoop2.x时代,增加了Yarn,Yarn只负责资源调度,MapReduce只负责运算;
Hadoop3.x时代,在组成上与Hadoop2.x没有变化。

HDFS架构概念

HDFS(Hadoop Distrbuted File System)是一个分布式文件系统
HDFS角色:
NameNode:存储文件的元数据,如文件名、文件目录结构、文件属性(生成时间、副本数、权限),以及每个文件的块列表和块所在的DataNode等。

  1. 管理HDFS的名称空间;
  2. 配置副本策略;
  3. 管理数据块(Block)信息;
  4. 处理客户端读写请求;

DataNode:在本地文件系统存储数据块和数据块的校验和。

  1. 存储实际的数据块;
  2. 执行数据块儿的读/写操作;

SecondaryNameNode:每隔一段时间对NameNode元数据备份,并非NameNode的热备,当NameNode挂掉的时候,并不能替换NameNode提供服务。

  1. 辅助NameNode分担其工作量,定期合并Fsimage和Edits,并将合并好的Fsimage推送给NameNode;
  2. 在紧急情况下,可辅助恢复NameNode,但是并不能恢复至最新状态;

YARN架构概念

YARN是一种资源协调者,是Hadoop的资源管理器。
YARN角色:

  1. ResourceManeger:整个集群资源(CPU、内存等)的老大;
  2. ApplicationMaster:单个任务的老大;
  3. NodeManager:单个服务器节点资源老大;
  4. Container:容器,相当于一台独立的服务器,里面封装了任务运行所需要的资源,如内存、CPU、磁盘、网络等

说明:

  1. 客户端可以有多个
  2. 集群上可以运行多个ApplicationMaster
  3. 每个NodeManager上可以有多个Container

MapReduce架构概念

MapReduce是一个分布式计算框架,主要由编程模型运行时环境两部分组成。
MapReduce编程模型由两个阶段组成:Map和Reduce,用户可只需编map()和reduce()两个函数即可完成简单的分布式程序的设计。

  1. Map阶段并行处理输入数据
  2. Reduce阶段对Map阶段的结果进行汇总
    在这里插入图片描述

HDFS、YARN、MapReduce三者之间的关系

在这里插入图片描述

  1. 客户端Client提交任务到资源管理器(ResourceManager)
  2. 资源管理器接收到任务后去NodeManeger节点开启任务(ApplicationMaster)
  3. ApplicationMaster向ResourceManager申请资源
  4. 若有资源ApplicationMaster负责开启任务MapTask
  5. 每个mapTask独立工作,各自负责检索各自对应的DataNode,将结果记录到HDFS
  6. DataNode负责存储,NameNode负责记录,SecondaryNameNode负责备份。

大数据技术生态

在这里插入图片描述
技术名词解释:

  1. Sqoop:Sqoop是一款开源的工具,主要用与在Hadoop、Hive与传统数据库间进行数据传递,可以将一个关系型数据库(例如:MySQL、Oracle等)中的数据导入到Hadoop的HDFS中,也可以将HDFS的数据导入到关系型数据库中。
  2. Flume:Flume是Cloudera提供的一个高可用、高可靠、分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接收方(可定制)的能力。专业的日志处理系统。
  3. Kafka:Kafka是一种高吞吐的分布式发布订阅消息系统。
    有以下特征:
    • 同时为发布和订阅提供高吞吐量:通过I/O的磁盘数据结构提供消息的持久化,这种结构对于数以TB的消息存储也能够保持长时间的稳定性能,即使是非常普通的硬件,Kafka可以支持每秒数百万的消息
    • 消息持久化:将消息持久化到磁盘,可用于批量消费;
    • 分布式支持服务间的消息分区及分布式消费,同时保证每个partition内的消息顺序传输;
    • 消费者采用pull(拉)的模式:消息被处理的状态是在consumer端维护,而不是在服务端维护;
    • 支持online(在线)和offline(离线)的场景:同时支持离线数据处理和实时数据处理;
  4. Spark:Spark是当前最流行的开源大数据内存计算框架,可以基于Hadoop上存储的大数据进行计算。
  5. Flink:Flink是当前很流行的实时计算框架,全面对标Spark。Flink支持实时计算和离线计算。
  6. Oozie:Oozie是一个管理Hadoop作业和工作流程的调度管理系统,Oozie是轻量级的,功能是最丰富的(Oozie、Azlaban、crontab)。
  7. Azkaban:Azkaban任务调度系统,使用起来比较方简单。
  8. HBase:HBase是一个分布式的、面向列的开源数据库,HBase不同于一般的关系型数据库,它是一个适合于非结构化数据存储的数据库。
  9. Hive:Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射成一张数据库表,并提供简单的SQL查询功能,可以将SQL语句转换为MapReduce任务进行运行。优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,十分适合数据仓库的统计分析。
  10. ZooKeeper:ZooKeeper是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。

推荐系统项目架构

在这里插入图片描述

如若总结有误欢迎指正😊

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值