hadoop 简介

大数据简介

大数据(Big Data):指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。

特点:

  1. Volume(大量)
  2. Velocity(高速)
  3. Variety(多样): 结构化 与 非结构化数据
  4. Value(低价值密度): 何快速对有价值数据“提纯”成为目前大数据背景下待解决的难题

hadoop 简介

  1. Hadoop 是一个由 Apache 基金会所开发的分布式系统基础架构。
  2. 主要解决,海量数据的存储和海量数据的分析计算问题。
  3. 广义上来说,Hadoop 通常是指一个更广泛的概念—— Hadoop 生态圈。

hadoop 发行版本

三大主流发行版本: ApacheClouderaHortonworks

Apache hadoop 为原始版本

cdhhdp 已经合并

hadoop 的优点

  1. 高可靠性:Hadoop 底层维护多个数据副本,所以即使 Hadoop 某个计算元素或存储出现故障,也不会导致数据的丢失
  2. 高扩展性:在集群间分配任务数据,可方便的扩展数以千计的节点
  3. MapReduce 的思想下,Hadoop 是并行工作的,以加快任务处理速度
  4. 高容错性:能够自动将失败的任务重新分配。

hadoop1.x、2.x、3.x区别

hadoop1x2x3x区别
1.x : MapReduce 负责资源调度和计算
2.x : 使用 yarn 进行资源调度, MapReduce 只负责计算
3.x : 主要组成没有变化

HDFS 简介

Hadoop Distributed File System,简称 HDFS,是一个分布式文件系统。

NameNode (nn) : :存储文件的元数据,如文件名,文件目录结构,文件属性(生成时间、副本数、文件权限),以及每个文件的块列表和块所在的 DataNod
dataNode (dn) : 在本地文件系统存储文件块数据,以及块数据的校验和。
Secondary NameNode(2nn): 每隔一段时间对 NameNode 元数据备份

HA结构
可以不需要 Secondary NameNode

  1. StandbyNameNode : NameNode 的备用节点,出现问题后 主备倒换
  2. JournalNode : 主备 NameNode 之间共享数据的桥梁。NameNode 将元数据变动信息实时写入 JournalNode 中,然后 StandbyNameNode 实时从 JournalNode 中读出元数据信息,接着应用到自身,保持 NameNodeStandbyNameNode 元数据的实时同步

yarn 简介

Yet Another Resource Negotiator 简称 YARN ,另一种资源协调者,是 Hadoop 的资源管理器

  1. ResourceManager(RM)RM 是一个全局的资源管理器,集群里只有一个。它负责整个 Hadoop 系统的资源管理和分配,包括处理客户端请求、启动监控 ApplicationMaster、监控 NodeManager、资源的分配与调度等。它主要由两个组件构成,即调度器(Scheduler)和应用程序管理器 (ApplicationsManager,AsM)。

  2. NodeManagerNodeManager 负责每个节点上资源(CPU 和内存)的使用。接收并处理来自 ApplicationMasterContainer 启动、停止等请求;
    NodeManager 管理着本节点上 Container 的使用(Container 的分配、启动、停止等操作);
    NodeManager 定时向 ResourceManager 汇报本节点上的资源使用情况以及各个Container 的运行状态(CPU 和内存等资源)。
    NodeManager 只负责管理自身的 Container,不会去关注 Container` 中运行的任务。

MapReduce

MapReduce 将计算过程分为两个阶段:MapReduce

  1. Map 阶段并行处理输入数据
  2. Reduce 阶段对 Map 结果进行汇总

三者关系

mapreduceyarnhdfs

大数据生态体系

大数据生态体系

  1. SqoopSqoop 是一款开源的工具,主要用于在 HadoopHive 与传统的数据库(MySQL)间进行数据的传递,可以将一个关系型数据库(例如 :MySQLOracle 等)中的数据导进到 HadoopHDFS 中,也可以将 HDFS 的数据导进到关系型数据库中。
  2. FlumeFlume 是一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume 支持在日志系统中定制各类数据发送方,用于收集数据;
  3. KafkaKafka 是一种高吞吐量的分布式发布订阅消息系统;
  4. SparkSpark 是当前最流行的开源大数据内存计算框架。可以基于 Hadoop 上存储的大数据进行计算。
  5. FlinkFlink 是当前最流行的开源大数据内存计算框架。用于实时计算的场景较多。
  6. OozieOozie 是一个管理 Hadoop 作业(job)的工作流程调度管理系统。
  7. HbaseHBase 是一个分布式的、面向列的开源数据库。HBase 不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。
  8. HiveHive 是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的 SQL 查询功能,可以将 SQL 语句转换为 MapReduce 任务进行运行。其优点是学习成本低,可以通过类 SQL 语句快速实现简单的 MapReduce 统计,不必开发专门的 MapReduce 应用,十分适合数据仓库的统计分析。
  9. ZooKeeper:它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。