20161209 10:43——12:00
Hadoop,The Apache™ Hadoop® project develops open-source software for reliable, scalable, distributed computing.
The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models. It is designed to scale up from single servers to thousands of machines, each offering local computation and storage. Rather than rely on hardware to deliver high-availability, the library itself is designed to detect and handle failures at the application layer, so delivering a highly-available service on top of a cluster of computers, each of which may be prone to failures.
openstack,是一个iaas云平台(云计算saas,paas,iaas中的iaas),是亚马逊aws的开源实现,简言之就是云计算的框架。openstack最牛的不是代码怎么样,算法怎么样而是架构最牛,类似于乾坤大挪移,可以嫁接和管理各种架构。从底层硬件架构是全部X86还是传统的IOE架构,操作系统是Ubuntu还是Redhat虚拟化是xen,kvm or Docker通通没关系,中间这层是openstack至于往上再怎么设计等等,就是传说中的太极剑法,只有剑意,没有剑式。
关于openstack和hadoop:
知乎网友clo G:
openstack是1化N,通过虚拟化的方式提供弹性灵活高利用率的计算能力。
hadoop是N化1,通过分布式文件系统提供强大的数据处理能力。
知乎网友Weberte Wu:
Openstack是把大机器虚拟成很多小机器从而达到大的分成小的来用,大大提高资源使用率。
Hadoop是把小机器合起来用,用于解决单台大机器无法解决的计算和存储等问题。
知乎网友李力:
1. openstack仿照的Amazon的云,hadoop仿照的是Google的云
2. openstack注重的是虚拟化/虚拟机及其配套的服务,hadoop注重的是海量的数据分析和处理 。
知乎网友王春泰:
Openstack是云操作系统,是将物理机虚拟化的云服务平台,包含各种管理组件及API。
Hadoop则是“云计算”中分布式计算核心:存储与计算。
Hadoop生态系统(讲解很详细、全面,且通俗易懂)
原文地址:http://lib.youkuaiyun.com/article/hadoop/42755
Hadoop介绍(较少参阅)
http://lib.youkuaiyun.com/article/hadoop/50999
Hadoop生态系统概述(配合《Hadoop生态系统》一文学习)
http://lib.youkuaiyun.com/article/20/50996?knId=526
Hadoop的起源
Doug Cutting是Hadoop之父 ,起初他开创了一个开源软件Lucene(用Java语言编写,提供了全文检索引擎的架构,与Google类似),Lucene后来面临与Google同样的错误。于是,Doug Cutting学习并模仿Google解决这些问题的办法,产生了一个Lucene的微缩版Nutch。(Lucene——微缩版Nutch )
后来,Doug Cutting等人根据2003-2004年Google公开的部分GFS和Mapreduce思想的细节,利用业余时间实现了GFS和Mapreduce的机制,从而提高了Nutch的性能。由此Hadoop产生了。(高性能版Nutch)
Hadoop于2005年秋天作为Lucene的子项目Nutch的一部分正式引入Apache基金会。2006年3月份,Map-Reduce和Nutch Distributed File System(NDFS)分别被纳入Hadoop的项目中。( NDFS, 别于 HDFS(Hadoop Distributed File System ))
关于Hadoop名字的来源,是Doug Cutting儿子的玩具大象。( Hadoop命名及项目组件mapreduce+NDFS)
Hadoop是什么
Hadoop是一个开源框架,可编写和运行分布式应用处理大规模数据。 Hadoop框架的核心是HDFS和MapReduce。其中 HDFS 是分布式文件系统,MapReduce 是分布式数据处理模型和执行环境。
在一个宽泛而不断变化的分布式计算领域,Hadoop凭借什么优势能脱颖而出呢?
1. 运行方便:Hadoop是运行在由一般商用机器构成的大型集群上。Hadoop在云计算服务层次中属于PaaS(Platform-as-a- Service):平台即服务。
2. 健壮性:Hadoop致力于在一般的商用硬件上运行,能够从容的处理类似硬件失效这类的故障。
3. 可扩展性:Hadoop通过增加集群节点,可以线性地扩展以处理更大的数据集。
4. 简单:Hadoop允许用户快速编写高效的并行代码。
Hadoop的生态系统
Nutch,互联网数据及Nutch搜索引擎应用
HDFS,Hadoop Distributed File System,Hadoop的分布式文件系统
MapReduce,分布式计算框架
Flume、Scribe,Chukwa数据收集,收集非结构化数据的工具。
Hiho、Sqoop,讲关系数据库中的数据导入HDFS的工具
Hive数据仓库,pig分析数据的工具
Oozie作业流调度引擎
Hue,Hadoop自己的监控管理工具
Avro 数据序列化工具
mahout数据挖掘工具
Hbase分布式的面向列的开源数据库
Hadoop1.0与Hadoop2.0的区别。Hadoop1.0的核心由HDFS(Hadoop Distributed File System)和MapReduce(分布式计算框架)构成。而在Hadoop2.0中增加了Yarn(Yet Another Resource Negotiator),来负责集群资源的统一管理和调度。
HDFS(分布式文件系统)概述
HDFS源自于Google发表于2003年10月的GFS论文,也即是说HDFS是GFS的克隆版。
此处只是HDFS的概述,如果想了解HDFS详情,请查看HDFS详解这篇文章。
HDFS具有如下特点:
良好的扩展性
高容错性
适合PB级以上海量数据的存储
HDFS的基本原理
将文件切分成等大的数据块,存储到多台机器上
将数据切分、容错、负载均衡等功能透明化
可将HDFS看成容量巨大、具有高容错性的磁盘
HFDS可保障在整个集群中发生故障错误时的数据冗余。当计算完成时将结果写入HFDS的一个节点之中。HDFS对存储的数据格式并无苛刻的要求,数据可以是非结构化或其它类别。
HDFS的应用场景
海量数据的可靠性存储
数据归档
Yarn(资源管理系统)
Yarn是Hadoop2.0新增的系统,负责集群的资源管理和调度,使得多种计算框架可以运行在一个集群中。
此处只是Yarn的概述,如果想了解Yarn详情,请查看Yarn详解这篇文章。
Yarn具有如下特点:
良好的扩展性、高可用性
对多种数据类型的应用程序进行统一管理和资源调度
自带了多种用户调度器,适合共享集群环境
MapReduce(分布式计算框架)
MapReduce源自于Google发表于2004年12月的MapReduce论文,也就是说,Hadoop MapReduce是Google MapReduce的克隆版。
此处只是MapReduce的概述,如果想了解MapReduce详情,请查看MapReduce详解这篇文章。
MapReduce具有如下特点:
良好的扩展性
高容错性
适合PB级以上海量数据的离线处理
备注:这里作为初学者,以够用为度,先学习主要版块知识。更多全面内容待完成配套的初级实践之后,再参考《Hadoop生态系统》http://lib.youkuaiyun.com/article/hadoop/42755,完成更系统的认识并进一步完善实践。
20161207 11:00——11:16
参考资料:
《Hadoop基础教程》之初识hadoop
http://blessht.iteye.com/blog/2095675
hadoop学习之hadoop完全分布式集群安装http://blog.youkuaiyun.com/ab198604/article/details/8250461
一、 Hadoop历史
雏形开始于2002年的Apache的Nutch,Nutch是一个开源Java 实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。包括全文搜索和Web爬虫。
随后在2003年Google发表了一篇技术学术论文谷歌文件系统(GFS)。GFS也就是google File System,google公司为了存储海量搜索数据而设计的专用文件系统。
2004年Nutch创始人Doug Cutting基于Google的GFS论文实现了分布式文件存储系统名为NDFS。
2004年Google又发表了一篇技术学术论文MapReduce。MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行分析运算。
2005年Doug Cutting又基于MapReduce,在Nutch搜索引擎实现了该功能。
2006年,Yahoo雇用了Doug Cutting,Doug Cutting将NDFS和MapReduce升级命名为Hadoop,Yahoo开建了一个独立的团队给Goug Cutting专门研究发展Hadoop。
不得不说Google和Yahoo对Hadoop的贡献功不可没。
二、Hadoop的核心
Hadoop的核心就是HDFS和MapReduce,而两者只是理论基础,不是具体可使用的高级应用,Hadoop旗下有很多经典子项目,比如HBase、Hive等,这些都是基于HDFS和MapReduce发展出来的。要想了解Hadoop,就必须知道HDFS和MapReduce是什么。
简言之,HDFS负责文件的存储,MapReduce负责文件的读取。
2.1 HDFS(Hadoop Distributed File System,Hadoop分布式文件系统),它是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,适合那些有着超大数据集(large data set)的应用程序。
HDFS的设计特点是:
1、大数据文件,非常适合上T级别的大文件或者一堆大数据文件的存储,如果文件只有几个G甚至更小就没啥意思了。
2、文件分块存储,HDFS会将一个完整的大文件平均分块存储到不同计算器上,它的意义在于读取文件时可以同时从多个主机取不同区块的文件,多主机读取比单主机读取效率要高得多得都。
3、流式数据访问,一次写入多次读写,这种模式跟传统文件不同,它不支持动态改变文件内容,而是要求让文件一次写入就不做变化,要变化也只能在文件末添加内容。
4、廉价硬件,HDFS可以应用在普通PC机上,这种机制能够让给一些公司用几十台廉价的计算机就可以撑起一个大数据集群。
5、硬件故障,HDFS认为所有计算机都可能会出问题,为了防止某个主机失效读取不到该主机的块文件,它将同一个文件块副本分配到其它某几个主机上,如果其中一台主机失效,可以迅速找另一块副本取文件。
HDFS的关键元素:
Block:将一个文件进行分块,通常是64M。
NameNode:保存整个文件系统的目录信息、文件信息及分块信息,这是由唯一一台主机专门保存,当然这台主机如果出错,NameNode就失效了。在Hadoop2.*开始支持activity-standy模式----如果主NameNode失效,启动备用主机运行NameNode。
DataNode:分布在廉价的计算机上,用于存储Block块文件。

2.2 MapReduce
通俗说MapReduce是一套从海量源数据提取分析元素最后返回结果集的编程模型,将文件分布式存储到硬盘是第一步,而从海量数据中提取分析我们需要的内容就是MapReduce做的事了。
MapReduce的基本原理就是:将大的数据分析分成小块逐个分析,最后再将提取出来的数据汇总分析,最终获得我们想要的内容。当然怎么分块分析,怎么做Reduce操作非常复杂,Hadoop已经提供了数据分析的实现,我们只需要编写简单的需求命令即可达成我们想要的数据。
三、总结
总的来说Hadoop适合应用于大数据存储和大数据分析的应用,适合于服务器几千台到几万台的集群运行,支持PB级的存储容量。
Hadoop典型应用有:搜索、日志处理、推荐系统、数据分析、视频图像分析、数据保存等。
但要知道,Hadoop的使用范围远小于SQL或Python之类的脚本语言,所以不要盲目使用Hadoop。不过Hadoop作为大数据的热门词,我觉得一个狂热的编程爱好者值得去学习了解,或许你下一个归宿就是作为Hadoop人才。