大数据处理架构Hadoop

Hadoop简介

Hadoop是一个开源分布式计算平台,为用户提供系统底层细节透明的分布式基础架构。Hadoop基于Java语言开发,具有很好的跨平台特性,可以部署在廉价的计算机集群中。它的核心是分布式文件系统(Hadoop Distributed File System,HDFS)和MapReduce。

主要特性

  • 高可靠性  

采用冗余数据存储方式,一个副本发生故障,其他副本也可以保证正常服务。

  • 高效性

采用分布式存储和分布式处理两大核心技术,能够高效地处理PB级数据。

  • 高可扩展性

Hadoop的设计目标是可以高效稳定地运行在廉价地计算机集群上,可以扩展到数以千计的计算机节点。

  • 高容错性

采用冗余数据存储方式,自动保存数据的多个副本,并且能够自动将失败的任务进行重新分配。

  • 成本低

Hadoop采用廉价的计算机集群。

  • 运行在Linux平台上

Hadoop基于Java语言开发,可以较好地运行在Linux平台上。

  • 支持多种编程语言

Hadoop平台上的应用程序也可以使用其他语言编写,如C++。

Hadoop的项目结构

1、Common

Hadoop Common原名Hadoop Core,为Hadoop其他子项目提供支持的常用工具,主要包括文件系统、RPC(Remote Procedure Call)和串行化库,它们为在廉价的硬件上搭建云计算环境提供基本的服务,也为运行在该平台上的软件开发提供所需的API

2、Avro

Avro是Hadoop的一个子项目,也是Apache中的一个独立项目。Avro是一个用于数据序列化的系统,提供了丰富的数据结构类型、快速可压缩的二进制数据格式、存储持久性数据的文件集、远程调用(Remote Procedure Call,RPC)的功能和简单的动态语言集成功能。Avro可以将数据结构或对象转化成便于存储和传输的格式,节约数据存储空间和网络传输带宽。Hadoop的其他子项目(如HBase和Hive)的客户端与服务端之间的数据传输都采用了Avro。

Avro支持跨编程语言实现,如C、C++、C#、Java、Python、Ruby、PHP等。Avro依赖于模式(Schema),Avro数据的读写是在模式之下完成的,需要动态加载相关数据的模式,这样,写入数据的开销就会大大减少,序列化的速度大大提升。这种数据及其模式的自我描述,大大方便了动态脚本语言的使用。把Avro数据保存到文件中时,数据连同其模式会被一起存储,这样不同类型的程序都可以对文件进行处理。Avro和动态语言结合后,读写数据文件和使用RPC协议都不需要生成代码,而代码生成作为一种可选的优化,只需要在静态语言中实现。

3、HDFS

Hadoop分布式文件系统(Hadoop Distributed File System,HDFS)是Hadoop项目的两大核心之一,它是针对谷歌文件系统(Google File System,GFS)的开源实现。HDFS具有处理超大数据、流式处理、可以运行在廉价商用服务器上等优点。HDFS放宽了一部分POSIX(Portable Operating System Interface)约束,从而实现以流的形式访问文件系统中的数据。HDFS在访问应用程序数据时,可以具有很高的吞吐率,因此对超大数据集的应用程序而言,HDFS作为底层数据存储是比较好的选择。

4、HBase

HBase是一个提供高可靠性、高性能、可伸缩、实时读写、分布式的列式数据库,一般采用HDFS作为其底层数据存储。HBase是针对谷歌的BigTable的开源实现,二者都采用了相同的数据模型,具有强大的非结构化数据存储能力。HBase采用基于列的存储,传统关系数据库采用基于行的存储。HBase具有良好的横向扩展能力,可通过不断增加廉价的商用服务器来增加存储能力。

5、MapReduce

Hadoop MapReduce是针对谷歌MapReduce的开源实现。MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算,它将复杂、运行于大规模集群上的并行计算过程高度地抽象到了两个函数——Map和Reduce,允许用户在不了解分布式系统底层细节的情况下开发并行应用程序,并将其运行于廉价计算机集群上,完成海量数据的处理。它的核心思想就是“分而治之”,把输入的数据集切分为若干独立的数据块,分发给一个主节点管理下的各个分节点来共同并行完成;最后通过整合各个节点的中间结果得到最终结果。

6、Zookeeper

Zookeeper是针对谷歌Chubby的一个开源实现,是高效和可靠的协同工作系统,提供分布式锁之类的基本服务(如统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等),用于构建分布式应用,减轻分布式应用程序所承担的协调任务。Zookeeper使用Java编写,很容易编程接入,它使用了一个和文件树结构相似的数据模型,可以使用Java或者C来编程接入。

7、Hive

Hive是一个基于Hadoop的数据仓库工具,可以用于对Hadoop文件中的数据集进行数据整理、特殊查询和分析存储。Hive比较容易学习,它提供了类似于关系数据库SQL语言的查询语言——Hive QL,可以通过Hive QL语句快速实现简单的MapReduce统计,Hive自身可以将Hive QL语句转换为MapReduce任务进行运行,而不必开发专门的MapReduce应用,因而十分适合数据仓库的统计分析。

8、Pig

Pig是一种数据流语言和运行环境,适合于使用Hadoop和MapReduce平台来查询大型半结构化数据集。Pig的出现大大简化了Hadoop的常见工作任务,在MapReduce的基础上创建了更简单的过程语言抽象,为Hadoop应用程序提供了一种更加接近结构化查询语言(SQL)的接口。

9、Sqoop

Sqoop可以改进数据的互操作性,主要用来在Hadoop和关系数据库之间交换数据,主要通过JDBC(Java Database Connectivity)。理论上,支持JDBC的关系数据库都可以使Sqoop和Hadoop进行数据交互。Sqoop是专门为大数据集设计的,支持增量更新,可以将新纪录添加到最近一次导出的数据源上,或者指定上次修改的时间戳。

10、Chukwa

Chukwa是一个开源的、用于监控大型分布式系统的数据收集系统,可以将各种类型的数据收集成适合Hadoop处理的文件,并保存在HDFS中供Hadoop进行各种MapReduce操作。Chukwa构建在Hadoop的HDFS和MapReduce框架之上,继承了Hadoop的可伸缩性和可扩展性。Chukwa内置了一个强大而灵活的工具集,可用于展示、监控和分析已收集的数据。

猜你喜欢

转载自blog.csdn.net/m0_38017084/article/details/81364515