• 云计算读书笔记(五)


    Hadoop:Google云计算的开源实现

    Hadoop是Apache开源组织的一个分布式计算机框架,可以在大量廉价的硬件设备组成的集群上运行应用程序,为应用程序提供一组稳定可靠的接口,旨在构建一个具有高可靠性和良好扩展性的分布式系统。

    Hadoop的核心是HDFS,MapReduce和HBase,它们分别对应Google的云计算GFS,MapReduce和Bigtable。

    Hadoop主要由以下几个子项目组成:

    1)Hadoop Common:原来的Hadoop Core,这是整个Hadoop项目的核心

    2)Avro:Hadoop的RPC方案

    3)Vhukwa:一个用来管理大型分布式系统的数据采集系统

    4)HBase:支持结构化数据存储的分布式数据库,是Bigtable的开源实现

    5)HDFS:提供高呑吐量的分布式文件系统,是GFS的开源实现

    6)Hive:提供数据摘要和查询功能键的数据仓库

    7)MapReduce:大型数据的分布式处理模型

    8)Pig:是在MapReduce上构建的一种高级的数据流语言

    9)ZooKeeper:用于解决分布式系统中的一致性问题,是Chubby的开源实现

    除了开源以外,hadoop还有很多优点:

    1)可扩展

    2)经济

    3)可靠

    4)高效

    分布式文件系统HDFS

    设计前提和目标:

    1)处理硬件错误并快速自动恢复

    2)流式的数据访问,应用程序以流式读为主,做批量处理,更注重数据访问的高吞吐量

    3)超大规模数据集,支持大文件存储,一个单一的HDFS实例能够支撑数以千万计的文件,并且能在一个集群里扩展到数百个节点

    4)简单一致性模型,应用程序一般对文件实行一次性写,多次读的访问模式

    5)移动计算比移动数据更简单

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

    体系结构:

    HDFS是一个主从结构的体系,HDFS集群有一个NameNode和很多个DataNode组成的。

    NameNode管理文件系统的元数据,DataNode存储实际的数据。客户端联系NameNode以获取文件的元数据,而真正的文件I/O操作是直接和DataNode进行交互的。

    HDFS的数据都是一次写入多次读取,典型的块大小是64MB

    客户端从NameNode获得组成文件的数据块的位置列表,也就是知道数据块被存储在哪些DataNode上,然后客户端直接从DataNode上读取文件,NameNode不参与文件的传输

    NameNode使用事件日志记录HDFS元数据的变化,使用映像文件存储文件系统的命名空间

    保障可靠性措施:

    1)冗余备份

    2)副本存放

    3)心跳检测,每个DataNode定期接受心跳包和块报告,收到心跳包说明该DataNode工作正常

    4)安全模式,在系统启动时会进入一个安全模式,此时不会出现数据块的写操作

    5)数据完整性检测,在HDFS文件创建时,计算每个数据块和校验和,并将校验和作为一个单独的隐藏文件保存在命名空间下。客户端获取文件时会做对应的校验检查,如果不同则客户端认为数据块有损坏,将从其它的DataNode获取数据块的副本

    6)空间回收,当文件被删除时,会先被移到/trash目录里,只要还在这个目录里就可以很快恢复,目录的清空时间是可配置的

    7)元数据磁盘失效,映像文件和事务日志是HDFS的核心数据结构

    8)快照,快照支持某个时间的数据复制,当HDFS数据损坏时,可以回滚到过去一个已知正确的时间点。

    提升性能的措施:

    1)副本选择

    2)负载均衡

    3)客户端缓存

    4)流水线复制

    访问接口:

    可以通过Java API,也可以使用C语言封装的API

    1)org.apache.hadoop.conf:定义了系统参数的配置文件处理API

    2)org.apache.hadoop.dfs:Hadoop分布式文件系统(HDFS)模块的实现

    3)org.apache.hadoop.fs:定义了抽象的文件系统API

    4)org.apache.hadoop.io:定义了通用的I/O API,用于针对网络,数据库,文件等数据对象做读/写操作

    5)org.apache.hadoop.ipc:用于网络服务端和客户端的工具,封装了网络异步I/O的基础模块

    6)org.apache.hadoop.mapred:Hadoop分布式计算系统(MapReduce)模块的实现

    7)org.apache.hadoop.metrics:定义了用于性能统计信息的API,主要用于mapred和dfs模块

    8)org.apache.hadoop.record:定义了针对记录的I/O API类及一个记录描述语言的翻译器

    9)org.apache.hadoop.tools:定义了一些通用的工具

    10)org.apache.hadoop.util:定义了一些公用的API

    分布式数据处理MapReduce

    MapReduce是一种分布式的计算机模型,也是Hadoop的核心

    逻辑模型:

    将运行在大规模集群上的并行计算过程抽象为两个函数:Map和Reduce,也就是映射和化简

    简单说MapReduce就是任务的分解与结果的汇总,Map把任务分解为多个任务,Reduce把分解后的结果汇总起来,得到最终结果

    实现机制:

    1,分布式并行计算,MapReduce框架由JobTracker和TaskTracker这两类服务调度的。JobTracker是主控服务,只有一个,负责调度和管理TaskTracker

    2,本地计算

    3,任务粒度,有利于数据的本地性,一个小数据集启动一个Map服务,M个Map任务可以在N台计算机上并行运行,用户可以指定Reduce任务的数量

    4,Combine

    5,分区,经过连接后可以把产生的中间结果按key的范围划分为R份

    6,读取中间结果

    7,任务管道

    分布式数据化数据表HBase

    HBase数据库是基于hadoop的项目,是针对Google的Bigtable的开源实现,它与Google的Bigtable相似

    逻辑模型:

    用户在表格里存储一系列的数据行,每行包含一个可排序的关键字,一个可选的时间戳及一些可能有数据的列

    Hadoop的安装

    可以使用虚拟机进行模拟,如果机器上没有安装SSH,安装SSH

    配置安装JDK,详细步骤网上很多不一一操作了

    到apache的hadoop网站上下载hadoop-0.20.2.tar.gz

    使用ftp传到相应的服务器上,如果是虚拟机可以到共享文件夹下选择

    复制到linux下的usr目录

    tar -zxvf hadoop-0.20.2.tar.gz

    解压后使用vi找到conf/hadoop-env.sh文件

    打开

    # The java implementation to use.  Required.
    # export JAVA_HOME=/usr/lib/j2sdk1.5-sun
    export JAVA_HOME=/opt/jdk1.6.0_27
    
    # Extra Java CLASSPATH elements.  Optional.
    # export HADOOP_CLASSPATH=
    

    安装步骤:

    hadoop有三种运行模式:单机模式,伪分布式模式和完全分布式模式。

    在调试阶段使用单机模式

    查看并且运行示例

    bin/hadoop jar hadoop-0.20.2-examples.jar wordcount input output
    
    cat output/*
    

    查看到的结果如下:

    [root@LinuxServer hadoop-0.20.2]# cat output/*
    hadoop  1
    hello   2
    world   1
    

    作者:张锋
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。
    更多精彩文章可以观注
    微信公众号 soft张三丰

    微信交流群,添加群主微信,邀请入群
  • 相关阅读:
    c++动态数组
    通俗理解ac,ap,路由器的区别(很好懂)
    java连接pg数据库
    分享:更好地理解c++类,多文件导入等
    安装WinPcap等软件出现关于npf.sys的错误
    【开源】EP3C25Q240扩展板1
    UML——用例图
    Git常用命令
    聊聊新特性操作符 ! / ? / ??
    精通 Nginx 扒书记录
  • 原文地址:https://www.cnblogs.com/skyme/p/2216532.html
Copyright © 2020-2023  润新知