简介:
Hadoop起源于Nutch。当人们试图构建一个开源网络搜索引擎,但在管理在少数计算机上运行的计算时遇到了麻烦。后来Google发表了GFS和MapReduce相关介绍,路线就变得清晰了。他们设计了系统来精确解决在使用Nutch是遇到的问题。
设置,配置,编写程序以使用Hadoop是一门艺术。
Hadoop权威指南:Part 1. Funfamental components in Hadoop
目录
4 Hadoop's cluster resource management system
5 I/O building blocks in Hadoop
1 Meet Hadoop
对于庞大的数据,不应该尝试使用更大的计算机进行计算,而是应该尝试更多的计算机系统。
1.1-数据:
当存储成本下降到足以存储连续的音频和视频时,对于数据存储的需求量将是现在的数倍。同时作为,物联网的一部分的机器产生的数据量比人产生的数据量还要多,例如机器日志,RFID阅读器,传感器,车辆GPS跟踪,零售交易等,都促成了不断增长的海量数据。
另外。公开数据量在逐年增加。组织不再需要仅仅管理自己的数据,未来的成功将在很大程度上取决于他们从其他组织的数据中提取价值的能力。
1.2-数据存储和分析:
尽管硬盘的存储容量多年来大幅增长,但访问速度即从硬盘读取数据的速度没有跟上。同时一旦开始使用许多硬件,其中一个发生故障的可能性相当高。RAID避免数据丢失的一种常见方法是通过复制:系统保存数据冗余的副本,以便在发生故障时还有副本可以被使用。Hadoop的分布式文件系统HDFS可以直面这种挑战。
大数据分析任务需要以某种方式组合数据。各种分布式系统允许组合来自多个来源的数据。这是有挑战的。MapReduce提供了一种编程模式,将问题从磁盘读写抽象出来,将其转换为对一组键和值的计算。
简单来讲,Hadoop多提供的是一个可靠的,可扩展的存储和分析平台。
1.3-查询所有数据:
MapReduce是一个屁处理查询处理器,对整个数据集运行临时查询并合理的时间内获得结果的能力。它改变了人们对数据的看法,并解锁了以前存档在磁盘或磁带上的数据。
1.4-超越批次:
MapReduce本身是一个批处理,不适合交互式分析。无法在几秒或者更短的时间内查询并获的结果。
提供在线访问的第一个组件是HBase,是一个使用HDFS作为其底层存储键值对存储。它提供单个行的在线读/写访问和批量读写数据的批处理操作。
Hadoop中新处理模型的真正推动是Hadoop2中引入了YARN。它是一个集群资源管理系统,它允许任何分布式程序(不仅是MapReduce)在数据上运行一个Hadoop集群。
1.5-Hadoop不同处理模式:
交互式SQL
迭代处理
流处理
搜索
1.6-与其他系统比较:
关系数据库管理系统:
MapReduce可以视为对关系数据库补充的管理系统。MapReduce适合需要分析整个数据集的问题(批处理)。特别是临时分析。RDBMS适合查询或更新,其中数据集以被索引提供低延迟检索和更新相对少量的数据。MapReduce适合数据所在的应用程序一次编写,多次读取。RDBMS适合对数据不断更新。
随着Hive等Hadoop系统正在变得更具交互性(通过远离MapReduce)并添加索引和事务等功能使他们看起来越来越像传统的RDBMS。
2 MapReduce
是一种数据处理的编程模型。它的程序本质上是并行的,因此可以将非常大规模的数据分析交到任何拥有足够机器的管理者手中。它为大型数据集提供了自己的解决方案。
2.1-数据格式:
数据使用面向行