读书笔记Hadoop实战1

注:之前写过MapReduce程序,所以对Hadoop和MapReduce编程有一些了解,现在正在阅读《Hadoop实战》一书,这里主要是记下对自己有用的一些点,完全不能覆盖书中的全部要点。想要学习MapReduce入门的同学请移尊步,勿浪费时间。

这里是我觉得不错的几个入门文章:

http://www.cnblogs.com/forfuture1978/category/300670.html

http://blog.csdn.net/aidayei/article/details/6580277

http://www.cnblogs.com/mdyang/category/307547.html

http://www.cnblogs.com/wycg1984/category/238035.html

 

----------------------------------------------------------分割线------------------------------------------------------------

 

SETI@home:志愿者计算(volunteer compute)的典型应用,详见百度百科词条SETI@home , 维基百科词条SETI@home

 

代码向数据迁移的理念:

数据被拆分后在集群中分布,代码被分发到集群中的节点,并且尽量使一段数据的计算发生在存储该数据的节点上,即 计算向存储靠近。

 

比较SQL数据库和Hadoop集群:

SQL往往代表了一整套传统技术(关系型数据库理论和技术),通过主要的几个厂商,应用程序历史悠久。这种SQL与Hadoop差别很大,但SQL是一种查询语言,原则上SQL和Hadoop可以结合,例如,Hadoop可以作为SQL的执行引擎,目前已有这样的项目。SQL与Hadoop的对比如下:

    1.scale out 代替scale up。scale out :横向扩展,增加更多的常规组件。scale up :纵向扩展,提高已有组件的性能。

    2.key/value存储代替关系表。key/value更灵活。大量的数据集往往是非结构化的或半结构化的。

    3.函数式编程(MapReduce)代替声明式查询(SQL)。

    4.离线批处理代替在线处理。Hadoop本身即是为大量数据处理而生的,它并不适合对少量数据进行在线事务处理,它最适合一次写入,多次读取的处理模式。

MapReduce编程:

Hadoop本身已经处理了可能出现的集群节点故障,文件拆分,代码分发等,程序员只需要关心数据流的变化,甚至可以说,程序员只需要关系一种键值对怎样变成另一种键值对就行了。具体编程时,主要是写mapper和reducer这样的两个函数,用来进行键值对的演化。Hadoop本身提供的默认的分区partitioning和shuffling等已经具有较强的适用性,当然程序员也可以按需设置这些函数。 

Hadoop历史:

Hadoop一开始时是Nutch的子项目,Nutch(搜索引擎)是Apache Lucene(文本索引查询)的子项目(一种扩展)。创立者 Doug Cutting。Nutch被设想作为一个开放民主的搜索引擎,以代替Google等商业产品的垄断技术。Hadoop现在是Apache顶级项目,应用很广。

Google在04年发表了两篇论文,GFS(Google File System)和Mapreduce框架(二者连同Bigtable被称为Google的三驾马车),Doug看到这些技术可以应用到Nutch,后来就有了Hadoop。Doug在06年加入雅虎,雅虎对Hadoop贡献良多。

Hadoop名字来源于Doug女儿给一个黄色大象毛玩具起的名字,项目图标也是一直黄色大象。

 

 <本文对应Hadoop实战第一章的内容,为个人的读书笔记>

原文地址:https://www.cnblogs.com/apprentice89/p/2672418.html