云计算 学习笔记(1) Hadoop简介 – 完美de幸福


云计算 学习笔记(1) Hadoop简介

Hadoop 简介

Hadoop 是一个开源的可运行于大规模集群上的分布式并行编程框架,由于分布式存储对于分布式编程来说是必不可少的,这个框架中还包含了一个分布式文件系统 HDFS( Hadoop Distributed File System )。也许到目前为止,Hadoop 还不是那么广为人知,其最新的版本号也仅仅是 0.16,距离 1.0 似乎都还有很长的一段距离,但提及 Hadoop 一脉相承的另外两个开源项目 Nutch 和 Lucene ( 三者的创始人都是 Doug Cutting ),那绝对是大名鼎鼎。Lucene 是一个用 Java 开发的开源高性能全文检索工具包,它不是一个完整的应用程序,而是一套简单易用的 API 。在全世界范围内,已有无数的软件系统,Web 网站基于 Lucene 实现了全文检索功能,后来 Doug Cutting 又开创了第一个开源的 Web 搜索引擎(http://www.nutch.org) Nutch, 它在 Lucene 的基础上增加了网络爬虫和一些和 Web 相关的功能,一些解析各类文档格式的插件等,此外,Nutch 中还包含了一个分布式文件系统用于存储数据。从 Nutch 0.8.0 版本之后,Doug Cutting 把 Nutch 中的分布式文件系统以及实现 MapReduce 算法的代码独立出来形成了一个新的开源项 Hadoop。Nutch 也演化为基于 Lucene 全文检索以及 Hadoop 分布式计算平台的一个开源搜索引擎。

基于 Hadoop,你可以轻松地编写可处理海量数据的分布式并行程序,并将其运行于由成百上千个结点组成的大规模计算机集群上。从目前的情况来看,Hadoop 注定会有一个辉煌的未来:"云计算"是目前灸手可热的技术名词,全球各大 IT 公司都在投资和推广这种新一代的计算模式,而 Hadoop 又被其中几家主要的公司用作其"云计算"环境中的重要基础软件,如:雅虎正在借助 Hadoop 开源平台的力量对抗 Google, 除了资助 Hadoop 开发团队外,还在开发基于 Hadoop 的开源项目 Pig, 这是一个专注于海量数据集分析的分布式计算程序。Amazon 公司基于 Hadoop 推出了 Amazon S3 ( Amazon Simple Storage Service ),提供可靠,快速,可扩展的网络存储服务,以及一个商用的云计算平台 Amazon EC2 ( Amazon Elastic Compute Cloud )。在 IBM 公司的云计算项目--"蓝云计划"中,Hadoop 也是其中重要的基础软件。Google 正在跟IBM合作,共同推广基于 Hadoop 的云计算。

诸多优点

  Hadoop 是一个能够对大量数据进行分布式处理软件框架。但是 Hadoop 是以一种可靠、高效、可伸缩的方式进行处理的。Hadoop 是可靠的,因为它假设计算元素和存储会失败,因此它维护多个工作数据副本,确保能够针对失败的节点重新分布处理。Hadoop 是高效的,因为它以并行的方式工作,通过并行处理加快处理速度。Hadoop 还是可伸缩的,能够处理 PB 级数据。此外,Hadoop 依赖于社区服务器,因此它的成本比较低,任何人都可以使用。

  Hadoop是一个能够让用户轻松架构和使用的分布式计算平台。用户可以轻松地在Hadoop上开发和运行处理海量数据的应用程序。它主要有以下几个优点:

  ⒈高可靠性。Hadoop按位存储和处理数据的能力值得人们信赖。

  ⒉高扩展性。Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计的节点中。

  ⒊高效性。Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快。

  ⒋高容错性。Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。

  Hadoop带有用 Java 语言编写的框架,因此运行在 Linux 生产平台上是非常理想的。Hadoop 上的应用程序也可以使用其他语言编写,比如 C++。

开源实现

  Hadoop是项目的总称,起源于作者儿子的一只玩具大象的名字。主要是由HDFS、MapReduce和Hbase组成。

  HDFS是Google File System(GFS)的开源实现。

  MapReduce是Google MapReduce的开源实现。

HBase是Google BigTable的开源实现。

  这个分布式框架很有创造性,而且有极大的扩展性,使得Google在系统吞吐量上有很大的竞争力。因此Apache基金会用Java实现了一个开源版本,支持Fedora、Ubuntu等Linux平台。雅虎和硅谷风险投资公司Benchmark Capital 6月28日联合宣布,他们将联合成立一家名为Hortonworks的新公司,接管被广泛应用的数据分析软件Hadoop的开发工作。

  Hadoop实现了HDFS文件系统和MapRecue。用户只要继承MapReduceBase,提供分别实现Map和Reduce的两个类,并注册Job即可自动分布式运行。

Hadoop主要子项目

Hadoop Common: 在0.20及以前的版本中,包含HDFS、MapReduce和其他项目公共内容,从0.21开始HDFS和MapReduce被分离为独立的子项目,其余内容为Hadoop Common

HDFS: Hadoop 分布式文件系统(Distributed File System) - HDFS (Hadoop Distributed File System)

MapReduce并行计算框架,0.20前使用 org.apache.hadoop.mapred 旧接口,0.20版本开始引入org.apache.hadoop.mapreduce的新API

HBase: 类似Google BigTable的分布式NoSQL列数据库。(HBase 和 Avro已经于2010年5月成为顶级 Apache 项目)

Hive:数据仓库工具,由Facebook贡献。

Zookeeper:分布式锁设施,提供类似Google Chubby的功能,由Facebook贡献。

Avro:新的数据序列化格式与传输工具,将逐步取代Hadoop原有的IPC机制。

hadoop架构

Hadoop 有许多元素构成。其最底部是 Hadoop Distributed File System(HDFS),

它存储 Hadoop 集群中所有存储节点上的文件。HDFS(对于本文)的上一层是 MapReduce 引擎,该引擎由 JobTrackers 和 TaskTrackers 组成。

Hadoop 集群的简化视图

HDFS

  对外部客户机而言,HDFS 就像一个传统的分级文件系统。可以创建、删除、移动或重命名文件,等等。但是 HDFS 的架构是基于一组特定的节点构建的(参见图 1),这是由它自身的特点决定的。这些节点包括 NameNode(仅一个),它在 HDFS 内部提供元数据服务;DataNode,它为 HDFS 提供存储块。由于仅存在一个 NameNode,因此这是 HDFS 的一个缺点(单点失败)。

  存储在 HDFS 中的文件被分成块,然后将这些块复制到多个计算机中(DataNode)。这与传统的 RAID 架构大不相同。块的大小(通常为 64MB)和复制的块数量在创建文件时由客户机决定。NameNode 可以控制所有文件操作。HDFS 内部的所有通信都基于标准的 TCP/IP 协议。

NameNode

  NameNode 是一个通常在 HDFS 实例中的单独机器上运行的软件。它负责管理文件系统名称空间和控制外部客户机的访问。NameNode 决定是否将文件映射到 DataNode 上的复制块上。对于最常见的 3 个复制块,第一个复制块存储在同一机架的不同节点上,最后一个复制块存储在不同机架的某个节点上。注意,这里需要您了解集群架构。

  实际的 I/O 事务并没有经过 NameNode,只有表示 DataNode 和块的文件映射的元数据经过 NameNode。当外部客户机发送请求要求创建文件时,NameNode 会以块标识和该块的第一个副本的 DataNode IP 地址作为响应。这个 NameNode 还会通知其他将要接收该块的副本的 DataNode。

  NameNode 在一个称为 FsImage 的文件中存储所有关于文件系统名称空间的信息。这个文件和一个包含所有事务的记录文件(这里是 EditLog)将存储在 NameNode 的本地文件系统上。FsImage 和 EditLog 文件也需要复制副本,以防文件损坏或 NameNode 系统丢失。

DataNode

  DataNode 也是一个通常在 HDFS 实例中的单独机器上运行的软件。Hadoop 集群包含一个 NameNode 和大量 DataNode。DataNode 通常以机架的形式组织,机架通过一个交换机将所有系统连接起来。Hadoop 的一个假设是:机架内部节点之间的传输速度快于机架间节点的传输速度。

  DataNode 响应来自 HDFS 客户机的读写请求。它们还响应创建、删除和复制来自 NameNode 的块的命令。NameNode 依赖来自每个 DataNode 的定期心跳(heartbeat)消息。每条消息都包含一个块报告,NameNode 可以根据这个报告验证块映射和其他文件系统元数据。如果 DataNode 不能发送心跳消息,NameNode 将采取修复措施,重新复制在该节点上丢失的块。

文件操作

  可见,HDFS 并不是一个万能的文件系统。它的主要目的是支持以流的形式访问写入的大型文件。如果客户机想将文件写到 HDFS 上,首先需要将该文件缓存到本地的临时存储。如果缓存的数据大于所需的 HDFS 块大小,创建文件的请求将发送给 NameNode。NameNode 将以 DataNode 标识和目标块响应客户机。同时也通知将要保存文件块副本的 DataNode。当客户机开始将临时文件发送给第一个 DataNode 时,将立即通过管道方式将块内容转发给副本 DataNode。客户机也负责创建保存在相同 HDFS 名称空间中的校验和(checksum)文件。在最后的文件块发送之后,NameNode 将文件创建提交到它的持久化元数据存储(在 EditLog 和 FsImage 文件)。

Linux 集群

  Hadoop 框架可在单一的 Linux 平台上使用(开发和调试时),但是使用存放在机架上的商业服务器才能发挥它的力量。这些机架组成一个 Hadoop 集群。它通过集群拓扑知识决定如何在整个集群中分配作业和文件。Hadoop 假定节点可能失败,因此采用本机方法处理单个计算机甚至所有机架的失败。

发表于
2012-11-15 23:04 
完美de幸福 
阅读(813
评论(0
编辑 
收藏 
举报
 

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:云计算 学习笔记(1) Hadoop简介 – 完美de幸福 - Python技术站

(0)
上一篇 2023年4月13日
下一篇 2023年4月13日

相关文章

  • 阿里云计算公司总部开建 2021年竣工

    阿里云项目效果图 阿里云计算公司总部效果图 杭州网讯 2017年12月26日上午,由阿里巴巴集团集团投资的阿里云计算公司总部项目开工活动在杭州西湖区云谷项目施工现场隆重举行。 阿里云创立于2009年,是全球领先的云计算及人工智能科技公司,为200多个国家和地区的企业、开发者和政府机构提供服务。截至2017年3月,阿里云付费云计算用户达87.4万,阿里云已成为…

    云计算 2023年4月13日
    00
  • 云计算助力生命科学探索

    “人类DNA序列是人类的真谛,这个世界上发生的一切事情,都与这一序列息息相关。” ——诺贝尔生理学与医学奖获得者杜伯克     在基因这本“生命天书”里,藏着有关健康的秘密,人类通过基因探索生命科学的脚步从未停歇。然而,对生命科学的探究离不开对基因数据信息的存储、挖掘、管理。其数据信息的巨大规模、结构复杂、快速增长等特点,对信息系统的存储能力、计算能力、扩展…

    云计算 2023年4月12日
    00
  • python2与python3的print及字符串格式化小结

    让我来详细讲解一下“python2与python3的print及字符串格式化小结”的完整攻略。 python2与python3的print Python2的print 在Python2中,print是一个关键字,而不是一个函数。因此,在使用print语句时,我们并不需要将要打印的内容放在括号中。举个例子: print "Hello, world!&…

    云计算 2023年5月18日
    00
  • Intel CPU 曝致命漏洞,Linux、Windows 面临重新设计,云计算厂商全受影响

    TPU 称,亚马逊、微软和谷歌是三个受影响最深的云计算厂商,如果漏洞被利用,那么在同一物理空间的虚拟用户 A 可以任意访问到另一个虚拟用户B的数据,包括受保护的密码、应用程序密匙等。– John Leyden, Chris Williams 本文导航◈ 影响范围19%◈ 这个安全漏洞怎么会被滥用?38%◈ 共享系统(云服务)78%◈ 更新92%编译自 | …

    云计算 2023年4月12日
    00
  • 什么是云计算,它都应用在哪些方面? – 冬刻忆

    什么是云计算,它都应用在哪些方面?   什么是云计算呢?    其实云端(cloud)就代表了互联网(Internet),通过网络的计算能力,取代使用你原本安装在自己电脑上的软件,或者是取代原本你把资料存在自己硬盘的动作,你转而通过网络来进行各种工作,并存放档案资料在网络,也就是庞大的虚拟空间上。我们通过所使用的网络服务,把资料存放在网络上的服务器中,并借由…

    云计算 2023年4月13日
    00
  • ASP.NET MVC下拉框中显示枚举项

    ASP.NET MVC下拉框中显示枚举项 在ASP.NET MVC中,我们可以使用下拉框来显示枚举项。这对于一些需要用户选择枚举值的应用程序非常有用。本文将提供一个完整攻略,包括如何在ASP.NET MVC中显示枚举项,并提供两个示例说明。 步骤1:定义枚举类型 首先,我们需要定义一个枚举类型。以下是一个示例说明,演示如何定义一个枚举类型: public e…

    云计算 2023年5月16日
    00
  • 第三届云计算大会 – Dell云计算: 企业的有效转型策略(转载)

    Martin Yates 的人不错,会后请他去吃了汉拿山,感觉味道还不错,聊了将近两个小时才回家,受益匪浅啊,他的讲解简单生动,如果有他的Slides就好了。 ==================================================================================== 在19日下午举行的大会主题演讲…

    云计算 2023年4月10日
    00
  • 如何用Python编写一个电子考勤系统

    下面我将为你详细讲解如何用Python编写一个电子考勤系统。 1. 系统架构设计 首先,我们需要思考电子考勤系统的整体架构设计。电子考勤系统需要包括以下模块: 登录模块:用于身份认证,一般使用用户名和密码进行登录。 考勤模块:用于记录员工的考勤信息,可以通过手动录入或者使用一些自动识别技术。 统计模块:用于对考勤记录进行统计和分析,生成报表以供管理人员查看。…

    云计算 2023年5月18日
    00
合作推广
合作推广
分享本页
返回顶部