首页 > 其他分享 >Hadoop大数据架构及关键组件-建立大数据知识体系

Hadoop大数据架构及关键组件-建立大数据知识体系

时间:2022-11-30 09:36:08浏览次数:40  
标签:存储 数据库 Hadoop 组件 Spark 数据 分布式

Hadoop大数据架构及关键组件
1. Hadoop生态系统
1.1 架构
大数据生态的主要组件及其关系
大数据生态
大数据架构
1. HDFS(Hadoop分布式文件系统):
2. MapReduce(分布式计算框架):
3. HBase(分布式列存数据库):
4. ZooKeeper(分布式协作服务):
5. Hive/Impala(基于Hadoop的数据仓库):
6. Pig(ad-hoc脚本):
7. Sqoop(数据同步工具):
8. Flume(日志收集工具):
9. Mahout(数据挖掘算法库):
10. YARN/Mesos(分布式资源管理器):
11. Tachyon(超光速粒子):
12. Spark(分布式计算框架):
13. Kafka(分布式消息队列):
14. Flink(分布式计算框架):
15. Oozie(工作流调度器):
16. Apache Phoenix:
17. Apache Ambari:
18. Apache Kylin:
1. Hadoop生态系统
1.1 架构
架构是一个系统的基础组织结构,包括系统的组件构成、组件之间的相互关系、系统和其所在环境的关系,以及指导系统设计和演化的相关准则

系统架构设计的目标主要包括:可靠性、安全性、可伸缩性、可扩展性、可维护性等。

研究大数据的技术架构,需要明确三个基本的观点:

对于大数据部署和应用来说,技术总是具体的,抽象讨论技术没有太多意义。
研究架构,需要理解各种不同架构的共同点,以便揭示大数据系统设计的内在规律和演化趋势,从而指明正确的系统建设方向。
大数据系统的最高抽象模式实际上就是大数据的基本系统架构,对这个顶层架构进行初次分解,就得到数据采集、数据存储、数据分析和数据应用四个方面,因此,技术架构也需要相应地从这四个方面描述。
大数据生态的主要组件及其关系
大数据生态

 

 


大数据架构

 

 

关键组件及作用如下:

1. HDFS(Hadoop分布式文件系统):
HDFS是整个hadoop体系的基础,负责数据的存储与管理。HDFS有着高容错性(fault-tolerant)的特点,并且设计用来部署在低廉的(low-cost)硬件上。而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。

Client:切分文件,访问HDFS,与NameNode交互,获取文件位置信息,与DataNode交互,读取和写入数据。
NameNode:master节点,在hadoop1.x中只有一个,管理HDFS的名称空间和数据块映射信息,配置副本策略,处理客户端请求。
DataNode:slave节点,存储实际的数据,汇报存储信息给NameNode。
Secondary NameNode:辅助NameNode,分担其工作量:定期合并fsimage和fsedits,推送给NameNode;紧急情况下和辅助恢复NameNode,但其并非NameNode的热备。

2. MapReduce(分布式计算框架):
MapReduce是一种计算模型,用于处理大数据量的计算。其中Map对应数据集上的独立元素进行指定的操作,生成键-值对形式中间,Reduce则对中间结果中相同的键的所有值进行规约,以得到最终结果。

Jobtracker:master节点,只有一个,管理所有作业,任务/作业的监控,错误处理等,将任务分解成一系列任务,并分派给Tasktracker。
Tacktracker:slave节点,运行 Map task和Reduce task;并与Jobtracker交互,汇报任务状态。
Map task:解析每条数据记录,传递给用户编写的map()函数并执行,将输出结果写入到本地磁盘(如果为map—only作业,则直接写入HDFS)。
Reduce task:从Map 它深刻地执行结果中,远程读取输入数据,对数据进行排序,将数据分组传递给用户编写的Reduce()函数执行。

3. HBase(分布式列存数据库):
HBase是一个建立在HDFS之上,面向列的针对结构化数据的可伸缩、高可靠、高性能、分布式和面向列的动态模式数据库。
HBase采用了BigTable的数据模型:增强的稀疏排序映射表(Key/Value),其中,键由行关键字、列关键字和时间戳构成。
HBase提供了对大规模数据的随机、实时读写访问,同时,HBase中保存的数据可以使用MapReduce来处理,它将数据存储和并行计算完美地结合在一起。

4. ZooKeeper(分布式协作服务):
ZooKeeper主要目标是解决分布式环境下的数据管理问题:统一命名,状态同步,集群管理,配置同步等。
Hadoop的许多组件依赖于Zookeeper,它运行在计算机集群上面,用于管理Hadoop操作。

5. Hive/Impala(基于Hadoop的数据仓库):
Hive定义了一种类似SQL的查询语言(HQL),将SQL转化为MapReduce任务在Hadoop上执行。通常用于离线分析。
HQL用于运行存储在Hadoop上的查询语句,Hive让不熟悉MapReduce开发人员也能编写数据查询语句,然后这些语句被翻译为Hadoop上面的MapReduce任务。

Impala是用于处理存储在Hadoop集群中的大量数据的MPP(大规模并行处理)SQL查询引擎。 它是一个用C ++和Java编写的开源软件。 与Apache Hive不同,Impala不基于MapReduce算法。 它实现了一个基于守护进程的分布式架构,它负责在同一台机器上运行的查询执行的所有方面。因此执行效率高于Apache Hive。

6. Pig(ad-hoc脚本):
由yahoo开源,设计动机是提供一种基于MapReduce的ad-hoc(计算在query时发生)数据分析工具。
Pig定义了一种数据流语言——Pig Latin,他是MapReduce编程的复杂性的抽象,Pig平台包括运行环境和用于分析Hadoop数据集的脚本语言(Pig-Latin)。其编译器将Pig Latin翻译成MapReduce程序设计,将脚本转换为MapReduce任务在Hadoop上执行,通常用于进行离线分析。

7. Sqoop(数据同步工具):
是SQL-to-Hadoop的缩写,主要用于传统数据库和Hadoop之前传输数据。数据的导入和导出本质上是Mapreduce程序,充分利用了MR的并行化和容错性。
Sqoop利用数据库技术描述数据架构,用于在关系数据库、数据仓库和Hadoop之间转移数据。

8. Flume(日志收集工具):
Flume是一个可扩展、适合复杂环境的海量日志收集系统。它将数据从产生、传输、处理并最终写入目标的路径的过程抽象为数据流,在具体的数据流中,数据源支持在Flume中定制数据发送方,从而支持收集各种不同协议数据。
同时,Flume数据流提供对日志数据进行简单处理的能力,如过滤、格式转换等。此外,Flume还具有能够将日志写往各种数据目标(可定制)的能力。总的来说,Flume是一个可扩展、适合复杂环境的海量日志收集系统。
Flume以Agent为最小的独立运行单位,一个Agent就是一个JVM。单个Agent由Source、Sink和Channel三大组件构成:

 

 

Source:从客户端收集数据,并传递给Channel。
Channel:缓存区,将Source传输的数据暂时存放。
Sink:从Channel收集数据,并写入到指定地址。
Event:日志文件、avro对象等源文件。

9. Mahout(数据挖掘算法库):
Mahout的主要目标是创建一些可扩展的机器学习领域经典算法的实现。已经包含了聚类、分类、推荐引擎(协同过滤)和频繁项集等数据挖掘算法。除了算法,Mahout还包含数据的输入/输出工具,与其他存储系统(如数据库、MongoDB等)集成的数据挖掘支持架构。

10. YARN/Mesos(分布式资源管理器):
YARN是下一代MapReduce,即MRv2,是在第一代MapReduce基础上演变而来的,主要是为了解决原始Hadoop扩展性较差,不支持多计算框架而提出的。

Mesos诞生于UC Berkeley的一个研究项目,现已成为Apache项目,当前有一些公司使用Mesos管理集群资源,比如Twitter。与yarn类似,Mesos是一个资源统一管理和调度的平台,同样支持比如MR、steaming等多种运算框架。

11. Tachyon(超光速粒子):
是以内存为中心的分布式文件系统,拥有高性能和容错能力,能够为集群框架(Spark、MapReduce)提供可靠的内存级速度的文件共享服务。

12. Spark(分布式计算框架):
Spark是一种基于内存的分布式并行计算框架,不同于MapReduce的是——Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。

Cluster Manager:在standalone模式中即为Master主节点,控制整个集群,监控worker。在YARN模式中为资源管理器
Worker节点:从节点,负责控制计算节点,启动Executor或者Driver。
Driver: 运行Application 的main()函数
Executor:执行器,是为某个Application运行在worker node上的一个进程
Spark将数据抽象为RDD(弹性分布式数据集),内部提供了大量的库,包括Spark Core、Spark SQL、Spark Streaming、MLlib、GraphX。 开发者可以在同一个应用程序中无缝组合使用这些库。

Spark Core:包含Spark的基本功能;尤其是定义RDD的API、操作以及这两者上的动作。其他Spark的库都是构建在RDD和Spark Core之上的
Spark SQL:提供通过Apache Hive的SQL变体Hive查询语言(HiveQL)与Spark进行交互的API。每个数据库表被当做一个RDD,Spark SQL查询被转换为Spark操作。
Spark Streaming:对实时数据流进行处理和控制。Spark Streaming允许程序能够像普通RDD一样处理实时数据,通过短时批处理实现的伪流处理。
MLlib:一个常用机器学习算法库,算法被实现为对RDD的Spark操作。这个库包含可扩展的学习算法,比如分类、回归等需要对大量数据集进行迭代的操作。
GraphX:控制图、并行图操作和计算的一组算法和工具的集合。GraphX扩展了RDD API,包含控制图、创建子图、访问路径上所有顶点的操作。
13. Kafka(分布式消息队列):
Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。实现了主题、分区及其队列模式以及生产者、消费者架构模式。

生产者组件和消费者组件均可以连接到KafKa集群,而KafKa被认为是组件通信之间所使用的一种消息中间件。**KafKa内部分为很多Topic(一种高度抽象的数据结构),每个Topic又被分为很多分区(partition),每个分区中的数据按队列模式进行编号存储。被编号的日志数据称为此日志数据块在队列中的偏移量(offest),偏移量越大的数据块越新,即越靠近当前时间。**生产环境中的最佳实践架构是Flume+KafKa+Spark Streaming。

14. Flink(分布式计算框架):
Flink是一个基于内存的分布式并行处理框架,类似于Spark,但在部分设计思想有较大出入。对 Flink 而言,其所要处理的主要场景就是流数据,批数据只是流数据的一个极限特例而已。
Flink VS Spark

Spark中,RDD在运行时是表现为Java Object,而Flink主要表现为logical plan。所以在Flink中使用的类Dataframe api是被作为第一优先级来优化的。但是相对来说在spark RDD中就没有了这块的优化了。
Spark中,对于批处理有RDD,对于流式有DStream,不过内部实际还是RDD抽象;在Flink中,对于批处理有DataSet,对于流式我们有DataStreams,但是是同一个公用的引擎之上两个独立的抽象,并且Spark是伪流处理,而Flink是真流处理。
15. Oozie(工作流调度器):
Oozie是一个可扩展的工作体系,集成于Hadoop的堆栈,用于协调多个MapReduce作业的执行。它能够管理一个复杂的系统,基于外部事件来执行,外部事件包括数据的定时和数据的出现。
Oozie工作流是放置在控制依赖DAG(有向无环图 Direct Acyclic Graph)中的一组动作(例如,Hadoop的Map/Reduce作业、Pig作业等),其中指定了动作执行的顺序。
Oozie使用hPDL(一种XML流程定义语言)来描述这个图。

16. Apache Phoenix:
是HBase的SQL驱动(HBase 的SQL接口),Phoenix使用HBase支持通过JDBC的方式进行访问,并将SQL查询转换成HBase的扫描和相应的动作。

17. Apache Ambari:
是安装部署配置管理工具,其作用就是创建、管理、监视Hadoop的集群,是为了让Hadoop以及相关的大数据软件更容易使用一个Web工具。

18. Apache Kylin:
Apache Kylin™是一个开源的、分布式的分析型数据仓库,提供Hadoop/Spark 之上的 SQL 查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由 eBay 开发并贡献至开源社区。它能在亚秒内查询巨大的表。
Apache Kylin™ 令使用者仅需三步,即可实现超大数据集上的亚秒级查询。

定义数据集上的一个星形或雪花形模型
在定义的数据表上构建cube
使用标准 SQL 通过 ODBC、JDBC 或 RESTFUL API 进行查询,仅需亚秒级响应时间即可获得查询结果
Kylin 提供与多种数据可视化工具的整合能力,如 Tableau,PowerBI 等,令用户可以使用 BI 工具对 Hadoop 数据进行分析。

 

 

————————————————————————————————————————————————————————————————————————————————————————

简介: 对海量数据进行存储、计算、分析、挖掘处理需要依赖一系列的大数据技术,而大数据技术又涉及了分布式计算、高并发处理、高可用处理、集群、实时性计算等,可以说是汇集了当前 IT 领域热门流行的 IT 技术。本文对大数据技术知识体系进行划分,共分为基础技术、数据采集、数据传输、数据组织集成、数据应用、数据治理,进行相关的阐述说明,并列出目前业界主流的相关框架、系统、数据库、工具等。(文末福利:下载大数据知识体系图)

前言

最早提出“大数据”时代到来的是全球知名咨询公司麦肯锡,麦肯锡称:“数据,已经渗透到当今每一个行业和业务职能领域,成为重要的生产因素。人们对于海量数据的挖掘和运用,预示着新一波生产率增长和消费者盈余浪潮的到来。”数据,让一切有迹可循,让一切有源可溯。我们每天都在产生数据,创造大数据和使用大数据,只是,你,仍然浑然不知。

企业组织利用相关数据和分析可以帮助它们降低成本、提高效率、开发新产品、做出更明智的业务决策等等。大数据的价值,远远不止于此,大数据对各行各业的渗透,大大推动了社会生产和生活,未来必将产生重大而深远的影响。

 

 

 

 

一 大数据基础技术

数据分片路由

在大数据的背景下,数据规模已经由 GP 跨越大屏 PB 的级别,单机明显已经无法存储与处理如此规模的数据量,只能依靠大规模集群来对这些数据进行存储和处理。对于海量的数据,通过数据分片(Shard/Partition)来将数据进行切分到不同机器中去,分片以后,如何能够找到某一条记录。这就是数据的分片和路由。

数据复制 & 一致性

在大数据的存储系统中,为了增加系统的可靠性,往往会将同一份数据存储多个副本。数据是如何复制?以及数据复制后带来的一致性问题如何的解决?

 

 

大数据常用算法与数据结构

对于大数据或者大规模的分布式系统来说,如何能够高效快速地进行海量数据的处理非常关键,而采用合适的数据结构和算法对于达成此目标至关重要。

二 数据采集

大数据的采集处于大数据生命周期的第一个环节,从数据采集的类型看不仅仅要涵盖基础的结构化数据,半结构化数据,以及非结构化数据音频、视频、图像等。常见的数据采集方式包括系统日志采集、网络数据采集、设备数据采集。

系统日志采集

系统日志采集主要是对数据库、系统、服务器等运行状态,行为事件等数据抓取。

  • 埋点:浏览器(PC)打点、无线客户端、服务端打点。
  • 数据采集框架:Chukwa、Splunk Forwarder、Flume、Fluentd、Logstash、Scribe。

网络数据采集

网络数据采集是指通过爬虫或者公开 API 等方式从网站获取数据。数据的内容可以是文本、视屏、图片数据等。

爬虫技术:Nutch、Heritrix、Scrapy、WebCollector。

设备数据采集

设备数据采集主要是指针对一些物理设备的数据采集,常见的如传感器,探针。

三 数据传输

经过采集的数据通过数据通道被传输存储。集中存储的数据源的数据发生变化也能通过数据通道尽快地通知对数据敏感的相应应用或者系统构建,使得它们能够尽快的捕获数据的变化。

数据传输包含如下相关技术:消息队列、数据同步、数据订阅、序列化。

消息队列

消息队列是涉及大规模分布式系统时候经常使用的中间件产品,主要解决日志搜集,应用耦合,异步消息,流量削锋等问题实现高性能,高可用,可伸缩和最终一致性架构。

数据同步

在数据仓库建模中,未经任何加工处理的原始业务层数据,我们称之为 ODS (Operational Data Store) 数据。在互联网企业中,常见的 ODS 数据有业务日志数据(Log)和业务 DB 数据(DB)两类。对于业务 DB 数据来说,从 MySQL 等关系型数据库的业务数据进行采集,然后导入到数据仓库中,是进一个重要环节。如何准确、高效地把 MySQL 数据同步到数据仓库中?一般常用的解决方案是批量取数并 Load。数据同步解决各个数据源之间稳定高效的数据同步功能。

数据订阅

数据订阅功能旨在帮助用户获取实时增量数据,用户能够根据自身业务需求自由消费增量数据,例如实现缓存更新策略、业务异步解耦、异构数据源数据实时同步及含复杂 ETL 的数据实时同 步等多种业务场景。

序列化

序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程。数据序列化用于模块通讯时,将对象序列化为通信流,高效的传输到另一个模块,并提供反序列化还原数据。对于大数据传输场景下序列化的性能、大小也直接影响了数据传输的性能。

四 数据组织集成

数据存储

大数据存储面向海量、异构、大规模结构化非结构化等数据提供高性能高可靠的存储以及访问能力,通过优化存储优化存储基础设施、提供高性能。高吞吐率、大容量的数据存储方案,解决巨大数据量的存储问题,同时为大规模数据分析、计算、加工提供支撑。

 

 

物理存储

随着主机、磁盘、网络等技术的发展,数据存储的方式和架构也在一直不停改变。

根据服务器类型,我们将存储的分类分为:

  • 封闭系统的存储(封闭系统主要指大型机)
  • 开放系统的存储(开放系统指基于 Windows、UNIX、Linux 等操作系统的服务器)

开放系统的存储分为:

  • 内置存储
  • 外挂存储

外挂存储根据连接的方式分为:

  • 直连式存储(Direct-Attached Storage,简称 DAS)
  • 网络化存储(Fabric-Attached Storage,简称 FAS)

网络化存储根据传输协议又分为:

  • 网络接入存储(Network-Attached Storage,简称 NAS)
  • 存储区域网络(Storage Area Network,简称 SAN)

针对不同的应用场景,选择的分布式存储方案也会不同,因此有了对象存储、块存储、文件系统存储。

 

 

分布式文件/对象存储系统

分布式存储系统面向海量数据的存储访问与共享需求,提供基于多存储节点的高性能,高可靠和可伸缩性的数据存储和访问能力,实现分布式存储节点上多用户的访问共享。

目前业界比较流行的分布式存储系统如下:HDFS、OpenStack Swift、Ceph、GlusterFS、Lustre、AFS、OSS。

分布式关系型数据库

随着传统的数据库技术日趋成熟、计算机网络技术的飞速发展和应用范围的扩大,以分布式为主要特征的数据库系统的研究与开发受到人们的注意。关系型数据库也是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。由于集中式关系型数据库系统的不足(性能、扩展性),分布式关系型数据库目前越来越多。

目前业界比较流行的分布式关系型数据库如下:DRDS、TiDB、GreenPlum、Cobar、Aurora、Mycat。

分析型数据库

分析数据库是面向分析应用的数据库,与传统的数据库不同,它可以对数据进行在线统计、数据在 线分析、随即查询等发掘信息数据价值的工作,是数据库产品一个重要的分支。

目前业界比较流行的分析型数据库如下:Kylin、AnalyticDB、Druid、Clickhouse、Vertica、MonetDB、InfiniDB、LucidDB。

搜索引擎

大数据时代,如何帮助用户从海量信息中快速准确搜索到目标内容,就需要搜索引擎。大数据搜索引擎是一个提供分布式,高性能、高可用、可伸缩的搜索和分析系统。

目前常见的搜索引擎技术如下:Elasticsearch、Solr、OpenSearch。

图数据库

图数据库源起欧拉和图理论,也可称为面向/基于图的数据库,对应的英文是 Graph Database。图形数据库是 NoSQL 数据库的一种类型,它应用图形理论存储实体之间的关系信息。图形数据库是一种非关系型数据库,它应用图形理论存储实体之间的关系信息。最常见例子就是社会网络中人与人之间的关系。图数据库的基本含义是以“图”这种数据结构存储和查询数据,而不是存储图片的数据库。它的数据模型主要是以节点和关系(边)来体现,也可处理键值对。它的优点是快速解决复杂的关系问题。

目前业界比较流行的图数据库如下:Titan、Neo4J、ArangoDB、OrientDB、MapGraph、ALLEGROGRAPH。

列存储数据库

列式数据库是以列相关存储架构进行数据存储的数据库,主要适合于批量数据处理和即时查询。相对应的是行式数据库,数据以行相关的存储体系架构进行空间分配,主要适合于大批量的数据处理,常用于联机事务型数据处理。

目前业界比较流行的列存储数据库如下:Phoenix、Cassandra、Hbase、Kudu、Hypertable。

文档数据库

文档型数据库是 NoSQL 中非常重要的一个分支,它主要用来存储、索引并管理面向文档的数据或者类似的半结构化数据。

目前业界比较流行的文档型数据库如下:MongoDb、CouchDB、OrientDB、MarkLogic。

键值存储数据库

目前业界比较流行的键值存储数据库如下:Redis、Memcached、Tair。

数据计算

大数据计算主要完成海量数据并行处理、分析挖掘等面向业务需求。大数据计算通过将海量的数据分片,多个计算节点并行化执行,实现高性能、高可靠的数据处理,同时提供分布式任务管理和调度的支撑。针对不同的数据处理需求,主要有大规模批量处理、流式计算、图计算、即席分析等多种计算。

 

 

流式计算(Streaming compute)

流式计算:利用分布式的思想和方法,对海量“流”式数据进行实时处理。流式计算更加强调计算数据流和低时延。这边所谓的流数据( streaming data)是一种不断增长的,无限的数据集。

流式计算是否等于实时计算?习惯上实时和流式等价,但其实这种观点并不完全正确。数据的发生的时间和处理时间有可能是不一致的,只能说流式计算是一种低延迟的计算方式。

注意:本文将微批处理和流处理混在一起。

业界常见的流式计算框架:Storm、Flink、Yahoo S4、Kafka Stream、Twitter Heron、Apache Samza、Spark Streaming。

大规模批量计算(batch compute)

大规模批量计算是对存储的静态数据进行大规模并行批处理的计算。批量计算是一种批量、高时延、主动发起的计算。习惯上我们认为离线和批量等价,但其实是不准确的。离线计算一般是指数据处理的延迟。这里有两方面的含义第一就是数据是有延迟的,第二是是时间处理是延迟。在数据是实时的情况下,假设一种情况:当我们拥有一个非常强大的硬件系统,可以毫秒级的处理 Gb 级别的数据,那么批量计算也可以毫秒级得到统计结果。

业界常见的大规模批量计算框架:Tez、MapReduce、Hive、Spark、Pig、大数据的编程模型 Apache Beam。

即席查询分析 (ad-hoc query)

大数据进行即席查询分析近两年日益成为关注领域。即席查询(Ad Hoc)是用户根据自己的需求,灵活的选择查询条件,系统能够根据条件快速的进行查询分析返回结果。即席查询和分析的计算模式兼具了良好的时效性与灵活性,是对批处理,流计算两大计算模式有力补充。大规模批量计算解决了大数据量批处理的问题,而即席查询分析则解决了适合商业智能分析人员的便捷交互式分析的问题。

业界常见的框架:Impala、Hawq、Dremel、Drill、Phoenix、Tajo、Presto、Hortonworks Stinger。

全量计算 & 增量计算

很多大数据的任务中,数据是一个增量收集和更新的过程,这时候对于数据的处理可以使是全量加上增量计算的方式。增量计算只对部分新增数据进行计算来极大提升计算过程的效率,可应用到数据增量或周期性更新的场合。典型例子就是搜索引擎的周期性索引更新。

相关基础知识:Lambda 架构、Kappa 架构、IOTA 架构。

业界常见框架:Microsoft Kineograph、Galaxy、Google Percolator、Druid。

图计算

图计算是一类在实际应用中非常常见的计算类型。许多大数据都是以大规模图或网络的形式呈现,如社交网络、传染病传播途径、交通事故对路网的影响许多非图结构的大数据,也常常会被转换为图模型后进行分析。图数据结构很好地表达了数据之间的关联性。要处理规模巨大的图数据,传统的单机处理方式已经无力处理,必须采用大规模机器集群构成的并行数据库。

相关基础知识:GAS 编程模型、BSP 模型、节点为中心编程模型、计算范型。

业界常见框架:Pregel、GraphChi、Spark GraphX、PowerGrah、Apache Giraph、Apache Hama。

分布式协调系统

大规模分布式系统中需要解决各种类型的协调需求,例如当当系统中加入一个进程或者物理机,如何自动获取参数和配置,当进程和物理机发生改变如何通知其他进程;单主控服务发生瘫痪,如何能够从备份中选取新的主控服务。分布式协调系统适用于大型的分布式系统,可以提供 统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等服务。

业界常见框架:Chubby、阿里 Diamond、阿里 ConfigServer、zookeeper、Eureka、Consul。

集群资源管理和调度

资源管理调度的本质是集群、数据中心级别的资源统一管理和分配,以提高效率。其中,多租户、弹性计算、动态分配是资源管理系统要核心解决问题。

管理调度框架:Omega、Brog、Mesos、Corona、Yarn、Torca。

管理和监控工具:Ambari、Chukwa、Hue。

工作流管理引擎

随着企业的发展,他们的工作流程变得更加复杂,越来越多的有着错综复杂依赖关系的工作流需要增加监控,故障排除。如果没有明确的血缘关系。就可能出现问责问题,对元数据的操作也可能丢失。这就是有向无环图(DAG),数据管道和工作流管理器发挥作用的地方。

复杂的工作流程可以通过 DAG 来表示。DAG 是一种图结构。信息必须沿特定方向在顶点间传递,但信息无法通过循环返回起点。DAG 的构建是数据管道,或者是一个进程的输入成为下一个进程的输入的顺序进程。

构建这些管道可能会很棘手,但幸运的是,有几个开源的工作流管理器可用于解决这个问题,允许程序员专注于单个任务和依赖关系。

业界常见框架:Oozie、Azkaban、Luigi、Airflow。

数据仓库

随着数据库技术和管理系统的不断发展和普及,人们已不再满足于一般的业务处理。同时随着数据量的不断增大,如何能够更好地利用数据,将数据转化成商业价值,已经成为人们越来越关心的问题。

举例来说,数据库系统可以很好地解决事务处理,实现对数据的“增删改查”等功能,但是却不能提供很好的决策分析支持。因为事务处理首先考虑响应的及时性,多数情况都是在处理当前数据,而决策分析需要考虑的是数据的集成性和历史性,可能对分析处理的时效性要求不高。所以为了提高决策分析的有效性和完整性,人们逐渐将一部分或者大部分数据从联机事物处理系统中剥离出来,形成今天的数据仓库系统。

数据挖掘

分析挖掘是通过算法从大数据红提炼出具有价值的信息和知识的过程。以机器和算法为主导,充分发挥机器在数据分析挖掘中的效率和可靠性的优势,提供对结构化数据以及文本、图像、视频和语言等非结构数据分析挖掘。数据分析挖掘包括一些通用的数据挖掘方法,也包括深度学习,机器学习,统计分析等。

 

 

数据测试

五 数据应用

大数据应用是整个大数据生命周期中最重要的一个环节之一。随着大数据应用越来越广泛,应用的行业也越来越低,每天都可以看到大数据的一些新奇的应用,从而帮助人们从中获取到真正有用的价值。下面和大家介绍下大数据应用方面相关技术。

基本概念

 

 

数据服务

 

数据可视化

人类的眼睛是一对高带宽巨量视觉信号输入的并行处理器,拥有超强模式识别能力,配合超过 50% 功能用于视觉感知相关处理的大脑,使得人类通过视觉获取数据比任何其他形式的获取方式更好,大量视觉信息在潜意识阶段就被处理完成,人类对图像的处理速度比文本快 6 万倍。

数据可视化正是利用人类天生技能来增强数据处理和组织效率。

 

数据共享

数据预警

 

应用部署

六 数据治理

过去的十年,我们经历了数据量高速膨胀的时期,这些海量的、分散在不同角落的异构数据导致了数据资源的价值低、应用难度大等问题。如何将海量数据应用于决策、营销和产品创新?如何利用大数据平台优化产品、流程和服务?如何利用大数据更科学地制定公共政策、实现社会治理?所有这一切,都离不开大数据治理。可以说,在大数据战略从顶层设计到底层实现的“落地”过程中,治理是基础,技术是承载,分析是手段,应用是目的。这个时候数据治理体系建设可能不是一个选择,而是唯一的出路。

 

 

元数据管理

元数据 MetaData 狭义的解释是用来描述数据的数据,广义的来看,除了业务逻辑直接读写处理的那些业务数据,所有其它用来维持整个系统运转所需的信息/数据都可以叫作元数据。比如数据表格的 Schema 信息,任务的血缘关系,用户和脚本/任务的权限映射关系信息等等。

管理这些附加 MetaData 信息的目的,一方面是为了让用户能够更高效的挖掘和使用数据,另一方面是为了让平台管理人员能更加有效的做好系统的维护管理工作。

数据质量

数据安全

没有安全做保障,一切大数据应用都是空谈。数据业务未来最大的挑战就是如何安全落地。特别是随着一些列数据安全的问题发生,对大数据的保护成为全球关注的热点。各个企业特别是掌握了海量用户信息的大型企业,有责任也有义务去保护数据的安全。

 

 

 

 

 

标签:存储,数据库,Hadoop,组件,Spark,数据,分布式
From: https://www.cnblogs.com/hanease/p/16937433.html

相关文章