第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用户提供