学习笔记Hadoop(一)—— Hadoop介绍

文章目录

  • 一、认识大数据
    • 1.1、认识大数据
    • 1.2、大数据特征
    • 1.3、大数据流程图
    • 1.4、什么是大数据平台?
  • 二、Hadoop 核心组件
    • 2.1、Apache Hadoop简介
    • 2.2、主要模块
    • 2.3、Hadoop 分布式文件系统-HDFS
    • 2.4、Hadoop任务调度和资源管理框架-YARN
    • 2.5、Hadoop分布式编程模型-MapReduce
  • 三、Hadoop生态环境
    • 3.1、Apache HBase
    • 3.2、Apache Hive
    • 3.3、Apache Sqoop
    • 3.4、Apache Oozie
    • 3.5、其他

一、认识大数据

1.1、认识大数据

大数据(Big data)或称巨量数据海量数据大资料,指的是所涉及的数据量规模巨大到无法通过人工或者计算机,在合理的时间内达到截取、管理、处理、并整理成为人类所能解读的形式的信息。

1.2、大数据特征

  • Volumn:容量,数据的大小
  • Variety:种类,数据类型的种类
  • Velocity:速度,获取数据的速度
学习笔记Hadoop(一)—— Hadoop介绍_第1张图片

1.3、大数据流程图

学习笔记Hadoop(一)—— Hadoop介绍_第2张图片

1.4、什么是大数据平台?

大数据平台是指以处理海量数据存储、计算及不间断流数据实时计算等场景为主的一套基础设施。典型的包括Hadoop系列、Spark、Storm、Flink以及Flume/Kafka等集群。

既可以采用开源平台,也可以采用华为、星环等商业级解决方案,既可以部署在私有云上,也可以部署在公有云上。

大数据平台的功能:
1、容纳海量数据
2、速度快
3、兼容传统工具
4、利用Hadoop
5、为数据科学家提供支持
6、提供数据分析功能


二、Hadoop 核心组件

2.1、Apache Hadoop简介

Apache Hadoop是一套用于在由通用硬件构建的大型集群上运行应用程序的框架。它实现了Map/Reduce编程范型,计算任务会被分割成小块(多次)运行在不同的节点上。除此之外,它还提供了一款分布式文件系统(HDFS),数据被存储在计算节点上以提供极高的跨数据中心聚合带宽。

优点:
高可靠性、高扩展性、高效性、高容错性、低成本

2.2、主要模块

  • Hadoop Common:基础工具库用以支持其他模块
  • HDFS:高可用的分布式文件存储系统
  • Hadoop YARN:任务调度和集群资源管理框架
  • MapReduce:分布式编程模型
  • Hadoop Ozone:Hadoop类存储模型

2.3、Hadoop 分布式文件系统-HDFS

学习笔记Hadoop(一)—— Hadoop介绍_第3张图片

客户端(client)代表用户与namenode和datanode交互来访问整个文件系统

Namenode: 元数据操作,打开、关闭、重命名文件及文件夹、文件块到DataNode映射
DataNode: 文件块生成、删除、复制及执行NameNode的指令

学习笔记Hadoop(一)—— Hadoop介绍_第4张图片

HDFS通过多个文件块来实现大文件存储,所有的文件块都是同样大小(除了最后一个文件块);
NameNode决定文件块的复制,NameNode定时会收到DataNode的心跳包及块报告。

2.4、Hadoop任务调度和资源管理框架-YARN

YARN 是 Hadoop 中的资源管理系统,它是一个通用的资源管理模块,可为各类应用程序进行资源管理和调度。

学习笔记Hadoop(一)—— Hadoop介绍_第5张图片

ResourceManager :处理客户端请求、启动/监控ApplicationMaster、监控NodeManager、资源分配与调度
NodeManager:单个节点上的资源管理、处理来自ResourceManager的命令、处理来自ApplicationMaster的命令
ApplicationMaster:数据切分、为应用程序申请资源,并分配给内部任务、任务监控与容错

学习笔记Hadoop(一)—— Hadoop介绍_第6张图片
  • ResourceManager由Scheduler和ApplicationMaster组成;
  • Scheduler: 对各个任务及队列分配资源,没有监控及对任务状态的追踪,同时也不保证对失败的任务进行重试
  • ApplicationManager: 接受提交的任务,协调第一个用于启动ApplicationMaster的container,同时针对ApplicationMaster的失败提供重试
  • ApplicationMaster:从Scheduler请求合适的资源containers,追踪状态及监控进度

2.5、Hadoop分布式编程模型-MapReduce

MapReduce是Google提出的一个软件架构,用于大规模数据集(大于1TB)的并行运算。概念“Map(映射)”和“Reduce(归纳)”,及他们的主要思想,都是从函数式编程语言借来的,还有从矢量编程语言借来的特性。

当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归纳)函数,用来保证所有映射的键值对中的每一个共享相同的键组。


三、Hadoop生态环境

3.1、Apache HBase

  • HBase是一个分布式的、面向列的开源数据库,该技术来源于Chang et al所撰写的Google论文"Bigtable:一个结构化数据的分布式存储系统"
  • 高可靠性、高性能、面向列、可伸缩
  • HDFS为HBase提供高可靠底层存储支持
  • MapReduce为HBase提供高性能计算能力
  • Zookeeper为HBase提供稳定服务和failover机制

存储大量的数据(>TB)
需要很高的写吞吐量
大规模数据集很好性能的随机访问(按列)
需要进行优雅的数据扩展
结构化和半结构化的数据
不需要全部的关系数据库特性,例如交叉列、交叉表,事务,连接等等

3.2、Apache Hive

  • Hive是基于Hadoop的一个数据仓库工具
  • 可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行
  • 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析
  • Hive定义了简单的类 SQL 查询语言,称为 HQL,它允许熟悉 SQL 的用户查询数据
  • Hive 并不能够在大规模数据集上实现低延迟快速的查询,Hive 并不适合那些需要低延迟的应用,Hive 并不提供实时的查询和基于行级的数据更新操作
  • Hive 不支持对数据的改写和添加,所有的数据都是在加载的时候确定的
  • Hive 的最佳使用场合是大数据集的批处理作业,例如,网络日志分析
学习笔记Hadoop(一)—— Hadoop介绍_第7张图片

3.3、Apache Sqoop

  • Sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的
    数据库(mysql、postgresql…)间进行数据的传递
    ,可以将一个关系型
    数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到
    Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中
  • 可以通过hadoop的mapreduce把数据从关系型数据库中导入数据到HDFS
  • 类似于其他ETL工具,使用元数据模型来判断数据类型并在数据从数据源转移到Hadoop时确保类型安全的数据处理
  • Sqoop专为大数据批量传输设计,能够分割数据集并创建Hadoop任务来处理每个区块
学习笔记Hadoop(一)—— Hadoop介绍_第8张图片

3.4、Apache Oozie

  • Oozie是一个管理Hdoop作业(job)的工作流程调度管理系统
  • 它是一个开源工作流引擎,用于管理和协调运行在Hadoop平台上(包括:HDFS、Pig和MapReduce)的Jobs。
  • 它围绕着两个核心进行:工作流(Workflow)和协调器(Coordinator),前者定义任务拓扑和执行逻辑,后者负责工作流的依赖和触发。
  • Workflow,即工作流,是一个有向无环图 (DAG,Directed Acyclic Graph),描述了需要执行的 Actions 序列。
学习笔记Hadoop(一)—— Hadoop介绍_第9张图片

3.5、其他

  • Flume:一种分布式的、可靠的、可用的服务,其用于高效地搜集、汇总、移动大量日志数据。

  • ZooKeeper:一种集中服务,其用于维护配置信息,命名,提供分布式同步,以及提供分组服务。

  • Mahout:一种基于Hadoop的机器学习和数据挖掘的分布式计算框架算法集,实现了多种MapReduce模式的数据挖掘算法。

  • Spark:一个开源的数据分析集群计算框架,最初由加州大学伯克利分校AMPLab开发,建立于HDFS之上。Spark与Hadoop一样,用于构建大规模、低延时的数据分析应用。Spark采用Scala语言实现,使用Scala作为应用框架。

  • Storm: 一个分布式的、容错的实时计算系统,由BackType开发,后被Twitter捕获。Storm属于流处理平台,多用于实时计算并更新数据库。Storm也可被用于“连续计算”(continuous computation),对数据流做连续查询,在计算时就将结果以流的形式输出给用户。它还可被用于“分布式RPC”,以并行的方式运行昂贵的运算。


你可能感兴趣的:(大数据,hadoop,big,data)