企业宣传,产品推广,广告招商,广告投放联系seowdb

终于有人把 生态的外围讲明确了! Hadoop

Hadoop是一个由Apache基金会开发的散布式系统基础架构。开发人员可以在不了遣散布式底层细节的状况下开发散布式程序,充沛应用集群的威力启动高速并行运算以及海量数据的散布式存储。Hadoop大数据技术架构如图1所示。

图1 Hadoop大数据技术架构

但是,Hadoop不是一个孤立的技术,而是一套完整的生态圈,如图2所示。在这个生态圈中,Hadoop最**的组件就是散布式文件系统HDFS和散布式计算框架MapReduce。HDFS为海量的数据提供了存储,是整个大数据平台的基础,而MapReduce则为海量的数据提供了计算才干。在它们之上有各种大数据技术框架,包含数据仓库Hive、流式计算Storm、数据开掘工具Mahout和散布式数据库HBase。此外,ZooKeeper为Hadoop集群提供了高牢靠运转的框架,保证Hadoop集群在局部节点宕机的状况下依然牢靠运转。Sqoop与Flume区分是结构化与非结构化数据采集工具,经过它们可以将海量数据抽取到Hadoop平台上,启动后续的大数据剖析。

图2 Hadoop大数据生态圈

Cloudera与Hortonworks是大数据的集成工具,它们将大数据技术的各种组件集成在一同,简化妆置、部署等上班,并提供一致的性能、治理、监控等性能。Oozie是一个业务编排工具,咱们将复杂的大数据解决环节解耦成一个个小脚本,而后用Oozie组织在一同启动业务编排,活期口头与调度。

01散布式文件系统

过去,咱们用诸如DOS、Windows、Linux、UNIX等许多系统来在计算机上存储并治理各种文件。与它们不同的是,散布式文件系统是将文件散列地存储在多个主机上,从而可以并行解决海量数据。

Hadoop的散布式文件系统HDFS如图3所示,它首先将主机集群分为称号节点(NameNode)与数据节点(DataNode)。称号节点是控制节点,当要求存储数据时,称号节点将很大的数据文件拆分红一个个大小为128MB的小文件,而后散列存储在其下的很少数据节点中。当Hadoop要求解决这个数据文件时,实践上就是将其散布到各个数据节点上启动并行解决,使性能失掉大幅优化。

图3 散布式文件系统HDFS

同时,每个小文件在存储时,还会启动多节点复制(自动是3节点复制),一方面可以并行读取数据,另一方面可以保证数据的安保,即任何一个节点失效,数据都不会失落。当一个节点宕机时,假设该节点的数据无余3份,就会立刻动员数据复制,一直坚持3节点的复制。正由于具备这样高牢靠的文件存储,Hadoop的部署不要求备份,也不要求磁盘镜像,在Hadoop集群的各个节点中挂载大容量的磁盘并性能Raid0就可以了。

02散布式计算框架

Hadoop的另一个关键组件是散布式计算框架MapReduce,它将海量数据的解决散布到许少数据节点中并前启动,从而提高系统的运转效率。

MapReduce计算词频的解决环节如图4所示。在这个环节中,首先输入要解决的数据文件,经过Splitting将其拆分到各个节点中,并在这些节点的本地口头Mapping,将其制形成一个Map。不同的义务可以设计不同的Map。譬如,如今的义务是计算词频,因此该Map的key是不同的词,value是1。这样,在后续的解决环节中,将相反词的1加在一同就是该词的词频了。

图4 散布式计算框架MapReduce

Mapping操作口头完,就开局Shuffling操作。它是整个口头环节中效率最差的局部,要求在各个节点间替换数据,将同一个词的数据放到同一个节点上。如何有效地降落替换的数据量成为优化性能的关键。接着,在每个节点的本地口头Reducing操作,将同一个词的这些1加在一同,就失掉了词频。最后,将散布在各个节点的结果集中到一同,就可以输入了。

整个计算有6个解决环节,那么为什么它的名字叫MapReduce呢?由于其余解决环节都被框架封装了,开发人员只有要编写Map和Reduce环节就能成功各种各样的数据解决。这样,技术门槛降落了,大数据技术得以盛行起来。

03优缺陷

与传统的数据库相比,MapReduce散布式计算只管有无可比拟的性能长处,但并不实用于一切场景。MapReduce没有索引,它的每次计算都是“暴力全扫描”,行将整个文件的一切数据都扫描一遍。假设要剖析的结果触及该文件80%以上的数据,与相关型数据库相比,能取得十分优秀的性能。假设只是为了查找该文件中的某几十条记载,那么它既消耗资源,性能也没有相关型数据库好。因此,MapReduce的散布式计算更适宜在后盾对批量数据启动离线计算,即一次性性对海量数据启动剖析、整顿与运算。它并不实用于在前台面向终端用户的在线业务、事务解决与随机查问。

同时,MapReduce更适宜对大数据文件的解决,而不适宜对海量小文件的解决。因此,当要解决海量的用户文档、图片、数据文件时,应当将其整分解一个大文件(序列文件),而后交给MapReduce解决。唯有这样才干充散施展MapReduce的性能。

本文摘编自《架构真意:企业级运行架构设计方法论与通常》,经出版方授权颁布。

© 版权声明
评论 抢沙发
加载中~
每日一言
不怕万人阻挡,只怕自己投降
Not afraid of people blocking, I'm afraid their surrender