古代,人们用牛来拉重物。当一头牛拉不动一根圆木时,他们不曾想过培育 更大更壮的牛。同样,我们也不需要尝试开发超级计算机,而应试着结合使用更多计算机系统。
什么是Hadoop:
Hadoop提供了一个可靠的共享存储和分析系统。包括两大核心功能,存储层:HDFS一个分布式文件系统,处理层:MapReduce一个分布式并行计算框架。
Hadoop适合进行巨大的离线批处理数据,不适合实时任务
为什么需要Hadoop:
1.海量数据爆发...磁盘的容量快速增长,但是磁盘的访问速度却未与时俱进。
2.由于磁盘限制导致关系型数据库无法对大规模数据进行批量分析。
什么是MapReduce:
MapReduce是一个批量查询处理器,并且它能够在合理的时间范围内处理针对整个数据集的即时查询。
为什么需要MapReduce:
磁盘的发展趋势:寻址时间的提高远远慢于传输速率的提高。MapReduce适合以批处理的方式处理需要分析整个数据集的问题,尤其是即席分析。
RDBMS适合于点查询和更新,数据集被索引后,数据库系统能够提供延迟的数据检索和少量数据更新。MapReduce适合一次写入多次读取的应用,关系型数据库适合持续更新的数据集。
关系型数据库和MapReduce比较
关系型数据库 | MapReduce | |
数据大小 | GB | PB |
访问 | 交互式和批处理 | 批处理 |
更新 | 多次读写 | 一次写入多次读取 |
结构 | 静态模式 | 动态模式 |
完整性 | 高 | 低 |
横向扩展 | 非线性 | 线性 |
数据结构 | 结构化 | 非结构化 |
将来关系性数据库和MapReduce系统之间的差异可能变的模糊,关系型数据库开始吸收MapReduce的一些思路,MapReduce的高级查询语言使MapReduce系统更接近于传统的数据库编程模式。
Hadoop生态圈简述:
Common:一组分布式文件系统和通用I/O的组件与接口(序列化,Java RPC和持久化数据结构)
Avro:一种高效、跨语言的RPC以及永久存储数据的序列化系统。
MapReduce:分布式处理模型和执行环境,运行于大型商用机集群。
HDFS:分布式文件系统,运行于大型商用机集群。
Pig:一种数据流语言和运行环境,用以检索非常大的数据集。Pig运行在MapReduce和HDFS的集群上。
Hive:一个分布式、按列存储的数据仓库。Hive管理HDFS中存储的数据,并提供基于SQL的查询语言(由运行时翻译成MapReduce作业)用以查询数据。
HBase:一个分布式、按列存储的数据库。HBase使用HDFS作为底层存储,同时支持MapReduce的批量式计算和点查询(随机读取)。
ZooKeeper:一个分布式、可用性高的协调服务。ZooKeeper提供分布式锁之类的基本服务用于构建分布式应用。
Sqoop:在数据库和HDFS之间高效传输数据的工具