大数据平台是对海量结构化、非结构化、半机构化数据进行采集、存储、计算、统计、分析处理的一系列技术平台。大数据平台处理的数据量通常是TB级,甚至是PB或EB级的数据,这是传统数据仓库工具无法处理完成的,其涉及的技术有分布式计算、高并发处理、高可用处理、集群、实时性计算等。
所有的大数据相关所用到的技术都是基于Hadoop生态圈的
Hadoop是一个开源的分布式存储及计算框架,被广泛用于海量数据的存储及处理。
HDFS是运行在普通硬件之上具备高吞吐量支持大数据集的分布式文件系统。
MR 是构建在计算机集群上的分布式大规模数据并行计算框架,用于大规模数据集的并行计算。
HBase是构建在HDFS文件系统之上的、支持非结构化/半结构化存储的、面向列的、大规模分布式存储系统,是一个典型的NoSQL数据库。可以用来和Phoenix集成,提供类Sql的数据查询。
Zookeeper是大型分布式系统的高可用协调服务,例如维护分布式集群的配置或命名信息,实现这些配置信息的协调与同步。在HDFS中,Zookeeper通常用来监控Name Node的运行状态,并实现Name Node的主备切换。HBase、Kafka等也依赖于Zookeeper做高可用来做主节点的选举等工作。
Hive是建立在Hadoop之上的数据仓库解决方案,数据以HDFS存储,提供HQL(类SQL)实现方便高效的数据查询,经常用来建数据仓库做数据分析。
Sqoop是是可以高效的让关系型数据库和大数据平台存储系统进行数据迁移的框架(MySql--》HDFS 、HBase、Hive),Sqoop分为Sqoop1和Sqoop2,Sqoop1灵活、简单、易用,Sqoop2通用性更强,需要配置link和job比较繁琐
Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。
Kafka是由LinkedIn开发的一个分布式的消息系统,用来做实时数据的采集,也经常用来当作缓冲组件。
分布式内存计算框架,包括SparkSql,Spark Streaming、Spark MLlib;
SparkSql提供类Sql来实现查询和分析;
Spark Streaming用来做流处理,近实时处理;
Spark MLlib用来做机器学习;
分布式流处理框架、实时处理。
分布式流处理框架、实时处理、批处理。
Phoenix是用Java编写的基于JDBC API操作HBase的开源SQL引擎,其具有动态列、散列加载、查询服务器、追踪、事务、用户自定义函数、二级索引、命名空间映射、数据收集、时间戳列、分页查询、跳跃查询、以及视图的特性,大数据开发需掌握其原理和使用方法。
Kylin是一个开源的分布式分析引擎,提供了基于Hadoop的超大型数据集(TB/PB级别)的SQL接口以及多维度的OLAP分布式联机分析。最初由eBay开发并贡献至开源社区。它能在亚秒内查询巨大的Hive表。
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式、支持多用户的全文搜索引擎,基于RESTful Web接口。ElasticSearch是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索、稳定、可靠、快速、安装使用方便。
工作流的调度定时任务。
关系型数据库采集:Sqoop
实时数据采集:Flume、Kafka
Hive
Spark(基于RDD做清洗)
SparkSql(基于Sql)
Spark Streaming(近实时数据清洗、可以基于RDD、Sql)
MapReduce、Hive、Pig、Spark、Flink、Impala、Kylin、Storm、Mahout、MLlib
关系型数据库(Mysql、Oracle等)、HDFS、Hive、HBase、Redis(一般用来做缓冲)、ElasticSearch、Kudu、MongoDB。
Oozie、Azkaban
Hive是建立在Hadoop之上的数据仓库解决方案,数据以HDFS存储,提供HQL(类SQL)实现方便的数据分析和查询,常用来建数据仓库做数据分析。
事实表:记录分析内容的全量信息,包括每个事件的具体要素,具体发生事情。
维度表:事实表中事件的要素的描述信息观察事物的角度。
一般以事实表为中心维度表去发散把事实表和维度表关联成星型结构和雪花型结构去构建数据仓库。需要考量以下规则去构建较好的数仓
1、主题:业务相关、需求;
2、量度:统计指标、分析的技术指标;
3、确定粒度:最小粒度原则;
4、确定维度:各唯独的主键、层次、层级;
5、创建事实表:(粒度最小)数据条数尽量多。
1、数据的来源,是否含有结构化数据和非结构化数据以及半结构化数据,是否需要做数据的规整化处理;
2、数据的存储方式,以及存储流程、路径规划、存储格式、压缩方法;
3、对数据进行增量导入,实现数据的同步更新;
4、对数据的完整性进行校验是否有重复丢失,确保数据的保真性;
5、数据的处理流程:从一些杂乱的数据中清洗出业务系统需要的规整化数据;
6、实现清洗数据的增量导出确保不丢失不重复;
7、实现工作流定时任务调度:确保整体流程的定时化和自动化。