第1章:初识Hadoop

1.1 数据!数据!

我们生活在一个大数据的时代。各处都是数据

1.2 数据的存储与分析

硬盘容量在扩大,但是读写数据没有改变。就会导致读取大数据,数据变慢

那么就需要并行读取,但是会存在两个问题。

第一个问题: 硬件故障问题,故障容易照成数据丢失,所以需要进行备份。例如RAID、Hadoop的HDFS

第二个问题:不同磁盘的数据需要相互结合来完成计算,这里就需要用到Hadoop的MapReduce

所以,Hadoop解决了上面两个问题

1.3 查询所有数据

MapReduce看似是比较暴力的方法,但是却改变了之前的传统思维。依此来进行创新

1.4 不仅仅是批处理

MapReduce是一个批处理系统,也就是说他需要读取所有的数据,这必然会导致时间很长,所以不适合实时处理。

但是Hadoop还提出了新的方式,来实现实时处理

第一个是HBase,使用键值对的存储方式。

第二个是YARN。Yarn是资源管理系统,管理集群的资源。

近几年出现的能和Hadoop协同工作的技术

(1)Interactive SQL(交互式SQL)

在Hadoop上使用SQL进行数据的查询

(2)Iterative processing(迭代处理)

比如机器学习算法具有迭代器。

(3)Stream processing (流处理)

比如:Storm、Spark Streaming 或 Samza

(4)Search(搜索)

Solr搜索平台能够在Hadoop集群上运行。

1.5 相比于其他系统的优势

Hadoop相比于传统的关系型数据库还是有比较明显的优势。

1.5.1 关系型数据库管理系统

作者解释了为什么不用关系型数据库存储大数据。

第一:读取数据慢。第二: 如果需要大量的数,那么传统的效率没有MapReduce高

传统的数据库只能读取结构化的数据,而Hadoop可以存储非结构化的数据(纯文本或者图像)。

Hadoop的MapReduce可以并行处理,即使数据量增加,但是增加处理的机器,那么处理的速度是一样的。

1.5.2 网格计算

高性能计算将作业分散到不同的机器上,然后并行完成。而数据之间的交互是通过网络完成的。

然而带宽是有限的,如果让大数据用网络带宽传输,必然会导致速度慢。所以进入让数据本地化,在本台机器上进行完成。

并且多台机器执行任务的时候,那么需要协调各个机器,防止有机器执行失败,MapReduce也主要负责协调各个机器执行的运行。

1.5.3 志愿计算

Hadoop和志愿计算的区别。

志愿计算:志愿者把自己的CPU贡献出来,用于计算。总部将数据发送到志愿者的机器上,然后志愿者计算完成后将结果返回。防止欺骗,总部还会将同一个数据发给不同的3个人。

MapReduce有三大设计目标:(1)在几分钟到几小时内完成作业服务。(2)所有的机器在一个内部的高速网之中(3)各个机器都是可靠的

1.6 Apache Hadoop发展简史

Hadoop由Apache Lucence创始人道格 卡丁创建的

起初是为了解决数十亿网页的搜索问题,2003年发表的一篇GFS给了他们启发。在2004年,Nutch的开发者提出了NDFS

2004年,谷歌向全世界介绍的MapReduce系统。Nutch也实现了一个MapReduce

开发人员将Nutch中的NDFS和MapReduce移出,形成Lucene的一个子项目,命名为Hadoop。

2008年2月,雅虎宣布,雅虎搜索引擎拥有1万个机器的Hadoop集群。

2008年4月,Hadoop打破世界纪录,称为最快对TB级数据进行排序的系统。用时209秒

2014年,使用了Spark集群对100TB的数据排序,仅用时1406秒,意味着1TB的数据仅用时14秒

现在Hadoop在工业界已经成为公认的大数据通用存储和分析平台。

1.7 本书包含的内容

本书分为五大部分。 1-3部分讲解Hadoop核心。 4部分讲述Hadoop生态的相关项目。5部分讲述Hadoop实例学习。

第1章:对Hadoop的宏观介绍

第2章:简要介绍MapReduce

第3章:深入剖析Hadoop文件系统,特别是HDFS

第4章:讨论Hadoop集群资源管理系统YARN

第5章:讲述Hadoop的I/O构建模块


Ⅱ部分

第6章:全景呈现MapReduce应用开发所涉及的具体步骤

第7章:用户如何在Hadoop中实现MapReduce

第8章:包含MapReduce编程模型和MapReduce可以使用的各种数据格式

第9章:MapReduce高级主题,包括排序和数据连接

Ⅲ部分

第10章、第11章:描述如何设置和维护一个运行HDFS和YARN的Hadoop集群

Ⅳ部分

介绍Hadoop生态的其他项目

第12章:剖析Avro,Hadoop的一种跨语言数据序列化库

第13章:描述Parquet,一种嵌套式数据的列式存储

第14章、第15章:如果将数据输入Hadoop,包括Flume大批量输入,Sqoop支持结构化数据的传输

第16章:Pig:一种用于开发大数据集的数据流语言

第17章:Hive:数据仓库,通过SQL语言查询HDFS中存储的数据

第18章:Crunch:一种高层次的Java API,用于写运行在MapReduce或者Spark上的程序

第19章:Spark: 一个面向大数据处理的集群计算框架。提供DAG,以支持Scala、Java和Python语言的API

第20章:HBase,一种使用HDFS作为底层存储的数据库

第21章:Zookeeper:分布式高可用性的协调服务

Ⅴ部分:

收集了一些实例,用趣味的方式向Hadoop用户提供