在大数据背景下存在的问题:
非结构化、半结构化数据:NoSQL数据库只负责存储;程序处理时涉及到数据移动,速度慢
是否存在一套整体解决方案?
可以存储并处理海量结构化、半结构化、非结构化数据
处理海量数据的速度很快,且扩展性强
大数据:数据达到一定规模以后,对数据进行存储和计算的技术
大数据的特征包括:
- 数据规模巨大(Volume)
- 生成和处理速度极快(Velocity)
- 数据类型多样(Variety)
- 价值巨大但密度较低(Value)
场景
离线和实时区分:数据是否有界。
离线:数据产生以后存起来(如10G),以后不会增加或减少,以后的计算都是这么大。(断网也可以断网)。--------适合批处理
实时:数据产生后直接计算。------适合流处理
生态
传统单机架构:比如在OS上安装了MySQL,OS为mysql提供了文件系统、通用计算(比如sql转成os的指令来执行)、资源管理。
大数据:有没有操作系统底层就是管理多个机器的?没有。所以我们要在软件层面来实现把OS构建成分布式的,然后这些分布式分别装不同组件。Hadoop
大数据开发的工作内容:
如果做数仓,就用sqoop把数据抽到HDFS,用spark或者mapreduce进行数据清洗,计算的结果放在Hive里或者sparksql。中间这些任务调度用Oozie或Azkaban。
对于流处理来说,用flume或lagstach去监控非结构化或半结构化的数据,用OGG/CDC监控数据库日志(结构化),把这些数据实时抽取到kafak,然后由流引擎,比如sparkes生态圈的spark streaming,或flink进行处理,数据处理之后再把结果存到HBase里进行保存或者es。
Hadoop分布式文件系统,有三个核心子项目(HDFS、Yarn、Mapreduce),围绕着这三个子项目发展出来的生态就是Hadoop生态圈。
HDFS
架构