最码农 最码农
  • 首页
  • 动态广场
  • 精选栏目
  • 闲言碎语
  • 左邻右里
  • 笔记屋
  • 注册
  • 登录
首页 › 大数据 › Hadoop概论(三)—— Hadoop 生态圈

Hadoop概论(三)—— Hadoop 生态圈

Cosy
2年前大数据阅读 1,656

文章链接

Hadoop概论(一)—— 开篇词

Hadoop概论(二)—— 你好,大象 !

Hadoop概论(三)—— Hadoop 生态圈

本节的主要介绍 Apache Hadoop 生态系统组件,我们将学习包括 HDFS 及 HDFS 的组件、MapReduce、YARN、Hive、Apache Pig、Apache HBase 。以及 HBase 组件、HCatalog、Avro,Thrift、Drill、Apache mahout、Sqoop、Apache Flume、Ambari,Zookeeper 以及 Apache OOzie等。

Hadoop概论(三)—— Hadoop 生态圈-最码农

HDFS

HDFS(Hadoop distributed file system ,分布式文件系统)是 Hadoop 生态圈中最重要的组件。它是 Hadoop 最基本的存储系统。Hadoop 分布式文件系统基于Java的文件系统,它为大数据提供了可缩放,容错,可靠,高性价比的数据存储。HDFS 是运行在普通硬件上的分布式文件系统。HDFS已经为很多安装模式做好了默认的配置,从而对大型集群节约了配置时间。Hadoop 可以使用类似与Shell 命令这样的方式和 HDFS 直接交互。

Hadoop HDFS有两个重要的组件,它们是 NameNode 和 DataNode:

NameNode

它也称为 Master 节点。NameNode 并不存储实际数据或者数据集。NameNode 存储元数据,比如数据块的数量,位置,在哪个机架,数据存储在哪个 Datanode 等等。它由文件和目录构成。

HDFS NameNode 的任务:

  • 管理文件系统命名空间
  • 控制客户端到文件的访问
  • 执行文件系统任务,包括命名,关闭,打开文件和目录

DataNode

DataNode 也称为 Slave 节点。HDFS DataNode 负责为 HDFS 存储实际数据。对于每个客户端请求,DataNode 执行读写操作。DataNode 复制的数据块在文件系统中包含两个文件。第一个文件是数据,而第二个文件记录块的元数据。HDFS 元数据包含了数据的校验和(checksum)。在启动时,每个 DataNode 都会连接到它对应的 NameNode 并进行握手。在握手期间将校验命名空间 ID 和DataNode 软件版本。如果发现不匹配 DataNode 将自动失败。

HDFS DataNode 的任务:

  • DataNode 执行类似数据块的创建,删除以及根据 NameNode 指导进行复制
  • DataNode 管理数据存储

这些就是Hadoop生态系统中所有关于 HDFS 的组件

MapReduce

Hadoop MapReduce 是 Hadoop 生态系统的核心组件,提供了数据处理的能力。MapReduce 是软件框架,它便于你编写应用程序来处理存储在 Hadoop 分布式文件系统中大量结构化及非结构化的数据。
MapReduce 程序天生就是并行的,因此,非常适合在集群的多台机器上上执行大规模的数据分析。它提升了集群平行处理的速度和可靠性。

Hadoop概论(三)—— Hadoop 生态圈-最码农

MapReduce 工作过程

MapReduce 的工作分成两个阶段:

  • Map 阶段
  • Reduce 阶段

每个阶段都将键值对作为输入和输出。另外,程序员也可以干预两个函数:Map 函数和 Reduce 函数。

Map 函数接收数据集,并且将其转换为另外一个数据集,在 Map 函数中会将这些元素拆分成元组(键值对)。

Reduce 函数从 Map 的输出中接收数据作为输入,然后基于这些 key 和修改过的值组合这些元组。

MapReduce 特点

  • 简单-MapReduce任务非常容易运行。应用程序可以使用任何语言进行编写,比如Java,C++以及python
  • 可缩放-MapReduce可以处理PB级的数据集
  • 高速-对于需要几天处理完成的问题,MapReduce只需要几小时甚至及分钟
  • 容错-MapReduce考虑到错误处理。如果一份数据拷贝是无效的,另外一个拥有同样键值对拷贝的机器会用于解决同样的子任务

YARN

YARN(Yet Another Resource Negotiator)是 Hadoop 中提供资源管理的生态圈组件。Yarn 也是 Hadoop 生态圈中最重要的组件之一。YARN 可以称得上是Hadoop 的操作系统,它负责管理和监控工作负载。它允许多个数据处理引擎(比如实时流式处理引擎,批量处理引擎)处理存储在一个平台上的数据。

Hadoop概论(三)—— Hadoop 生态圈-最码农

YARN 是 Hadoop2.x 的数据操作系统。YARN 的主要特性如下:

  • 灵活:支持除 MapReduce(批处理)之外的其他专用数据处理模型,例如交互式和流式传输。由于 YARN 的这一特性,其他应用程序也可以与 Hadoop2.x 中的 MapReduce 程序一起运行。
  • 高效:由于很多应用程序都可以运行在相同的集群上,因此,Hadoop 效率增长的同时不会对服务质量造成影响。
  • 共享:跨多个工作负载提供稳定,可靠,基础安全和共享操作服务。通过附加额外的编程模型,使图处理,迭代模型现在也可以用于数据处理。

Hive

Hadoop 生态圈组件,Apache Hive 是一个开源数据仓库系统,用于查询和分析存储在 Hadoop 上的大数据集。Hive 有3个主要的功能:数据汇总,查询和分析。

Hive 使用的语言叫 HiveQL(HQL),它和 SQL 类似。HiveQL 将类 SQL 查询翻译成 MapReduce Job,从而在 Hadoop 上执行。

Hive 主要部分:

  • Metastore:元数据存储
  • 驱动(Driver):管理 HiveQL 语句生命周期
  • 查询编译器:将 HiveQL 编译成有向无环图(Directed Acyclic Graph,DAG)
  • Hive服务器:提供 thrift 接口和 JDBC / ODBC 服务器

Pig

Apache Pig 是一个高级语言平台,用于分析和查询存储在 HDFS 中的大型数据集。作为一个Hadoop 生态圈组件 Pig,它使用 PigLatin 语言。它和 SQL 非常类似。它加载数据,应用所需的过滤器,并将数据转储成所需要的格式。当然要执行程序,Pig 需要 Java 运行环境。

Apache Pig 特性:

  • 可扩展:为了执行特殊的处理,用户可以建立自己的功能。
  • 效率优化:Pig 系统自动优化执行过程,这样用户仅需要关注语义而不必关注效率
  • 处理各类数据-:Pig 既可以分析结构化数据又可以分析非结构化数据

HBase

Apache HBase 是 Hadoop 中的分布式数据库,其设计目的在于在表中存储结构化数据,而这个表可能会有数十亿行几百万列。HBase 是建立在 HDFS 之上的可缩放、分布式的 NoSQL 数据库。HBase提供了实时访问,在 HDFS 上读取或者写入数据。

Hadoop概论(三)—— Hadoop 生态圈-最码农

Hbase 组件

HBase 有两个叫做 HBase Master 和 RegionServer 的组件。

  • HBase Master

它并不负责数据存储,而是负责在所有 RegionServer 间做负载均衡

  1. 维护和监控 Hadoop 集群
  2. 执行管理(提供接口创建,更新和删除表)
  3. 控制故障转移
  4. HMaster 处理 DDL 操作
  • RegionServer

它是为客户端请求处理读、写、更新和删除的工作节点。RegionServer 进程运行在每个Hadoop 集群节点。RegionServer 运行在 HDFS 的 DataNode 节点上。

HCatalog

它是 Hadoop 的表和数据存储层。Hadoop 生态圈中的各种组件包括像 MapReduce、Hive、Pig可以利用 HCatalog 非常容易地从集群中读写数据。HCatalog 也是 Hive 的关键组件,用户可以通过它以任何格式和结构存储它们的数据。默认情况下,HCatalog 支持 RCFile、CSV、JSON、SequenceFile以及 ORC 文件格式。

HCatalog的好处

  • 启用数据可用性通知
  • 通过表的抽象,HCatalog使用户从数据存储的开销中解放出来。
  • 为数据清理归档提供可见性

Avro

Avro 在 Hadoop 生态圈当中是最流行的数据序列化系统。Avro 是以开源项目,提供了数据序列化和数据交互服务。这个服务也可以独立使用。使用 Avro 的大数据交互程序可以使用不同语言进行编写。

使用序列化服务的程序可以将数据序列化为文件或者消息。它将数据的定义和数据一起存储在消息或文件中,这样可以使程序能够动态地理解存储在 Avro 文件或者消息中的信息。

  • Avro Schema

Avro 依靠 schema 进行序列化和反序列化。Avro 需要 schema 进行数据读写。当 Avro 数据存储在文件中时,它对应的 schema 也一起存储,因此该文件可以被任何程序处理。

  • 动态类型

指的是不需要生成代码就可以序列化和反序列化。为了能够进行优化,Avro 也为静态语言提供了代码生成能力。

  • Avro的特性:
    • 丰富的数据结构
    • 远程过程调用
    • 压缩,快速,二进制数据格式
    • 容器文件存储持久化数据

Thrift

Thrift [θrɪft] 是可扩展的跨语言进行服务开发的软件框架。Thrift 是RPC(Remote Procedure Call,远程过程调用)通讯的接口定义语言。出于性能或者其他原因的考虑,Hadoop 在大量 RPC 调用时会考虑使用 Apache Thrift组件。

Apache Drill

Drill [drɪl] 组件的主要目的是大规模处理结构化和半结构化数据。它是一个低延迟分布式查询引擎,它可以扩展到上千个节点并且查询 PB 级的数据。Drill 是第一个不使用 schema 模型的分布式 SQL查询引擎。

  • Apache Drill 的应用

Drill 是 Cardlytics 公司(Cardlytics,Inc 创立于 2008 年,总部位于美国佐治亚州亚特兰大,是一家在美国和英国运营消费数据智能平台的公司)最有价值的工具,该公司为移动公司及互联网银行提供消费者购买数据。Cardlytics 使用 Drill 快速查询并处理万亿级别的记录。

  • Apache Drill 特性

Drill 拥有特殊的内存管理系统去进行垃圾回收和优化内存。Drill 和 Hive 兼容性很好,开发人员可以重用现有的 Hive 部署。

  1. 扩展性:Drill 在所有层包括查询层,查询优化以及客户端API都提供了可扩展的结构。我们可以因特殊目的扩展任何一层。
  2. 灵活:Dirll 提供了分层的列式数据模型,它可以表示复杂,高度动态的数据,并且允许高效处理。
  3. 动态 schema 发现:Drill 在开始执行数据查询过程时,不需要为数据指定 schema或者规范数据类型。Drill 以数据单元(也称为批量记录)的形式启动数据处理过程,并且在处理过程中动态发现 schema。
  4. 去中心化的元数据:和其他 Hadoop SQL 技术不同,Drill 不需要中心化的元数据。Drill 在查询数据时,不需要在元数据中建立和管理表。

Apache Mahout

Mahout [məˈhaʊt] 是一个开源框架,用于建立可扩展的机器学习算法和数据挖掘。一旦数据存储在 Hadoop HDFS 中,mahout 提供的数据科学工具能够从这些大数据集中发现有用的模式。

Mahout 算法包括:

  • 聚类(Clustering):把项目进行分类,进行自然分组,使彼此相似的项目位于同一个组。
  • 协同过滤(Collaborative filtering):挖掘用户行为从而产生产品推荐(比如亚马逊的推荐功能)。
  • 分类(Classifications):从现有分类中学习,将未分类的项目划分到最佳分类。
  • 频繁模式挖掘(Frequent pattern mining):它分析在一个组中的项目(比如出现在购物车中的项目或者查询会话中的项目),然后标识出哪些项目通常会出现在一起。

Apache Sqoop

Sqoop 从外部将数据导入到 Hadoop 生态系统,比如 HDFS、HBase 或者Hive。它也可以将数据从 Hadoop 中导出到外部。Sqoop 可以和关系数据库协作,比如 Teradata、Netezza、Oracle、MySQL。

Hadoop概论(三)—— Hadoop 生态圈-最码农

Apache Sqoop特性:

  • 从大型机导入连续的数据集:Sqoop 满足了人们对从大型机向 HDFS 导入数据的需求。
  • 直接导入 ORC 文件:改进了压缩以及轻量级索引,并且提高了查询性能
  • 并行数据传输:具备更高的性能,并且优化了系统利用率。
  • 高效的数据分析:通过在数据读取池中将结构化和非结构化数据组织成 schema,从而提高数据分析效率。
  • 加速数据拷贝:使从外部系统拷贝到 Hadoop 时,拷贝速度更快。

Apache Flume

Flume 能够将大量的数据从它的原始位置进行收集、聚合甚至移动最后送到HDFS 中。它具有容错和可靠的机制。它让数据流从源头流入 Hadoop 环境。它使用简单可扩展的数据模型支持应用程序做在线分析。使用 Flume,我们可以将来自多个服务器的数据立刻导入到 Hadoop 中。

Ambari

Ambari 是一个管理平台,用于配置、管理、监控 Hadoop 集群,并为其提供安全保障。通过使用Ambari 这样一致化,安全的操作控制平台,Hadoop 管理将更加轻松。

Hadoop概论(三)—— Hadoop 生态圈-最码农

Ambari的特性:

  • 简化了安装、配置和管理过程:Ambari 以可扩展的方式,轻松高效地建立和管理集群。
  • 集中的安全设置:对于跨整个平台管理和配置集群安全性来说,Ambari 大大削减了这种复杂度。
  • 高扩展和可定制:Ambari 高度可扩展,而且能够管理定制的服务
  • 集群健康全面可视化:Ambari 确保集群是监控的,而且可以通过各种方法进行全方位监控。

Zookeeper

Apache Zookeeper 是一个集中服务,为 Hadoop 生态圈提供维护配置信息、命名服务、提供分布式同步以及分组服务。Zookeeper 管理和协调大型集群中的机器。

Hadoop概论(三)—— Hadoop 生态圈-最码农

Zookeeper特性:

  • 快速:Zookeeper 读数据比写数据更快速,其比例为10 : 1。
  • 有序:Zookeeper 维护一个所有事务的记录。

Oozie

它是针对 Hadoop 任务的工作流调度系统。Oozie 将多个顺序任务组合从一个工作逻辑单元。Oozie 框架完全可以和 Hadoop 集成在一起,YARN 是架构中心,并且支持 MapReduce、Pig、Hive以及 Sqoop 等 Hadoop 任务。

在 Oozie 中,用户可以建立工作流的有向无环图(DAG,Directed Acyclic Graph),它可以在Hadoop 中并行和按顺序运行。Oozie 是可扩展的,而且能够及时管理 Hadoop 集群中数以千计的工作流的执行。Oozie 也非常灵活。可以非常轻松地开始、停止、挂起和返回任务。它甚至可以跳过特定的故障节点或者直接返回。

Oozie 任务有两种基本类型:

  • Oozie 工作流:存储和运行由 Hadoop 任务(比如 MapReduce、Pig、Hive)构成的工作流。
  • Oozie 协调器(Oozie Coordinator):它基于预定义调度信息和数据可用性运行工作流任务。

以上就是几乎所有的Hadoop生态圈组件的介绍。

Hadoop HDFS
赞(6) 收藏(0)
Hadoop概论(二)—— 你好,大象 !
上一篇
Hadoop 伪分布式搭建
下一篇
再想想
暂无评论
随 机 推 荐
Hive 行转列与列转行
Hive 常用函数整理
Flume 自定义Sink
Flume 入门案例 – 实时监控单个追加文件
从Hadoop框架讨论大数据生态
HDFS 概述
MapReduce框架原理-InputFormat数据输入
Hadoop 序列化
6
  • 6
  • 0
介绍

我们致力于打造一个原创的计算机相关技术的博客网站,旨在为访客提供一个优质的计算机技术教程交流平台。网站开辟了很多于计算机相关的栏目,并且收集了不少实用资源,同时也鼓励欢迎访客一起分享、交流、学习。

灵魂推荐
Veer图库 数码荔枝
栏目标题
首页 动态广场 精选栏目 闲言碎语 左邻右里 笔记屋
Copyright © 2021-2023 最码农. 苏ICP备20033168号
  • 首页
  • 动态广场
  • 精选栏目
  • 闲言碎语
  • 左邻右里
  • 笔记屋
# 教程 # # Hadoop # # Hive # # Flume # # 人工智能 #
Cosy
即使世界毁灭,也总有回光返照的那一刻
117
文章
3
评论
432
喜欢