zoukankan      html  css  js  c++  java
  • 初探Hadoop

    一.引言

        Hadoop是Apache开源组织在2005年推出的一个分布式计算开源框架,至今已在许多大型网站上得到应用,如:Yahoo就是一个例子。Hadoop非常适用于海量数据存储与分析,它的特点是:使用起来配置简单,数据安全,硬件投入成本低。


    二.Hadoop的核心设计

        Hadoop的核心设计是:HDFS+MapReduce。

    1.HDFS

        HDFS是Hadoop使用的分布式文件系统,它是具有高度容错性的系统,适合部署在廉价的机器上。另外HDFS能提供高吞吐量的数据访问,所以非常适合大规模数据集上的应用。

    (1)HDFS的前提与设计目标

        关于这个话题,《Hadoop分布式文件系统:架构和设计》一文讲得非常详细(hyddd极力推荐此文:>),这里简单说下HDFS最初的想法。

    【1】硬件错误

        HDFS有成千上万的服务器构成,硬件错误是非常平常的事,因此错误检测和快速、自动的恢复是HDFS最核心的架构目标。

    【2】流式数据访问

        HDFS的设计中更多的考虑到了数据批处理,而不是用户交互处理。比之数据访问的低延迟问题,更关键的在于数据访问的高吞吐量。

    【3】大规模数据集

        HDFS一开始设计就着眼于大规模的数据集的应用。

    【4】简单的一致性模型

        HDFS的文件访问模型是:“一次写入多次读取”。这种模型简化了数据一致性的问题,并且使提高吞吐量成为了可能。“MapReduce”和“网络爬虫”都非常适合这种模型,其实这也就是为什么上面说“Hadoop非常适用于海量数据存储与分析”!

    【5】移动计算比移动数据更划算

        一个应用请求的计算,离它操作的数据越近就越高效,在数据达到海量级别的时候更是如此。将计算移动到数据附近,比之将数据移动到应用所在显然更好。显然,HDFS就是为“移动计算”做准备。

    【6】异构软硬件平台间的可移植性

        HDFS在设计的时候就已经考虑到移植性的问题。

    (2)HDFS架构

    下面是HDFS的架构图:

    HDFS 架构

        HDFS采用Master/Slave架构,一个HDFS集群是由一个Namenode和N个Datanodes组成。

    1.2Namenode

        Namenode是一个中心服务器,它的工作包括:

    (1)管理文件系统的namespace

    (2)外界对本系统存储的文件的访问,比如:打开,关闭,重命名,删除……,并把需要的数据块映射到具体Datanode节点上。

    2.Datanode

        Datanode一般是子节点,负责管理本节点的存储。实际上,一个大文件往往会分割成N个小文件,然后存储到不同的Datanode节点上,而相应的Datanode就会负责管属于它的这些小文件。

    3.用户访问流程

        用户通过访问HDFS的namespace实现对文件系统访问,在Namenode的统一调度下,实现用户的各种操作,而这些操作最终都会落实在Datanode上。


    2.MapReduce

        MapReduc是Google的一项重要技术,它是一个编程模型,用以进行大数据量的计算。hyddd觉得,它的价值很大一部份体现在:简化并行计算编程模型,降低了开发并行应用的入门门槛。

        MapReduce源于这个模型的两大核心操作:Map和Reduce。顾名思义,“Map(展开)”就是将一个任务分解成为多个任务。而“Reduce”就是将分解后多任务处理的结果汇总起来,得出最后的分析结果。而作为开发人员,你可以用JAVA去实现Map和Reduce操作。


    三.Hadoop的其他子项目

        Hadoop还包括:Hive,ZooKeeper……等子项目,详细可到官方网站:http://hadoop.apache.org/查询。

        这里值得一提的是Hive。

    Hive

        Hive是facebook数据团队基于hadoop开发的数据仓库封装。以数据库的方式去管理HDFS,极大地简化了MapReduce统计功能的实现

        优点:可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,数据表分区方式十分适合HDFS数据管理,在简单应用中使用非常方便!

        缺点:目前版本不稳定,有些bug,SQL语句还不够强大。


    四.参考资料

    【1】Hadoop分布式文件系统:架构和设计

    【2】http://www.hadoop.org.cn/

    【3】http://hadoop.apache.org/

    【4】http://cn.hadoop.org/

    【5】http://rdc.taobao.com/blog/dw/archives/category/hadoop

    作者:hyddd
    出处:http://www.cnblogs.com/hyddd/
    本文版权归作者所有,欢迎转载,演绎或用于商业目的,但是必须说明本文出处(包含链接)。

  • 相关阅读:
    图解持续集成纯命令行实现.Net项目每日构建(流程支持)
    (转) 持续集成(第一版)Martin Fowler等著
    Glut框架示例
    常见希腊字母读法
    【译】VC10中的C++0x特性 Part 2 (2):右值引用
    【排序】排序算法之交换排序
    OpenGL开发环境配置
    Android 上实现水波特效
    有关singleton的资料
    【排序】排序算法之选择排序
  • 原文地址:https://www.cnblogs.com/hyddd/p/1575306.html
Copyright © 2011-2022 走看看