大数据平台,Hadoop集群架构,概述及原理

Posted 无求道贾

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据平台,Hadoop集群架构,概述及原理相关的知识,希望对你有一定的参考价值。

目录

一,大数据平台架构概述

1,大数据概念

2,大数据的特征

3,大数据的处理流程和相关技术

4,大数据平台架构的特点

5,大数据平台架构原理

二,Hadoop集群概述

1,HDFS

2,MapReduce

3,YARN

三,Hadoop HA 集群原理

1,HDFS HA 实现原理

2,主备切换

3,Zookeeper的功能原理

4,JournalNode服务原理


Hellow大家好,今天带大家学习大数据平台的概述和原理,以及Hadoop架构平台的运转原理,讲解不死板,通俗易懂。带您轻而易举了解其工作原理。

一,大数据平台架构概述

1,大数据概念

大数据并不是单只大数据本身,而是包括大数据的获取,存储,管理,处理分析,展示等等,大数据,数据量肯定更大,来源渠道更广,处理分析展示,更为麻烦,面对大量的数据如果处理速度慢,那么用户会因体验不佳从而放弃当前页面,大数据的最终目的就是让大量的数据发挥其潜在的巨大价值。

2,大数据的特征

体量大

大数据嘛,为什么叫大数据,就是因为它体量大,来源广,杂,随着互联网,物联网,人工智能,移动互联的发展,人口的不断增多,数据量越来越大,越来越多。

多样性

大数据数据来源广泛且多样,包含结构化,非结构化,半结构化数据,不能以统一的方式存储。

高速性

数据的增长速度和处理速度是大数据高速性的重要体现,在当下,人们对大数据的处理和响应速度要求极高,须达到几秒之内完成。

价值

大数据的核心特征是价值密度低,简单理解就是,数据量大,但其有用的信息,经过处理分析之后却很少。

3,大数据的处理流程和相关技术

大数据的处理流程一般分为四步

大数据的采集

采集须在多台服务器上进行,且不能影响其它业务的正常开展,在采集中,会有重复的数据,所以需要对数据进行预处理,去重,在Hadoop平台架构中,预处理主要通过MapReduce来实现。

大数据的存储

因为数据的多样性,结构化,非结构化,半结构化,根据存储问题,衍生出了HDFS,KFS等分布式文件系统,各种关系型(mysql),非关系型(Redis)应运而生。

大数据的分析和挖掘

因对其处理时间要求极其严格,分为离线处理方式和在线处理方式,如果对时间要求不严格,采用离线方式处理,如果对时间要求苛刻,就采用在线方式处理,它们都将存储到HDFS中,通过HDFS数据作为输入,基于Hadoop进行分布式数据分析。

大数据可视化

要求就是能清晰直观的看出分析结果,可借助图形化手段,这就是可视化工具,如python等等。

4,大数据平台架构的特点

高可靠性

按位存储和处理数据能力,HA机制,保证集群不会出太大的故障。

高扩展性

在集群之间分配数据完成扩展任务,方便扩展,节点数以千计。

高效性

各节点动态移动数据,保持节点平衡,处理速度快。

高容错性

数据保存多个副本,自动对失败任务进行重新处理分配。

低成本,开源

5,大数据平台架构原理

分为四层:数据来源层,数据采集与存储层,数据分析层,数据应用层。

二,Hadoop集群概述

Hadoop集群三大核心组件

1,HDFS

Hadoop分布式文件系统HDFS是Hadoop数据存储管理的基础,是一个分布式文件系统,容错性高,高吞吐率,有效的收集海量数据,将大数据文件切成小数据块,再写入不同节点,这些节点被称为数据节点(DataNode),为了使用户在使用时可以访问到每一个数据块,HDFS使用了一个专门保存文件属性信息的节点——名称节点(NameNode)。

2,MapReduce

上边讲到过,MapReduce就是处理数据的,用于海量数据的分布式处理,把对大数据的操作分发给多个子节点进行并行处理,然后整合结果,得到最终的计算结果,MapReduce就是一个分赛处理并汇总结果的过程。

3,YARN

YARN用于资源调度,就是为MapReduce提供计算资源的,是通用资源管理系统,负责将系统资源分配给在Hadoop集群中的应用程序,并调度需要在不同节点执行的任务,相当于一个分布式操作系统平台,它的组件有ResourceManager,ApplicationMaster,NodeManager,采用master/slave(主/从)结构。

总的来说:HDFS用于海量分布式数据的存储,MapReduce用于海量数据分布处理,YARN用于进行资源调度,为MapReduce提供算力资源,HDFS和YARN加起来就是一个分布式操作系统,而MapReduce是运行在这个操作系统上的大数据处理框架。

三,Hadoop HA 集群原理

1,HDFS HA 实现原理

简单来说,完全分布式集群的HDFS下至有一个Namenode进程,当它发生故障时,整个集群将无法工作,那么如何避免呢?很简单,每个HDFS可以部署两个NameNode实列,一个处于active状态,一个处于standby状态,两个Name Node需要同步,为保证active Name Node和standby NameNode的同步,当active NameNode的命名空间发生改变时,会将日志写入DataNode的JournalNode中,standby NameNode会一直监控JournalNode的变化,从而实现两个NameNode的状态同步。

2,主备切换

当active NameNode出现故障后,需要自动切换到standby NameNode,让standby 替代active,从而实现HA,而实现主备切换主要是通过zookeeper集群和FailoverController服务,每个NameNode本地都会有一个FailoverController,他的作用就是向本地的NameNode做健康监控,并时刻与另一端通信,而zookeeper集群则会给一个独占锁,就是标明哪个是active的NameNode。通过FailoverController来通信其NameNode状态,通过zookeeper来标识哪个为active的NameNode,从而实现故障的替换实现真正的高可用。

3,Zookeeper的功能原理

ZooKeeper集群主要负责Hadoop集群的一些数据管理问题,命名服务,配置管理,状态同步,集群管理,队列管理,分布式锁等。

ZooKeeper=文件系统+监测通知
ZooKeeper集群由俩个角色组成,Leader和Follower组成,多个Follower和一个Leader

Leader主要功能就是恢复数据,维持通信

Follower主要功能就是向Leader发送请求,接收Leader的消息并处理,接收Client的请求,进行Leader的投票,结果返回Client

ZooKeeper选举机制,ZooKeeper集群会通过Paxos算法选举出Leader角色是哪个节点,Paxos算法简单来说就是过半选举,比如三台节点,一次启动ZooKeeper,那么第二台节点的ZooKeeper状态就是Leader。

4,JournalNode服务原理

前边说了,为了实现两个NameNode的数据同步,引入了一组名为JournalNode的独立进程进行通信,当active状态的NameNode发生改变时会写入JournalNode中,而standby状态的NameNode会读取JournalNode的变更信息还有日志的变化,这就可以保证在集群出错时NameNode可以完全同步并实现从standby到active状态的切换,从而保持集群的正常运行。

大数据技术原理与应用——大数据处理架构Hadoop

Hadoop简介 

  Hadoop是Apache软件基金会旗下的一个开源分布式计算平台,为用户提供了系统底层细节透明的分布式基础架构。

  Hadoop是基于Java语言开发的,具有很好的跨平台特性,并且可以部署在廉价的计算机集群中。

  Hadoop的核心是分布式文件系统(Hadoop Distributed File System,HDFS)和MapReduce。

  Hadoop被公认为行业大数据标准开源软件,在分布式环境下提供了海量数据的处理能力。


 Hadoop的特性

  Hadoop是一个能够对大量数据进行分布式处理的软件框架,并且是一种可靠、高效、可伸缩的方式进行处理的,它具有以下几个方面的特性:

  高可靠性:采用冗余数据存储方式,即使一个副本发生故障,其他副本也可以保证正常对外提供服务。

  高效性:作为并行分布式计算平台,Hadoop采用分布式存储和分布式处理两大核心技术,能够高效地处理PB级数据。

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

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

  成本低:Hadoop采用廉价的计算机集群,成本比较低,普通用户也很容易用自己的PC搭建Hadoop运行环境。

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

  支持多种编程语言:Hadoop上的应用程序也可以使用其他编程语言编写。


 Hadoop生态系统

  经过多年的发展。Hadoop生态系统不断完善和成熟,目前已经包括了多个子项目。除了核心的HDFS和MapReduce以外,Hadoop生态系统还包括Zookeeper,HBase,Hive,Pig,Mahout、Sqoop、Flume、Ambari等功能组件。需要说明的是,Hadoop2.0中新增了一些重要的组件,即HDFS HA和分布式资源调度管理框架YRAN等。

          

  HDFS:Hadoop分布式文件系统是Hadoop项目的两大核心之一,是针对谷歌文件系统的开源实现。HDFS具有处理超大数据、流式处理、可以运行在廉价商用服务器上等优点。HDFS在设计之初就是要运行在廉价的大型服务器集群上,因此在设计上就把硬件故障作为一种常态来考虑,可以保证在部分硬件发生故障的情况下仍然能够保证文件系统的整体可用性和可靠性。

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

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

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

  Pig:是一种数据流语言和运行环境,适合于使用Hadoop和MapRedeuce平台来查询大型半结构化数据集。虽然MapReduce应用程序的编写不是十分复杂,但毕竟也是需要一定的开发经验的。Pig的出现大大简化了Hadoop常见的工作任务,它在MapReduce的基础上创建了更简单的过程语言抽象,为Hadoop应用程序提供了一种更加接近结构化查询语言(SQL)的接口。Pig是一个相对简单的语言,它可以执行语句,因此当我们需要从大型数据集中搜索满足某个给定搜索条件的记录时,采用Pig要比MapReduce具有明显的优势,前者只需要编写一个简单的脚本在集群中自动并行处理与分发,而后者则需要编写一个单独的MapReduce应用程序。

  Mahout:Mahout是Apache软件基金会旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。

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

  Flume:是Cloudera提供的一个高可用、高可靠、分布式的海量日志采集、聚合和传输的系统。Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理并写到各种数据接收方的能力。

  Sqoop:是SQL-to-Hadoop的缩写,主要用来在Hadoop和关系数据库之间交换数据,可以改进数据的互操特性。通过Sqoop可以方便地将数据从MySQL、Oracle、PostgreSQL等关系数据库中导入Hadoop(可以导入HDFS、HBase或Hive),或者将数据从Hadoop导出到关系数据库,使得传统关系数据库和Hadoop之间的数据迁移变得非常方便。Sqoop主要通过JDBC和关系数据库进行交互,理论上,支持JDBC的关系数据库都可以使用Sqoop和Hadoop进行数据交互。Sqoop是专门为大数据集设计的,支持增量更新,可以将新纪录添加到最近一次导出的数据源上,或者指定上次修改的时间戳。(写到这里突然想起来面试的时候不知天高地厚非要和HR交流技术,HR问我将大规模数据从数据库导出应该使用什么技术,傻傻地回答JDBC。

  Ambari:Apache Ambari是一种基于Web的工具,支持Apache Hadoop集群的安装、部署、配置和管理。Ambari目前已支持大多数Hadoop组件,包括HDFS、MapReduce、Hive、Pig、HBase、Zookeeper、Sqoop等。


 

以上是关于大数据平台,Hadoop集群架构,概述及原理的主要内容,如果未能解决你的问题,请参考以下文章

大数据平台搭建及集群规划

小象学院Hadoop 2.X大数据平台V3

小象学院Hadoop 2.X大数据平台V3

大数据平台Hadoop的分布式集群环境搭建

大数据平台 Hadoop 的分布式集群环境搭建

大数据Hadoop的HA高可用架构集群部署