您的位置:首页 > 运维架构

hadoop入门--hadoop

2015-07-31 10:37 435 查看

什么是Hadoop?

它是一个分布式的文件系统+计算框架,是一个能够对大量数据进行分布式处理的软件框架.

它面向大数据处理,擅长离线数据分析.

它是一个快速进化的生态系统,已经有数十个具有强大生命力的子项目,包括Pig,Hive和Hbase等.

它不是数据库,Hbase才数据库.

它是可靠的,因为它假设计算元素和存储会失败,因此它维护多个工作数据副本,确保能够针对失败的节点重新分布处理。

它是高效的,因为它以并行的方式工作,通过并行处理加快处理速度。

它还是可伸缩的,能够处理 PB级数据。

此外,它依赖于社区服务器,因此它的成本比较低,任何人都可以使用。

Hadoop的思想之源–Google

降低成本

不使用超级计算机,不使用存储。

提供冗余的集群服务,大量使用普通的PC服务器(去掉机箱,外设,硬盘)

集装箱数据中心,能效比高.

数据和计算难题解决

大量网页如何存储?

大量网页放在内存中,效率最快,并提供负载均衡和容灾.
GFS:Google没有数据库,是用自己开发的文件系统.将不常用的网页放在该文件系统中.


搜索算法

使用倒排索引,快速检索网页.采用快速搜索,不用全文索引,对文章进行分词,中文的分词可用字典来做到.


Page-Rank计算问题

网页的价值计算问题,给每个网页价值进行评分.而得分高的网页就可以优先被查询出来,这就是数据挖掘.
思想:根据链接关系,很多链接指向的页面,价值就算高.而网站本身的价值是很不一样的,价值高的网站指向的网页,价值也会高.
主要做法:构建和计算Google矩阵.而若网页太多,Google矩阵非常庞大,所以提出Map-Reduce,来解决.分散聚合,也就是分治算法,将庞大的Google矩阵分散,然后各个计算,再合并,从而得出结果.


Hadoop的源起–Lucene

Lucene是DoungCutting开创的开源软件,用java书写,实现与Google类似的全文搜索功能,它提供了全文检索引擎的架构,包括完整的查询引擎和索引引擎.
Lucene的目的是为了软件开发人员提供一个简单易用的工具包,以方便在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎.
但是,对于大数据量的场景,Lucene面对与Google同样的困难,Doung Cutting学习和模仿Google解决这些问题的办法.于是做出了一个微缩版,Nutch.
2003-2004年,Google公开了部分GFS和MapReduce思想的细节,以此为基础,Doung Cutting等人用了2年的业余时间实现了DFS和MapReduce机制,使Nutch性能飙升.
2005年,Hadoop作为Lucene的子项目Nutch的一部分正式引入Apache基金会.
2006年3月,Hadoop独立,Map-Reduce和Nutch Distributed File System(NDFS,Nutch分布式文件系统)分别被纳入称为Hadoop的项目中。


Hadoop达到的高度

是目前实现与计算的事实标准开源软件。
包含数十个具有强大生命力的子项目。(Hbase,Pig,Hive,Chukwa,MapReduce,HDFS,Zookeeper,Core和Avro)
已经能在数千节点上运行,处理数据量和排序时间不断打破世界记录。


Hadoop的架构

架构图



图中分为两个Rack机架,其中右边机架的上部是Master节点,其他为Slave节点。而Master节点中,包含Namenode,SecondaryNamenode,JobTracker。Slave节点中,包含TaskTracker和Datanode.

Master做为主控节点,不一定是唯一的.Namenode,SecondaryNamenode,和JobTracker都可以单独部署在一台机子上,这就是3个点.也就有3个主控节点.而常见的是,Namenode和JobTracker在一台机子上,而SecondaryNamenode则在另一台单独的机子上.

Namenode

名称节点,用于管理文件系统的命名空间。
HDFS的守护程序
协调客户端对文件的访问
记录文件是如何分割成数据块的,以及这些数据块被存储到哪些节点上;记录每个文件数据块在各个datanode上的位置和副本信息;
记录命名空间内的改动或空间本身属性的改动;使用事务日志记录HDFS元数据的变化.使用映像文件存储文件系统的命名空间,包括文件映射,文件属性等.
对内存和I/O进行集中管理
实际上是个单点,发生故障将使集群崩溃。


Secondary Namenode

辅助名称节点
监控HDFS状态的辅助后台程序
每个集群都有一个
与NameNode进行通讯,定期保存HDFS元数据快照
当NameNode故障可以作为备用NameNode使用,但是无法自动切换,只能手动切换。Hadoop已经在解决这个问题。
事实上的单点。


JobTacker

作业跟踪器
用于处理作业(用户提交代码)的后台程序
决定有哪些文件参与处理,然后切割task并分配节点
监控task,重启失败的task(于不同的节点)
每个集群只有唯一一个JobTracker,位于Master节点


DataNode

数据节点
每台从服务器都运行一个
负责所在物理节点的存储管理,负责把HDFS数据块读写到本地文件系统
文件由数据块组成,典型的块大小为64MB,数据块尽量散布到各个节点;
一次写入,多次读取(不修改)


TaskTracker

任务跟踪器
位于Slave节点上,与dataNode结合,代码和数据一起的原则
管理各自节点上的task,由jobTracker分配,与jobTracker交互
每个节点只有一个TaskTracker,但一个TaskTracker可以启动多个jvm,用于并行执行map或reduce任务.


以上,是Hadoop的一些简单介绍.包括hadoop是什么,起源思想和起源历史,以及他的架构,以及部分为什么提出hadoop.但是还未详细介绍,并且未介绍什么地方适用hadoop,应用的场景有哪些.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hadoop