1.MapReduce

问题1:硬盘的存储容量提升飞快,但是读取速度没有跟上
方案:同时从多个硬盘上读数据
问题2:可能发生硬件故障,数据丢失
方案:系统保存文本的复本,发生故障时使用,如沉余硬盘阵列(RAID),Hadoop的文件系统(HDFS)。
问题3:数据分析任务需要以某种方式结合大部分数据完成。
分布式系统可以结合不同来源的数据进行分析,但是如何确保正确性?
方案:MapReduce提出一个编程模型,该模型抽象出硬盘的额读写问题将其转换为对一个数据集(由键-值对组成)的计算。计算由map和reduce两部分组成,只有这两部分提供对外的接口。

问题4:MapReduce基本上是一个批处理系统不适合交互式分析,一条查询的执行时间很长,只适合离线使用。
方案:在线访问组件HBase,一种使用HDFS做底层存储的键值存储模型,通过单行的读写和数据块的读写批操作,可用于构建应用。
YARN一种集群资源管理系统,允许任何分布式程序(不仅MapReduce)基于Hadoop集群的数据运行。

2.Hadoop

第一个用于数据存储和分析的分布式系统

2.1与传统关系型数据库(RDBMS)的差异

(1)RDBMS在更新小部分数据时有优势(B树特性),MapReduce在大数据有优势
RDBMS建立索引,对点查询和更新有优势,MapReduce适合一次写入,多次读取

Hive这种的Hadoop系统不同于MapReduce更有交互性,增加索引和事务特性,与RDBMS更像了。

(2)Hadoop对非结构化数据(无特别内部结构:纯文本图像等)和半结构化数据(可忽略的结构:电子表格,结构是单元格,单个每个单元格可存储任何形式的数据)非常有效

2.2读时模式和写时模式

在传统数据库里,表的模式是在数据加载时强制确定的。如果在加载时发现数据不符合模式,则被拒绝加载数据。因为数据是在写入数据库是对照模式进行检查,因此这一设计有时
被称为“写时模式”(schema on write)

Hive这种类型的数据处理模式对数据的验证并在不加载数据时进行,而在查询时进行。这称为“读时模式”(schema on read)。

2.3ETL

ETL是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程。