1、概述

现在hadoop已经法阵成为包含很多项目的集合,尽管其核心是MapReduce和HDFS分布式文件系统,但是与Hadoop相关的Common、Avro、Chukwa、Hive、HBase等项目也是不可或缺的,它们提供了互补性服务或者在核心层上提供了更高层的服务。hadoop项目结构如截图所示:

在接下来的文章将详细介绍hadoop各个关联项目的介绍

2、hadoop相关项目介绍

  • Common

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

  • Avro

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

Avro系统依赖于模式,数据的读和谐是在模式之下完成的,这样可以减少写入数据的开销,提高序列化的速度并缩减其大小,同时也可以方便动态脚本语言的使用,因为数据连同其模式都是自描述的。

在RPC中,Avro系统客户端和服务器端通过握手协议进行模式交换,因此当客户端和服务器拥有彼此全部的模式时,不同模式下相同命名字段、丢失字段和附加字段等信息的一致性问题就得到了很好得解决。

  • MapReduce

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

  • HDFS

HDFS是一个分布式文件系统,因为HDFS具有高容错性的特点,所以它可以设计部署在低廉的硬件上,它可以通过提供高吞吐率来访问应用程序的数据,适合那些有着超大数据集的应用程序,HDFS放款了可移植操作系统接口的要求,这样可以以流的形式访问文件系统中的数据,HDFS原本是开源的Apache项目Nutch的基础结构,最后它却成为了Hadoop基础架构之一。

以下是HDFS的设计目标:

  • 监测和快速恢复硬件故障
  • 流式数据访问
  • 简化一致性模型
  • 通信协议
  • Chukwa

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

  • Hive

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

  • HBase

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

  • Pig

Pig是一个对大型数据集进行分析、评估的平台,Pig最突出的优势是它的结构能够经受住高度并行化的检验,这个特性使得它能够处理大型的数据集,目前Pig底层由一个编译器组成,它运行的时候回产生一些MapReduce程序序列。

  • Zookeeper

Zookeeper是一个为分布式应用所涉及的开源协调服务,它主要为用户提供同步、配置管理、分组和命名等服务,减轻分布式应用程序锁承担的协调任务,Zookeeper的文件系统使用了我们所熟悉的目录树结构,Zookeeper是使用Java编写,是它支持Java和C两种编程语言。

3、Hadoop体系结构

HDFS和MapReduce是Hadoop的两大核心,而整个Hadoop的体系结构主要是通过HDFS来实现分布式存储的底层支持的,并且它会通过MapReduce来实现并行任务处理的程序支持。

HDFS采用了主从(Master/Slave)结构模型,一个HDFS集群是由一个NameNode和若干个DataNode组成的,其中NameNode作为主服务器,管理文件系统的命名空间和客户端对文件的访问操作;集群中的DataNode管理存储的数据,HDFS允许用户以文件的形式存储数据,从内部来看,文件被分成若干个数据块,而且这若干个数据块存放在一组DataNode上,NameNode执行文件系统的命名空间操作,比如打开、关闭、重命名文件或者目录等,它也负责数据块到具体的DataNode的映射,DataNode负责处理文件系统客户顿的文件读写操作,并在NameNode的统一调度下进行数据块的创建、删除、复制工作,如下图所示为HDFS的体系结构。

NameNode和DataNode都可以在普通商用计算机上运行,这些计算机通常运行在Linux操作系统,HDFS采用Java语言开发,因此任何支持Java的机器上都可以部署NameNode和DataNode,一个典型的部署场景就是集群中一台机器运行一个NameNode实例,其他机器分别运行一个DataNode实例,当然并不排除一台机器上运行多个DataNode实例的情况,集群中单一NameNode的设计大大简化了系统架构。NameNode是所有HDFS元数据的管理者,用户需要保存的数据不会经过NameNode,而是直接流向存储数据的DataNode。

MapReduce是一种并行编程模式,利用这种模式软件开发着能够轻松地编写出分布式并行程序。在Hadoop体系结构中,MapReduce是一个简单易用的软件框架,基于它可以将任务分发到由上千台商用机器组成的集群上,并以一种可靠容错的方式并行处理大量的数据集,实现hadoop并行任务处理功能。

MapReduce框架是由一个单独运行在主节点的JobTracker和运行在每个集群从节点的TaskTracker共同组成的,主节点负责调度构成一个作业的所有任务,这些任务分布在不同的从节点上,主节点监控它们的执行情况,并且重新执行之前失败的任务,从节点仅负责由主节点指派的任务,当一个Job被提交时,JobTracker接收到提交作业和其配置信息之后,就会将配置信息等分发给从节点,同时调度任务并监控TaskTracker的执行。

4、总结

HDFS和MapReduce共同组成了Hadoop分布式系统体系结构的核心,HDFS在肌群上实现了分布式文件系统,MapReduce在肌群上实现了分布式计算和任务处理,HDFS在MapReduce任务处理过程中提供对文件操作和存储等的支持,MapReduce在HDFS的基础上实现了任务的分发、跟踪、执行等工作,并收集结果,二者互相作用,完成了Hadoop分布式集群的主要任务。

hadoop入门系列之二【hadoop项目以及结构】相关推荐

  1. Hadoop入门系列(二)idea配置hadoop开发环境

    主要分两部分:一.idea配置hadoop开发环境.二.idea安装hadoop插件. 一. 1.为了便于各个版本的hadoop获得对应jar包以及其依赖jar包.搭建maven项目是个很好的选择.创 ...

  2. [转]OllyDBG 入门系列(二)-字串参考

    标 题: [原创]OllyDBG 入门系列(二)-字串参考 作 者: CCDebuger 时 间: 2006-02-14,13:34 链 接: http://bbs.pediy.com/showthr ...

  3. STM32F103五分钟入门系列(二)GPIO的七大寄存器+GPIOx_LCKR作用和配置

    摘自:STM32F103五分钟入门系列(二)GPIO的七大寄存器+GPIOx_LCKR作用和配置 作者:自信且爱笑' 发布时间: 2021-05-01 12:08:32 网址:https://blog ...

  4. 信息系统项目管理系列之二:项目生命期和组织

    信息系统项目管理系列之二: 项目生命期和组织 发布日期:2011年3月17日星期三作者:EricHu        说明:本文属作者的读书笔记.      勤能补拙.笨鸟先飞. 在一些大型企业或组织都 ...

  5. OllyDBG 入门系列(二)-字串参考

    标 题: [原创]OllyDBG 入门系列(二)-字串参考 作 者: CCDebuger 时 间: 2006-02-14,13:34:43 链 接: http://bbs.pediy.com/show ...

  6. Reflex WMS入门系列之二十一:关闭一个不需要的盘点

    Reflex WMS入门系列之二十一:关闭一个不需要的盘点 仓库管理实践中,如果业务人员创建好了一个盘点,发现后续暂时不需要执行实际的库存清点工作,或者本次盘点因故取消,或者发现该盘点数据有误需要关闭 ...

  7. 看雪学院-OllyDBG入门系列(二)笔记

    OllyDBG 入门系列(二)-字串参考 笔记 原作地址:http://bbs.pediy.com/showthread.php?threadid=21308 作者:CCDebuger   软件破解的 ...

  8. Reflex WMS入门系列十二:Reflex里的Location

    Reflex WMS入门系列十二:Reflex里的Location 玩过SAP系统里的人都知道,在SAP系统里库存管理分为IM Level和WM Level.IM Level的仓库,在SAP里被定义为 ...

  9. Hadoop入门(十二)Intellij IDEA远程向hadoop集群提交mapreduce作业

    Intellij IDEA远程向hadoop集群提交mapreduce作业,需要依赖到hadoop的库,hadoop集群的配置信息,还有本地项目的jar包. 一.软件环境 (1)window本地安装h ...

最新文章

  1. 有计划地开放数据 促进大数据法规落地
  2. 爱情这东西,真的有报应吗…
  3. 【编译原理】关于LL(1)文法的探索
  4. VBA与Excel内置的函数
  5. 怎么在java上运行服务器,用java做了一个简单的定时任务工程,不知道如何让它在服务器上运行起来?应该怎样做???...
  6. (44)css面试题集锦一
  7. 【Elasticsearch】2021 年的顶级 ETL 工具......以及对 ETL 说“不”的理由
  8. 剪纸窗花PSD分层素材|春节的常见元素,轻松应用到海报设计
  9. 微信公众号开发工具包
  10. Apache 配置里面使用 Win32DisableAcceptEx ,Apache 启动不了
  11. AutoCAD Civil 3D-横断面-创建横断面、横断面图及采样线的编辑(断面法工程量计算)
  12. matlab 求隐含波动率,matlab求解资产隐含波动率及无风险利率初探.doc
  13. 计算机必备ASCII码表
  14. 【URL重写】IIS7配置URL重写
  15. 不拆无损,在北汽EU5,EU7,EX3,EX7安装app应用
  16. 什么是股票程序化交易?
  17. 实验十一 电路布线问题
  18. android启动系统的图片裁剪工具
  19. jenkins构建项目报错:java:[17,37] package xx.xx.xxx does not exist
  20. 什么是元宇宙?宏大的元宇宙中有哪些安全与隐私问题?

热门文章

  1. 卑微的人依然可以有美丽的梦想—一段让无数人感动的视频
  2. 嗨呀科技:教你如何轻松把视频做成表情包
  3. 40w粉拿下900w播放!这个UP主在B站发起1元买水挑战!
  4. 攻城狮,你知道闪存电压拉偏时的一些基础数据吗?
  5. 娜迦智能云更新,app开发者的成本节省
  6. Postgres -- 如何在 Windows 上安装Postgres数据库 初始化启动数据库
  7. 超详细的逐句介绍Java反射之Field类和InvocationTargetException类函数源码讲解(全)
  8. mongodb中unwind操作
  9. 苹果6发布时间_苹果又又又要开发布会了,发布时间就在双十一,内容惊喜
  10. oracle关联查询取交集,Oracle 取两个表中数据的交集并集差异集合