大数据技术选型

数据仓库的概念

数据仓库的输入输出

输入:

1.1 日志采集系统

1.2 业务系统数据库

1.3 爬虫系统等

输出:

1.1.2 报表系统

1.1.3 用户画像

1.1.4 推荐系统

1.1.5 机器学习

1.1.6 风控系统

项目的技术选型

数据的采集传输: Flume Kafka Sqoop Logstash DataX

  • Flume:可同时做为数据的生产者和消费者,主要用来作为日志的采集工作

  • Kafka:作为一个可分布式消息订阅系统,底层使用Scala编写,可水平扩展消息发送与存储的吞吐量,避免的jvm内存与系统内存之间的频繁交换,使用零缓存技术从而加快了数据的读写,减少对象的创建与回收,常用于日志的批量收集与发送,主要用来作消息的分发和削峰填谷

  • Sqoop:作为Hadoop底层文件系统Hdfs与关系型数据库的传输管道,优点它几乎可以和任何大数据框架无缝集成,缺点是必须以Hadoop底层的 MapReduce 作为依赖才能运行

  • Logstash :数据收集引擎,作用类似于Kafka,相对于Kafka来说优点为Logstash 的内部有一个跨节点保护的机制,从而可以实现多节点同时输入输出数据,这就与Kafka形成了鲜明的对比,Kafka只能由主节点完成所有的数据读写操作,备用节点只能同步主节点的数据来起到一个备份的效果,Logstash 缺点是比较消耗资源,对Cpu和内存占用较高,且没有消息队列缓存,数据容易丢失

  • DataX:离线数据同步工具,作用类似于Sqoop ,与Sqoop 相比更加灵活不依赖MapReduce ,且不支持分布式!!!(很重要!)单机压力过大,对于数据量过大的表的抽取速度要慢很多,需要在各个节点上都安装部署客户端,不支持自动创建表和分区,配置文件比较繁琐,有点为对于脏数据的数量更加智能,提供多种模式的数据处理,丰富的数据转换功能,可实现数据快照功能,可对数据轻松实现,脱敏,补全,过滤,还支持自定义函数

数据的存储: Mysql Hdfs HBase Redis MongoDB

  • Mysql:关系型数据库,在大数据项目中主要存储ETL之后的数据

  • Hdfs:Hadoop分布式文件存储系统,将大的文件分成一个个小的文件块存储在不同节点上通常一个块的大小为128M的小单元,一个块存在多个副本

  • HBase:完全基于Hadoop的半结构化数据库,支持PB级别的数据存储,可以和MapReduce无缝衔接,是一种基于列族存储的数据库,可以和Es查询引擎实现PB级别秒查询,支持动态节点挂载,实现原理是可以简单的理解为,四维定位单条最小数据, 数据唯一标识+时间戳+列族+列 的方式来定位一条数据,批量相同的数据可由版本号来控制

  • Redis:缓存数据库,也叫基于内存存储的数据库,一般用在一些需要重复查询的业务场景中使用,可支持sql语言,主从机制为从服务器每秒会去主服务器上拉取数据,主服务器可以执行读写操作,从服务器只能执行读操作,一般在搭建时,可将读写操作由主从服务器分别执行,从而实现读写分离,其中哨兵机制用来监控主从服务器的工作状态与故障转移

  • MongoDB:数据模型是面向文档式的,类似于JSON结构,非结构化数据库

数据的计算:Hive Tez Spark Flink Stom

  • Hive:基于Hadoop的一种数仓工具,可将 SQL语句转变成MapReduce任务来执行,适用于大批量不可变数据作业,不支持实时查询

  • Tez:基于 yarn 之上的应用框架,将多个依赖作业转为一个(这样就只需要写入一次Hdfs,节省中间环节所用的时间)

  • Spark :快速通用计算引擎,基于内存的计算引擎,不需要在从Hdfs上拉取数据,再通过DAG有向无环图,来切分任务的执行顺序,是一种弹性分布式计算框架,底层是有一个个RDD(弹性分布式数据集)构成的,RDD是有由可变的 partition 组成的,函数是作用在partition上面的,每一个RDD之间又有一定的依赖关系,这些依赖关系由不同的算子组成,算子一共分为三大类:转换算子,执行算子(也叫触发算子)和持久化算子,实现了计算向数据靠拢的思想,在特定场景下,比如高度迭代计算场景和准实时微批流式计算场景下速度大约是MapReduce的一百倍

  • Flink:分布式流式计算框架, 支持毫秒级计算,而Spark则只能支持秒级计算 , 具有对迭代自动优化的功能,在迭代式数据处理上,比Spark更突出,Flink基于每个事件一行一行地流式处理 ,而且支持内存定制化管理功能,对比Spark不容易出现OOM(内存溢出异常)

  • Stom:也是流式计算框架,是来一条数据就处理一条数据,这一点和 Spark Streaming 的分段式处理数据不太一样, 最大的差别是Spark Streaming是模拟的流式计算,延迟高但是吞吐量较大,拓展性强;而storm速度快吞吐量小;storm存在数据重复的问题;而flink则较好的解决了两个框架的问题,除了比较新,要考虑学习成本和扩展能力。

你可能感兴趣的:(总结)