大数据背景
对于业务数据数据量的暴增,用户智能化需求提升。在这个DT的时代,大数据的开发也就应运而生了,大数据开发必须解决两个问题,大数据量如何统一存储,大数据量如何统一计算。针对这些问题产生了很多大数据方面的技术框架。到今天为止,大数据方面的技术可以说已经相当成熟,BAT在大数据方面都应用十分的广泛,大数据量的分析使得数据更有了价值,运营有了通过大数据的分析可以做出精确的营销计划,通过收集用户的操作日志,分析用户行为,给出用户精确和有价值的推荐。人工智能也是通过海量数据做分析,通过算法做出智能准确的行为。
大数据hadoop的应用
大数据应用分析
- 统计
- 推荐
- 机器学习
- 人工智能,预测(算法)
SQL on Hadoop
- Hive
- Phoneix(基于HBase)
- Spark SQL
hadoop 2.x 的概述
- hadoop 包含的四大模块
==Hadoop Common== 为其他Hadoop模块提供基础设施。 ==Hadoop HDFS== 一个高可靠、高吞吐量的分布式文件系统 ==Hadoop MapReduce== 一个分布式的离线并行计算框架 ==Hadoop YARN== 一个新的MapReduce框架,任务调度与资源管理复制代码
上述可以看出Hadoop的重点就主要包含三部分,hdfs存储,MapReduce分布式计算过程,Yarn管理计算任务,包含了资源调度,任务协调,任务监控。
-
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.报表计算 报表计算过程平台管理,任务提交,计算频率等平台的治理和数据的结果展示。 以下两张图是基于离线和实时的系统开发架构图:复制代码
- 离线系统架构图
- 实时系统架构图
此外,大数据免费资料可通过百度云连接获取,链接为,获取码spty
,关注公众号获取更多内容!