<返回更多

大数据平台开发架构讲解

2019-10-08    
加入收藏

大数据背景

对于业务数据数据量的暴增,用户智能化需求提升。在这个DT的时代,大数据的开发也就应运而生了,大数据开发必须解决两个问题,大数据量如何统一存储,大数据量如何统一计算。针对这些问题产生了很多大数据方面的技术框架。到今天为止,大数据方面的技术可以说已经相当成熟,BAT在大数据方面都应用十分的广泛,大数据量的分析使得数据更有了价值,运营有了通过大数据的分析可以做出精确的营销计划,通过收集用户的操作日志,分析用户行为,给出用户精确和有价值的推荐。人工智能也是通过海量数据做分析,通过算法做出智能准确的行为。

大数据hadoop的应用

大数据应用分析

  1. 统计
  2. 推荐
  3. 机器学习
  4. 人工智能,预测(算法)

SQL on Hadoop

  1. Hive
  2. Phoneix(基于HBase)
  3. Spark SQL

hadoop 2.x 的概述

hadoop 包含的四大模块

==Hadoop Common== 为其他Hadoop模块提供基础设施。	==Hadoop HDFS== 一个高可靠、高吞吐量的分布式文件系统	==Hadoop MapReduce== 一个分布式的离线并行计算框架	==Hadoop YARN== 一个新的MapReduce框架,任务调度与资源管理

上述可以看出Hadoop的重点就主要包含三部分,hdfs存储,MapReduce分布式计算过程,Yarn管理计算任务,包含了资源调度,任务协调,任务监控。

在这里还是要推荐下我自己建的大数据学习交流群:199427210,群里都是学大数据开发的,如果你正在学习大数据 ,小编欢迎你加入,大家都是软件开发党,不定期分享干货(只有大数据软件开发相关的),包括我自己整理的一份最新的大数据进阶资料和高级开发教程,欢迎进阶中和进想深入大数据的小伙伴加入。

HDFS 服务功能

大数据平台开发架构讲解

 

 

==NameNode== 主节点,存储文件的元数据如文件名,文件目录结构,文件属性(生成时间,副本数,文件 权限),以及每个文件的块列表和块所在DataNode等。 ==DataNode== 在本地文件系统存储文件块数据,以及块数据的校验和。 == Secondary NameNode== 用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照

- YARN 服务功能

大数据平台开发架构讲解

 

==ResourceManager== 处理客户端请求 启动/监控ApplicationMaster 监控NodeManager 资源分配与调度 ==NodeManager== 单个节点上的资源管理 处理来自ResourceManager的命令 处理来自ApplicationMaster的命令 ==ApplicationMaster== 数据切分 为应用程序申请资源,并分配给内部任务 任务监控与容错 ==Container== 对任务运行环境的抽象,封装了CPU内存等多维资源以及环境变量、启动命令等任务运行相关的信息.

- 离线计算框架 MapReduce

大数据平台开发架构讲解

 

 

== map和reduce== map 阶段并行处理输入数据 reduce 阶段对map 结果进行汇总。 ==shuffle == 连接map 和Reduce 两个阶段 map task 将数据写到本地磁盘 reduce task 从每个map TASK 上读取一份数据 特点: 仅适合 离线批处理 具有很好的容错性和扩展性 适合简单的批处理任务 缺点明显 启动开销大,过多使用磁盘导致效率底下等。

大数据开发过程离线和实时常用的技术框架简介

大数据平台开发架构讲解

 

==nutch==爬虫取文本数据; 数据是半结构化数据==flume==准备日志数据==Scribe==是Facebook开源的日志收集系统. 它能够从各种日志源上收集日志,存储到一个中央存储系统上,以便于进行集中统计分析处理==RDBMS==(关系数据库管理系统)管理和存放在数据库 ==sqoop==可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中==Oozie==是一个工作流引擎服务器,用于运行Hadoop Map/Reduce和Pig 任务工作流==Mapreduce==是主要操作逻辑和引擎, map是分配, reduce是合并==HDFS==是分布式文件存储系统==HBase==快速存储, 快速响应查询==Jaql== 是一个 JSON 的查询语言,用于简化 JSON 数据的建模和操作,主要用于分析大规模的半结构化数据。==Hue==是一个可快速开发和调试Hadoop生态系统各种应用的一个基于浏览器的图形化用户接口。==mahout==对数据进行分析; 我们要学习好如何使用好来分析; 提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。Mahout包含许多实现,包括聚类、分类、推荐过滤、频繁子项挖掘。

针对上述的生态圈做一个简单的说明:

对于大数据开发的步骤,第一步当然是数据来源的来源,爬虫技术,mutch当然也可以使用诸如Python的其他框架,公司中常用的还有通过前端接口收集,flume日志采集。采集到的数据入hdfs文件,第二步数据采集之后,需要日志解析,日志解析公司一般会自己开发,实现方式可以是mapreduce计算实现原始日志简单清洗和入库hive。第三步是日志分析,通过简单的sql可以实现对业务数据分析,简单的编写sql如hivesql,sparksql可以进行计划,如何实现任务流管理就需要用到oozie,数据的分析计算结果最后结果写入高性能,读写数据快的数据存储系统,例如关系型数据库mysql,sqlserver 或者HBase。以上基本的离线开发流程就。对于一些业务多维度的分析可能需要事先进行预计算比如使用kylin的cube。

对于实时的技术,一般的数据源是日志收集之后写入kafka,然后通过sparkStreaming或者Strom,现在比较流行的还有flink,这些框架都是基于内存去进行分布式计算,用空间换时间,达到实时的计算。

离线开发和实时开发系统架构说明

系统架构说明:

本系统架构基于真实的大数据平台构建:

基本的数据结构说明:

1.日志数据

来源:

1.APP的接口埋点或者其他渠道埋点

2.外部数据DB同步到hive

3.维度数据,用做于一些关联

对于日志数据可以分为两类,底层基础业务数据和维度配置数据。

业务数据量庞大,一般天,小时分区,维度数据可以使用拉链。也可以做mr同步。

2.计算引擎

如何实现各个不同位置数据的交互,比如hive到mysql或hbase的数据交换

3.计算依赖

如何实现一个工作流的计算oozie,sprak中的有向无环图,当然也可以自己实现计算依赖逻辑。

4.报表计算

报表计算过程平台管理,任务提交,计算频率等平台的治理和数据的结果展示。

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>