hadoop⼊门系列之⼆【hadoop项⽬以及结构】
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
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来实现并⾏任务处理的程序⽀持。
hadoop分布式集搭建
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分布式集的主要任务。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论