• Hadoop in Action 第二章


    Starting Hadoop

    内容简介:

    1.       Hadoop 架构中的各个模块。

    2.       安装Hadoop,以及三种操作模式:单机,伪分布式,以及分布式。

    3.       安装基于webHadoop监控工具

         这一章节将主要介绍如何安装Hadoop。如果你的工作不要安装Hadoop,或者已经完整安装了Hadoop,那么你也许想跳过这一章。不过通过这一章节你可以了解如何在你的开发环境中安装Hadoop,如果是这样,你可以略过一些配置的细节。在2.1章节,我们将介绍一下hadoop的各个组成部分。此后的2.22.3,和2.4我们将分别介绍如何安装 单机,伪分布式,以及分布式的Hadoop2.5我们将介绍一些基于webHadoop集群监测工具。

    Hadoop的各个组成部分

          在之前的章节中,我们讨论了分布式存储与分布式运算。现在我们看一下Hadoop是如何实现这些想法的吧。在一个配置完整的集群上运行hadoop意味着在集群中运行一系列后台(deamon)程序,每台服务器上运行的程序并不相同,deamons负责不同的角色,有的角色只在一台服务器上,有的需要多台服务器。

    这些角色包括:

    1.       NameNode

    2.       DataNode

    3.       Secondary NameNode

    4.       JobTracker

    5.       TaskTracker

    下面我们将接受各个角色在Hadoop中的作用.

    NameNode

          我们从最重要的daemons说起---NameNode

          Hadoop 在分布式存储和分布式计算方面都使用主/从(master/slave)架构。分布式存储叫Hadoop File System.或者HDFSNameNode就是HDFS主服务器(master),它控制着从服务器(slave)的后台程序处理低级别的I/O任务,这些从服务器就是后面要提到的DataNode.NameNodeHDFS的守护者;负责跟踪文件是如何分割成小数据块的,这些小块分别都存储到了那个数据节点上,以及整个分布式文件系统的健康环境。NameNode的功能就是内存以及I/O的集中管理。因此,一般来说,NameNode所在的服务器不会存储任何用户信息或者运行计算,其目的就在与尽量不要让这些程序降低服务器的性能。也就是说NameNode服务器一般来说不能同时兼任DataNode或者TashTracker。由此引发一个问题,就是NameNodeHadoop cluster中的一个单点,如果是其他服务器出现软硬件的问题,宕机了,Hadoop集群可以继续运转,或者也可以快速的重启。但是,一旦NameNode服务器down掉了,就没这么简单了。

    DataNode

          集群中的每一个从服务器都会运行一个DataNode后台程序。此后台程序负责读写HDFS数据块到本地的文件系统。当你想通过客户端在HDFS控制下的文件块中进行某个数据的读写操作的时候,NameNode将会告诉客户端到哪个DataNode进行此操作。客户端将直接与此DataNode服务器上的deamons程序进行通信,并操作相关的数据块。而且,DataNode之间可以相互复制数据块,作为冗余备份。

    2.1NameNodeDataNodes之间的角色实例。在此图中,我们看到两个数据文件,一个是/user/chuck/data1另一个是/user/james/data2.data1占据了1233个数据块。data2占据45这两个数据块。文件中的内容分布于多个DataNodes之间。在此实例中,每个数据块有3个冗余处理。比如,数据块1(存放data1)就在右边三个DataNodes上都有。这样可以确保,一旦一个Datanode崩溃了,客户端仍然可以从其他DataNodes获得数据。

       DataNode会不断的向NameNode汇报运行状态。从DataNode初始化开始,每一个DataNode要向NameNode汇报每个数据存储的数据内容。数据mapping完成后,DataNode会继续通知NameNode本地的数据变化,同时也会接收NameNode法国来的创建,移动,删除本地数据块等指令。

    Secondary NameNode(在0.21.0中已经被其他节点所取代)

    Secondary NameNode (SNN) 是一个用来监控HDFS状态的辅助deamon。就像NameNode一样,每一个集群都有一个SNN,并且它实际上是属于一台单独的服务器。没有一个DataNodeTaskTracker运行在统一台服务器上。SNN不同于NameNode之处在于这个进程并不接收或者记录任何实时的数据变化。但是,它会与NameNode进行通信,以便间歇的保存HDSF元数据的快照。由于NameNode是单点的,所以通过SNN的快照功能,可以将NameNode的宕机时间和数据损失降低到最小。同时,如果NameNode发生问题,SNN可以及时的作为备用NameNode使用。我们将在第八章中的集群管理的最佳实践中介绍它。

    JobTracker

    JobTracker deamon用来链接你的应用程序与Hadoop。一旦你提交代码到集群之中,JobTracker 决定那个文件去被处理,并且为不同的task分配节点,并且监控所有运行的task。一旦某个task失败了,JobTracker就会自动重新开启这个task,也许这个task会在不同的节点上,具体运行情况取决于重启的预设值。每一个Hadoop集群只有一个JobTracker。它一般会作为集群的一个master节点。

    TaskTracker

    与存储进程相结合的,运算进程也遵循主从架构:如图2.2所示,JobTracker是主节点,统领左右MR任务(job),TaskTrackers在各自的从节点上管理每个独立的task

          每个TaskTracker负责独立执行具体的task,而JobTracker负责分配task。虽然每个从节点上都有一个且唯一的一个TaskTracker,但是每个TaskTracker可以部署在多个JVMs之上,用于并行处理多个map以及reduce任务(task)。

          TaskTracker的一个重要职责就是与JobTracker交互。如果JobTracker无法准时的获取到TaskTracker提交的信息,JobTracker就会假定TaskTracker已经崩溃了,JobTracker就会将任务分配给其他节点处理。

          为了覆盖每一个Hadoop进程,我们在图2.3中描述了一个典型的Hadoop集群。这张图描述了一个主节点专门运行NameNodeJobTracker程序,以及一个单独的节点运行SNN。在小的集群中,SNN可以属于某个从节点上。而在大型集群中,NameNodeJobTracker会分别部署在两台服务器上。而在每个从服务器上,会部署一个DataNodeTaskTracker,以便与能这个从服务器上运行的数据处理程序直接处理本机的数据。

          我们会接下来要完整的安装一个hadoop集群。首先先建立一个主节点以便可以控制各个节点之间的通道(channel)。如果你不许要安装hadoop,或者已经安装好了一个hadoop环境,你可以跳过下面介绍安装SSH通道这一节。你当然也可以选择在单机或者伪集群上运行Hadoop,这对开发很重要。在2.3节中,将介绍配置如何配置单机或者伪集群的Hadoop.

    Setting up SSH for a Hadoop cluster

    Running Hadoop

    现在我们看一下在运行Hadoop之前,我们需要配置那些东西

    Hadoop的配置目录:

    [hadoop-user@master]$ cd $HADOOP_HOME

    [hadoop-user@master]$ ls -l conf/

    total 100

    -rw-rw-r-- 1 hadoop-user hadoop 2065 Dec 1 10:07 capacity-scheduler.xml

    -rw-rw-r-- 1 hadoop-user hadoop 535 Dec 1 10:07 configuration.xsl

    -rw-rw-r-- 1 hadoop-user hadoop 49456 Dec 1 10:07 hadoop-default.xml

    -rw-rw-r-x 1 hadoop-user hadoop 2314 Dec 1 10:07 hadoop-env.sh

    -rw-rw-r-- 1 hadoop-user hadoop 2234 Dec 1 10:07 hadoop-site.xml

    -rw-rw-r-- 1 hadoop-user hadoop 2815 Dec 1 10:07 log4j.properties

    -rw-rw-r-- 1 hadoop-user hadoop 28 Dec 1 10:07 masters

    -rw-rw-r-- 1 hadoop-user hadoop 84 Dec 1 10:07 slaves

    -rw-rw-r-- 1 hadoop-user hadoop 401 Dec 1 10:07 sslinfo.xml.example

    首先,我们需要在环境变量中指定JAVA_HOME,此设置可以也可以在conf/hadoop-env.sh中配置。比如

    export JAVA_HOME=/usr/share/jdk

    在我的Ubuntu系统中,java的安装目录为:

    export JAVA_HOME=/usr/lib/jvm/java-6-sun

    当你再熟悉hadoop的具体配置后,你就可以按照你的需求修改这个配置文件了。比如修改日志地址和java class-path等等。主要的Hadoop都保存在xml配置文件中。在0.20版本以前,这些配置文件是 hadoop-default.xml hadoop-site.xml。在hadoop-default.xml文件中保存这Hadoop的默认设置。而hadoop-site.xml是一些特殊的设置,如果两个文件中有相同的设置,hadoop-site.xml将会覆盖hadoop-default.xml中的配置。当然,在实际操作中,你可以只配置hadoop-site.xml文件。

    version0.20以后的版本,hadoop-site.xml文件被分为core-site.xml, hdfs-site.xml, mapred-site.xml三个文件,后面的章节我们将讲解这几个文件是如何保存配置的。如果你使用早期版本的Hadoop,你需要将所有的配置都配置在hadoop-site.xml中。

    下面的章节将提供一些不同操作类型的配置文件样例。

    Local (standalone) mode

     

    单机模式是Hadoop的默认模式.直接从源码编译后未配置的安装方式,将运行于此种模式下.

    三个配置文件都不用任何配置(0.20以前使用的是hadoop-site.xml):

    <?xml version=”1.0”?>

    <?xml-stylesheet type=”text/xsl” href=”configuration.xsl”?>

    <!-- Put site-specific property overrides in this file. -->

    <configuration>

    </configuration>

    如果使用空配置文件,Hadoop将完整运行于本地服务器上.因为没有必要与其他节点相连,单机模式将不适用HDFS,或者其他任何Hadoop程序.它主要用来开发与debug Mapreduce程序的逻辑部分,而不会与Hadoop的其他程序相交互.第一章运行的程序就是在单机模式下运行的.
     
  • 相关阅读:
    Unix命令大全
    vs2008 与 IE8出现的兼容性问题
    Java 创建文件、文件夹以及临时文件
    如何修改Wamp中mysql默认空密码
    PAT 乙级真题 1003.数素数
    Tags support in htmlText flash as3
    DelphiXE4 FireMonkey 试玩记录,开发IOS应用 还是移植
    10 Great iphone App Review sites to Promote your Apps!
    HTML tags in textfield
    Delphi XE4 IOS 开发, "No eligible applications were found“
  • 原文地址:https://www.cnblogs.com/JohnLiang/p/2243361.html
Copyright © 2020-2023  润新知