【总结】
- 大数据概况
- 背景
- 普通文件系统
- 单机的
- 不能跨不同的机器
- 现状
- Hadoop生态圈
- 别称:Hadoop泛生态圈
- 目的:处理超过单机尺度的数据处理
- 图解
- HDFS
- Hadoop Distributed FileSystem
- 目标:能存得下大量的数据
- 并管理好,处理好数据
- 目的:支持大量的数据能横跨成百上千台机器
- 效果:看到的是一个文件系统
- 而不是很多文件系统
- 举例
- 要获取/hdfs/tmp/file1的数据
- 引用的是一个文件路径
- 实际的数据存放在很多不同的机器上
- 大数据发展历史
- 计算引擎:管理好大的数据
- 第一代:MapReduce
- 简化的计算模型
- 只有Map和Reduce两个计算过程
- 中间用Shuffle串联
- 图解
- 效果
- 可以处理大数据领域很大一部分问题
- 缺点
- 虽然好用,但很笨重
- 第二代:Tez和Spark
- 特点
- 支持内存Cache
- 目的
- 让Map/Reduce模型更通用,让Map和Reduce之间的界限更模糊
- 数据交换更灵活,更少的磁盘读写
- 更方便地描述复杂算法,取得更高的吞吐量
- 高层抽象:Pig和Hive
- 背景
- MapReduce就像汇编语言
- 虽然什么都能干,但是写起来复杂繁琐
- 所以需要更高层更抽象的语言层
- 描述算法和数据处理流程
- 出现Pig和Hive
- Pig和Hive
- 上层
- Pig
- 接近脚本方式去描述MapReduce
- Hive
- 用SQL去描述MapReduce
- 底层
- 把脚本和SQL语言翻译成MapReduce程序
- 丢给计算引擎去计算
- 效果
- 写起来方便多了
- 数据分析人员,不用去求软件工程师写Java
- 可以自己写SQL去数据统计了
- 举例
- 词频统计
- MapReduce:大约要几十上百行
- Hive的SQL:只有一两行
- 提升速度:Impala、Presto、Drill
- 背景:
- Hive在MapReduce上跑,非常慢
- 交互SQL引擎:Impala、Presto、Drill等
- 核心理念:
- MapReduce引擎太慢,因为它太通用,太强壮,太保守
- SQL需要更轻量,更激进地获取资源,更专门地对SQL做优化
- 不需要那么多容错性保证
- 因为系统出错了大不了重新启动任务,如果整个处理时间更短的话,比如几分钟之内
- 效果:
- 更快速地处理SQL任务
- 牺牲了通用性稳定性等特性
- 类比:
- MapReduce:大砍刀,啥都能砍
- Impala、Presto、Drill:3个剔骨刀,灵巧锋利
- 但是不能搞太大太硬的东西
- 其他异类:Hive on Tez / Spark、SparkSQL
- 背景
- Impala、Presto、Drill等,没有达到预期效果,不是很流行
- Hive on Tez / Spark和SparkSQL
- 设计理念
- MapReduce慢
- 我用新一代通用计算引擎Tez或者Spark来跑SQL,那我就能跑的更快
- 好处
- 不需要维护两套系统
- 效果
- 基本的数据仓库的构架
- 作用:中低速数据处理
- 举例
- 3层
- 再上面跑Hive,Pig
- 上面跑MapReduce/Tez/Spark
- 底层HDFS
- 2层
- 上面直接跑Impala,Drill,Presto
- 底层HDFS
- 更高速的处理
- 背景
- 前面系统和架构只能处理中低速度
- 针对高速处理:
- 出现新计算模型:Streaming(流)计算
- 最流行的流计算平台:Storm
- 流计算
- 思路
- 在数据流进来的时候就处理,达到更实时的更新
- 举例
- 词频统计
- 数据流是一个一个的词
- 让他们一边流过我就一边开始统计
- 特点
- 优点
- 实时计算,无延迟
- 缺点
- 不够灵活
- 想要统计的东西必须预先知道
- 毕竟数据流过就没了,你没算的东西就无法补算
- 结论
- 是个很好的东西
- 但是无法替代上面数据仓库和批处理系统
- 其他独立模块和细分领域
- KV Store=键值对
- 核心特点
- 给定key键,可以快速获取到value值
- 举例
- 用身份证号key,能取到你的身份数据value
- MapReduce:也能完成, 但是要扫描整个数据集,速度很慢
- KV Store对此操作的存和取都专门优化,速度很快
- 几个P的数据中查找一个身份证号,也许只要零点几秒
- 理念和特点
- 虽然
- 基本无法处理复杂的计算
- 大多没法JOIN
- 也许没法聚合
- 没有强一致性保证
- 不同数据分布在不同机器上,你每次读取也许会读到不同的结果,也无法处理类似银行转账那样的强一致性要求的操作
- 但是
- 速度就是快,非常快,极快
- 注:
- 每个不同的KV Store设计都有不同取舍
- 有些更快
- 有些容量更高
- 有些可以支持更复杂的操作
- 典型系统
- Cassandra
- HBase
- MongoDB
- 更特制的系统/组件
- 分布式机器学习库
- Mahout
- 数据交换的编码和库
- Protobuf
- 高一致性的分布存取协同系统
- ZooKeeper
转载请注明:在路上 » 【整理】大数据 相关术语概念