Hadoop 项目及结构

现在 Hadoop 已经发展成为包含多个子项目的集合。虽然其核心内容是 MapReduce 和Hadoop 分布式文件系统(HDFS),但 Hadoop 下的Common 、Avro、 Chukwa、Hive 、HBase等子项目也是不可或缺的。它们提供了互补性服务或在核心层上提供了更高层的服务。以下图2是 Hadoop 的项目结构图。

图 2 Hadoop项目结构图

下面将对 Hadoop 的各个子项目进行更详细的介绍。

1Core/Common 从Hadoop 0.20 版本开始, Hadoop Core 项目便更名为Common。

Common 是为Hadoop 其他子项目提供支持的常用工具,它主要包括 FileSystem、RPC 和串行化库,它们为在廉价的硬件上搭建云计算环境提供基本的服务,并且为运行在该运平台上的软件开发提供了所需的 API。

2AvroAvro 是用于数据序列化的系统。它提供了丰富的数据结构类型、快速可压缩的二进制数据格式、存储持久性数据的文件集、远程调用 RPC 的功能和简单的动态语言集成功能。其中,代码生成器既不需要读写文件数据,也不需要使用或实现 RPC 协议,它只是一个可选的对静态类型语言的实现。

3MapReduceMapReduce 是一种编程模型,用于大规模数据集(大于 1TB)的并行运算。“映射 ”(map )、“化简 ”(reduce )等概念和它们的主要思想都是从函数式编程语言中借来的。它使得编程人员在不了解分布式并行编程的情况下也能方便地将自己的程序运行在分布式系统上。 MapReduce 在执行时先指定一个map(映射)函数,把输入键值对映射成一组新的键值对,经过一定的处理后交给 reduce,reduce 对相同key 下的所有 value 进行处理后再输出键值对作为最终的结果。

图3是 MapReduce 的任务处理流程图,它展示了 MapReduce 程序将输入划分到不同

的map 上,再将 map 的结果合并到reduce,然后进行处理的输出过程。

图 3 MapReduce任务处理流程图

4HDFS 是一个分布式文件系统。由于 HDFS 具有高容错性(fault-tolerant) 的

特点,所以可以设计部署在低廉( low-cost)的硬件上。它可以通过提供高吞吐率(high

throughput)来访问应用程序的数据,适合那些有着超大数据集的应用程序。 HDFS 放宽了可移植操作系统接口( POSIX,Portable Operating System Interface )的要求,这样就可以实现以流的形式访问文件系统中的数据。 HDFS 原本是开源的Apache 项目 Nutch 的基础结构,最后它成为了 Hadoop 的基础架构之一。

以下是 HDFS 的设计目标:

²  检测和快速恢复硬件故障。硬件故障是常见的问题,整个HDFS 系统由数百台或数千台存储着数据文件的服务器组成,而如此多的服务器意味着高故障率,因此,故障的检测和自动快速恢复是HDFS 的一个核心目标。

²  流式的数据访问。 HDFS 使应用程序能流式地访问它们的数据集。 HDFS 被设计成适合进行批量处理,而不是用户交互式的处理。所以它重视数据吞吐量,而不是数据访问的反应速度。

²  简化一致性模型。大部分的 HDFS 程序操作文件时需要一次写入,多次读取。一个文件一旦经过创建、写入、关闭之后就不需要修改了,从而简化了数据一致性问题和高吞吐量的数据访问问题。

²  通信协议,所有的通信协议都在TCP/IP协议之上。一个客户端和明确配置了端口的名字节点( NameNode)建立连接之后,它和名称节点( NameNode)的协议便是客户端协议( Client Protocal)。数据节点(DataNode)和名字节点( NameNode)之间则用数据节点协议( DataNode Protocal)。

5ChukwaChukwa 是开源的数据收集系统,用于监控和分析大型分布式系统的数据。Chukwa 是在Hadoop 的HDFS 和 MapReduce 框架之上搭建的,它同时继承了 Hadoop 的可扩展性和健壮性。 Chukwa 通过HDFS 来存储数据,并依赖于 MapReduce 任务处理数据。Chukwa 中也附带了灵活且强大的工具,用于显示、监视和分析数据结果,以便更好地利用所收集的数据。

6HiveHive 最早是由 Facebook 设计的,是一个建立在Hadoop 基础之上的数据仓库,它提供了一些用于数据整理、特殊查询和分析存储在 Hadoop 文件中的数据集的工具。 Hive提供的是一种结构化数据的机制,它支持类似于传统 RDBMS 中的SQL 语言来帮助那些熟悉SQL 的用户查询 Hadoop 中的数据,该查询语言称为 Hive QL。与此同时,那些传统的MapReduce 编程人员也可以在Mapper 或 Reducer 中通过Hive QL 查询数据。Hive 编译器会把Hive QL 编译成一组 MapReduce 任务,从而方便MapReduce 编程人员进行 Hadoop 应用的开发。

7HBaseHBase 是一个分布式的、面向列的开源数据库,该技术来源于 Google 的论文“Bigtable :一个结构化数据的分布式存储系统 ”。如同Bigtable 利用了Google 文件系统(Google File System)提供的分布式数据存储方式一样, HBase 在Hadoop 之上提供了类似于Bigtable 的能力。 HBase 是Hadoop 项目的子项目。HBase 不同于一般的关系数据库,其一, HBase 是一个适合于存储非结构化数据的数据库;其二,HBase 是基于列而不是基于行的模式。 HBase 和Bigtable 使用相同的数据模型。用户将数据存储在一个表里,一个数据行拥有一个可选择的键和任意数量的列。由于 HBase 表示疏松的,用户可以给行定义各种不同的列。HBase 主要用于需要随机访问、实时读写的大数据( Big Data)。

8PigPig 是一个对大型数据集进行分析和评估的平台。Pig 最突出的优势是它的

结构能够经受住高度并行化的检验,这个特性让它能够处理大型的数据集。目前, Pig

的底层由一个编译器组成,它在运行的时候会产生一些 MapReduce 程序序列,Pig 的语

言层由一种叫做 Pig Latin 的正文型语言组成

参考资料:Hadoop实战 第2版 陆嘉恒著

Hadoop 项目及结构

时间: 2024-07-29 14:13:16

Hadoop 项目及结构的相关文章

百度Baidu EFE team的前端规范——项目目录结构规范

项目目录结构规范 简介 该文档主要的设计目标是项目开发的目录结构保持一致,使容易理解并方便构建与管理. 编撰 李玉北.erik.黄后锦.王杨.张立理.赵雷.陈新乐.刘恺华. 本文档由商业运营体系前端技术组审校发布. 要求 在本文档中,使用的关键字会以中文+括号包含的关键字英文表示:必须(MUST).关键字"MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT"

NET5实践:项目创建-结构概述-程序运行-发布部署

ASP.NET5实践01:项目创建-结构概述-程序运行-发布部署 1.项目创建 ASP.NET5项目模板有三种: 新建项目: 选择模板: 2.结构概述 References对应配置是project.json中: "frameworks": { "dnx451": { }, "dnxcore50": { } }, ASP.NET5开发时支持多版本的clr共存,但运行时是使用其中一种. dnxcore50是跨平台.模块化的coreclr.它有多种,如

Laravel项目目录结构说明

Laravel项目目录结构说明: |- vendor 目录包含你的 Composer 依赖模块及laravel框架. |- bootstrap 目录包含几个框架启动跟自动加载配置的文件. |- app.php |- autoload.php |- config 应用程序的配置文件. |- database 数据库迁移与数据填充文件. |- public 项目web入口和静态资源文件 (图片.js.css,字体等等). |-index.php 入口 |- resources 目录包含视图.原始的资

maven系列之二maven项目的创建和maven项目的结构

maven系列之一简单介绍了maven的基本信息,安装和配置,大家对maven有一个大概的了解,但是在maven项目开发中远远不够,为了进一步了解maven,现在我们介绍maven项目的创建和maven项目的结构. 第一部分:maven项目的创建 maven项目创建方式一:用命令 开始键+r=,确定,检测maven的版本 输入mvn -v   输入mvn archetype:generate  ,执行这个命令有点久,要有耐心,他会检测setting.xml,不符合条件就会报错.同时也会根据set

express+gulp构建项目(一)项目目录结构

express是基于nodejs平台的web框架,它可以让我们快速开发出web引用.而gulp是一种自动构建工具,非常强大,有了它,能帮我们完成很多繁琐的工作,例如,静态文件的压缩,为静态文件加上哈希值的命名以防止缓存等等. 环境安装 若要使用express框架和gulp,首先要安装nodejs环境,因为安装了nodejs环境,才能使用npm包管理器来下载express和gulp. nodejs到官方网站下载即可,现在一般项目中使用4.6的稳定版本. 项目大体结构 从这个图中我们可以很清楚的看出

基于Maven管理的JavaWeb项目目录结构参考

通常在创建JavaWeb项目时多多少少都会遵循一些既定的比较通用的目录结构,下面分享一张基于Maven管理的JavaWeb项目目录结构参考图: 上图仅是参考,不同项目不同团队都有自己的约定和规范. 个人体会: 项目目录结构一旦约定和规范之后,每个团队成员自我约束和遵守规范才是整个目录结构不随项目的进展而变得越来越不清晰的根本.

[Android系列—] 2. Android 项目目录结构与用户界面的创建

前言 在 [Android系列-] 1. Android 开发环境搭建与Hello World 这一篇中介绍了如何快速搭建Android开发环境, 并成功了建立一个没有任何代码更改的 Android 应用程序. 接下来, 就得看看 1. 使用 Eclipse  创建的APP 有哪些目录和文件 2. 如何创建一个比Hello World 高级的一个用户界面 appcompat_v7 在创建 MyFirstApp 的 Android 项目时, 会发现在项目路径下多出了一个 appcompat_v7

Hadoop项目实战-用户行为分析之编码实践

1.概述 本课程的视频教程地址:<用户行为分析之编码实践> 本课程以用户行为分析案例为基础,带着大家去完成对各个KPI的编码工作,以及应用调度工作,让大家通过本课程掌握Hadoop项目的编码.调度流程.下面我们来看看本课程有哪些课时,如下图所示: 首先,我们来学习第一课时:<Hadoop项目基础代码>. 2.内容 2.1 Hadoop项目基础代码 本课时介绍编写Hadoop基础代码及脚本,在前面搭建好的Hadoop项目工程上, 完成项目的基本代码的编写,以及一些注意事项,为编写核心

Hadoop项目实战-用户行为分析之分析与设计

1.概述 本课程的视频教程地址:<用户行为分析之分析与设计> 下面开始本教程的学习,本教程以用户行为分析案例为基础,带着大家对项目的各个指标做详细的分析,对项目的整体设计做合理的规划,让大家能通过本课程掌握Hadoop项目的分析与设计.该课程主要包含以下课时: 他们分别是:项目整体分析,项目指标与数据源分析以及项目整体设计.如下图所示: 首先我们来学习第一课时:<项目整体分析>. 2.内容 2.1 项目整体分析 本课时简述分析一个项目产生的背景,以及该项目能给企业带来那些良好的结果