首页 > 其他 > 详细

Hadoop集群搭建

时间:2014-03-10 00:56:26      阅读:1029      评论:0      收藏:0      [点我收藏+]

Hadoop是Apache软件基金会旗下的一个开源分布式计算平台,支持密集型分布式应用并以Apache2.0许可协议发布。

  • Hadoop:Hadoop分布式文件系统HDFS(Hadoop Distributed Filesystem)和MapReduceGoogleMapReduce的开源实现)为核心的Hadoop为用户提供了系统底层细节透明的分布式基础架构:

    1.Hadoop实现了MapReduce的编程范式:应用程序被分割成许多小部分,而每个部分都能在集群中的任意节点上执行或重新执行。

    2.HDFS:用以存儲所有計算節點的數據,這為整個集群帶來了非常高的帶寬。

    3.Hadoop集群结构为:MasterSlave。一个HDFS集群是由一个NameNode和若干个DataNode组成的。其中NameNode作为主服务器,管理文件系统的命名空间和客户端对文件系统的访问操作;集群中的DataNode管理存储的数据。

    4.MapReduce框架是由一个单独运行在主节点上的JobTracker和运行在每个集群从节点的TaskTracker共同组成的。主节点负责调度构成一个作业的所有任务,这些任务分布在不同的从节点上。

    主节点监控它们的执行情况,并且重新执行之前的失败任务;从节点仅负责由主节点指派的任务。当一个Job被提交时,JobTracker接收到提交作业和配置信息之后,就会将配置信息等分发给从节点,同时调度任务并监控TaskTracker的执行。

    5.HDFSMapReduce共同组成了Hadoop分布式系统体系结构的核心。HDFS在集群上实现分布式文件系统,MapReduce在集群上实现了分布式计算和任务处理。HDFSMapReduce任务处理过程中提供了文件操作和存储等支持,MapReduceHDFS的基础上实现了任务的分发、跟踪、执行等工作,并收集结果,二者相互作用,完成了Hadoop分布式集群的主要任务。


  • Hadoop的五大优势:


    高可扩展性

    Hadoop是一个高度可扩展的存储平台,因为他可以存储和分发横跨数百个并行操作的廉价的服务器数据集群。不同于传统的关系型数据库系统不能扩展到处理大量的数据,Hadoop是能给企业提供涉及成百上千TB的数据节点上运行的应用程序。

    成本效益

    Hadoop还为企业用户提供了极具成本效益的存储解决方案。传统的关系型数据库管理系统的问题是,他并不符合海量数据的处理器,不能够符合企业的成本效益。许多公司过去不得不假设那些数据最优价值,然后根据这些有价值的数据设定分类,如果保存所有的数据,那么成本就会过高。虽然这种方法可以短期内实现工作,但是随着数据量的增大,这种方式并不能很好的解决问题。

    Hadoop的架构则不同,其被设计为一个向外扩展的架构,可以经济的存储所有公司的数据供以后使用,节省的费用是非常惊人的,Hadoop提供数百TB的存储和计算能力,而不是几千块钱就能解决的问题。

    灵活性更好

    Hadoop能够使企业轻松访问到新的数据源,并可以分析不同类型的数据,从这些数据中产生价值,这意味着企业可以利用Hadoop的灵活性从社交媒体、电子邮件或点击流量等数据源获得宝贵的商业价值。

    此外,Hadoop的用途非常广,诸如对数处理、推荐系统、数据仓库、市场活动分析以及欺诈检测。

    Hadoop拥有独特的存储方式,用于数据处理的工具通常在与数据相同的服务器上,从而导致能够更快的处理器数据,如果你正在处理大量的非结构化数据,Hadoop能够有效的在几分钟内处理TB级的数据,而不是像以前PB级数据都要以小时为单位。

    容错能力

    使用Hadoop的一个关键优势就是他的容错能力。当数据被发送到一个单独的节点,该数据也被复制到集群的其它节点上,这意味着在故障情况下,存在另一个副本可供使用。非单点故障。


  • Hadoop集群配置实例:架构

    1Master1Backup(主机备用),3Slave(由虚拟机创建)。节点IP地址:

    rango(Master)   192.168.56.1  namenode

    vm1(Backup)192.168.56.101secondarynode

    vm2(Slave1)192.168.56.102datanode

    vm3(Slave2)192.168.56.103datanode

    vm4(Slave3)192.168.56.104datanode


    psHadoop最好运行在一个单独的用户下,且所有集群中的用户应该保持一致,即用户名相同。


    Master机器配置文件中:masters文件中指定的是要运行的secondarynamenode

    slaves文件指定的是要运行的datanodetasktracker


    Master机器主要配置NameNodeJobTracker的角色,负责总管分布式数据和分解任务的执行;

    Salve机器配置DataNodeTaskTracker的角色,负责分布式数据存储以及任务的执行。


    在进行Hadoop集群配置中,需要在"/etc/hosts"文件中添加集群中所有机器的IP与主机名,这样Master与所有的Slave机器之间不仅可以通过IP进行通信,而且还可以通过主机名进行通信。

    JDK(java集成开发环境)hadoop的安装、配置。


    MapReduce"任务的分解与结果的汇总"

    用于执行MapReduce任务的机器角色有两个:一个是JobTracker;另一个是TaskTrackerJobTracker是用于调度工作的,TaskTracker是用于执行工作的。一个Hadoop集群中只有一台JobTracker(位于Master中)。

    MapReduce框架负责处理了并行编程中分布式存储、工作调度、负载均衡、容错均衡、容错处理以及网络通信等复杂问题,把处理过程高度抽象为两个函数:mapreducemap负责把任务分解成多个任务,reduce负责把分解后多任务处理的结果汇总起来。

  • Hadoop配置实例:具体过程

        1.网络、主机配置:在所有主机上配置其主机名;

        /etc/hosts将集群中所有主机的主机名和对应ip地址加入所有机器的hosts文件中,以便集群之间可以用主机名进行通信和验证。


        2.配置ssh无密码登录


        3.java环境安装:集群所有机器都要安装jdkjdk版本:jdk1.7.0_45,并配置好环境变量:/etc/profile

        # set java environment

        export JAVA_HOME=/usr/java/jdk1.7.0_45

        exportCLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

        exportPATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin

        source /etc/profile  使其生效


       4.hadoop安装和配置:所有机器都要安装hadoophadoop版本:hadoop-1.2.1

       4.1 安装:tarzxvf hadoop-1.2.1.tar.gz ;mv hhadoop-1.2.1 /usr/hadoop;

       将文件夹hadoop的权限分配给hadoop用户。

       4.2 hadoop环境变量:#set hadoop path

       export HADOOP_HOME=/usr/hadoop

       export PATH=$PATH :$HADOOP_HOME/bin

       在"/usr/hadoop"创建"tmp"文件夹:mkdir/usr/hadoop/tmp

       4.3 配置hadoop

       1)配置hadoop-env.sh

       # set java environment

       export JAVA_HOME=/usr/java/jdk1.7.0_45

       2)配置core-site.xml文件:

       3)配置hdfs-site.xml文件

       4)配置mapred-site.xml文件

       5)配置masters文件:加入的为secondarynamenodeip地址

       6)配置slaves文件(Master主机特有):添加datanode节点的主机名或ip地址。

       ps:可以先在master安装并配置好,然后通过scp-r /usr/hadoop root@服务器ip/usr/,将Master上配置好的hadoop所在文件夹"/usr/hadoop"复制到所有的Slave"/usr"目录下。然后在各自机器上将hadoop文件夹权限赋予各自的hadoop用户。并且配置好环境变量等。


       5 启动和验证:

       5.1 格式化HDFS文件系统:

       在Master上使用hadoop用户进行操作:

       hadoop namenode -format

       ps:只需一次,下次启动不再需要格式化,只需start-all.sh

       5.2 启动hadoop

       在启动前关闭集群中所有机器的防火墙,不然会出现datanode开后又自动关闭:

       service iptables stop

       使用下面命令启动:

       start-all.sh

       启动hadoop成功后,在Master 中的tmp 文件夹中生成了dfs 文件夹,在Slave中的tmp 文件夹中均生成了 dfs 文件夹和mapred 文件夹。

       5.3 验证hadoop

       (1)验证方法一:用"jps"命令

       (2)验证方式二:用"hadoopdfsadmin -report")验证


       6 网页查看:访问"http://masterip:50030"


  • HBase基于Hadoop的分布式的、面向列的、可拓展的开源数据库。当需要对大数据进行随机的、实时的读写时使用HBase。属于NoSQL

    HBase利用HadoopHDFS作为其文件存储系统,利用HadoopMapReduce来处理HBase中的海量数据,利用Zookeeper提供分布式协作、分布式同步、配置管理等。

    Hbase的架构:

    LSM - 解决磁盘随机写问题(顺序写才是王道)

    HFile - 解决数据索引问题(只有索引才能高效读)

    WAL - 解决数据持久化(面对故障的持久化解决方案)

    zooKeeper - 解决核心数据的一致性和集群恢复;

    Replication - 引入类似MySQL的数据复制方案,解决可用性;

    此外还有:自动分拆Split、自动压缩(compaction,LSM的伴生技术)、自动负载均衡、自动region迁移。




  • Hadoop使用端口说明:

默认端口                                设置位置                                描述信息

8020 namenode RPC交互端口

8021 JT RPC交互端口

50030mapred.job.tracker.http.addressJobTrackeradministrative web GUI

JOBTRACKERHTTP服务器和端口

50070 dfs.http.address NameNode administrative web GUI

NAMENODEHTTP服务器和端口
50010dfs.datanode.addressDataNode control port (each DataNode listens  on this port and registers it with the NameNode onstartup)

DATANODE控制端口,主要用于DATANODE初始化时向NAMENODE提出注册和应答请求

50020dfs.datanode.ipc.address     DataNode IPC port, usedfor block transfer

DATANODERPC服务器地址和端口

50060mapred.task.tracker.http.address Per TaskTracker webinterface

TASKTRACKERHTTP服务器和端口

50075 dfs.datanode.http.addressPer DataNode webinterface
DATANODEHTTP服务器和端口
50090dfs.secondary.http.addressPer secondary NameNode web interface

辅助DATANODEHTTP服务器和端口



  • HDFSHadoopDistributed File System

   当某个数据集大大小超出单个物理机的存储能力时,我们可以考虑使用集群。管理跨网络机器存储的文件系统叫做分布式  文件系统(DistributedFileSystem)。随着多节点的引入,相应的问题也就出现了,例如其中最重要的一个问题就是如何保证在某个节点失败的情况下数据不会丢失。Hadoop中有一个核心子项目HDFS(HadoopDistributedFileSystem)就是用来管理集群的存储问题的,当然在Hadoop中不仅仅只能使用HDFSHadoop中有一个通用的抽象的文件系统概念,这样可以使Hadoop在不同种类的文件系统下运作,例如Hadoop可以与AmazonS3文件系统集成起来一起使用。


   1HDFS的设计理念:

   1、存储超大文件
   这里的“超大文件”是指几百MBGB甚至TB级别的文件。
   2、流式数据访问
   HDFS是建立在最有效的数据处理模式是一次写多次读(write-once,read-many-times)的模式的概念之上        的,HDFS存储的数据集作为hadoop的分析对象。在数据集生成后,长时间在此数据集上进行各种分析。每次分析都  将设计该数据集的大部分数据甚至全部数据,因此读取整个数据集的时间延迟比读取第一条记录的时间延迟更重要。(流式读取最小化了硬盘的寻址开销,只需要寻址一次,然后就一直读啊读。硬盘的物理构造导致寻址开销的优化跟不上读取开销。所以流式读取更加适合硬盘的本身特性。当然大文件的特点也更适合流式读取。与流数据访问对应的是随机数据访问,它要求定位、查询或修改数据的延迟较小,比较适合于创建数据后再多次读写的情况,传统关系型数据库很符合这一点)
   3、运行在普通廉价的服务器上HDFS设计理念之一就是让它能运行在普通的硬件之上,即便硬件出现故障,也可以通过容错策略来保证数据的高可用。


   2HDFS不适合的场景:

   1、将HDFS用于对数据访问要求低延迟的场景
   由于HDFS是为高数据吞吐量应用而设计的,必然以高延迟为代价。
   2、存储大量小文件
   HDFS中元数据(文件的基本信息)存储在namenode的内存中,而namenode为单点,小文件数量大到一定程度,namenode内存就吃不消了。

   3、多用户写入,任意修改文件

   HDFS中的文件可能只有一个writer,而且写操作总是将数据添加在文件的末尾。她不支持具有多个写入者的操作,也不支持在文件的任意位置进行修改。


   3HDFS的基本概念

   1block:块

   每个磁盘都有一个数据块大小(blocksize),这是一次可以读取或写入数据的最小单位。HDFS中也有数据块的概念,不过HDFS中的数据块却比一般磁盘的数据块(一般为512Byte)大得多。像普通磁盘文件系统那样,HDFS把文件分割成block(下文如果没有特别声明,block都是指HDFS中的64MB大小的block)大小的数据块,并独立存储起来。不过与普通磁盘文件系统不同的是,如果一个文件比单个block小,这个文件并不会占用整个block

   psHDFS为什么要使用大数据块

   HDFS中的数据块比普通磁盘文件系统要大得多,这么做的原因是最小化文件系统中数据寻址的时间。通过设置一个较大的block大小,寻址数据的时间就会比传输数据的时间小得多,从而处理一个大文件(HDFS主要用来处理大数据的嘛)的时间就主要决定于数据传输的时间了。
   如果数据寻址的时间平均为10ms,而传输速率为100MB/S,现在我们来大致计算一下,要想使数据寻址的时间只占到数据传输时间的1%,那么我们需要设置每个block大小为100MB。实际上默认的block大小为64MB(很多HDFS的其他实现也使用128MB)。以后block的大小还可能会随着数据传输速率的增加而增大
   不过block的大小并不会一直增大下去。因为MapReduce中的Map任务每次只能处理一个block,对于同样大小的一个文件,如果block太大从而使maptask太少的话,作业运行的时间反而会增加了

   在分布式文件系统层面又抽象出一个block的概念可以带来有以下好处:
   1.由于没有一个文件必须存储在单个磁盘上的要求了,从而单个文件可以比集群中的任何一个节点的存储空间还要大,这样可以充分利用集群的存储能力。有可能(虽然不常见)一个文件会占用整个集群上所有节点的存储空间。
   2.block(而不是文件)作为抽象单元简化了存储子系统。简单是所有存储系统的共同目标,在发生故障方式多种多样的分布式文件系统中尤为重要。存储子系统只需要处理block就可以了,从而简化了存储管理(因为block是固定大小的,可以很容易的计算出某个磁盘最多可以存储多少个block),而且还省去了元数据的管理负担(因为block只是需要存储的一串数据,文件的诸如访问权限之类的元数据不需要同block存储在一起,从而可以通过另一个系统namenode单独管理起来)。
   3.有了block,提供数据容错和可用性的冗余备份(replication)机制可以更好的工作。在HDFS中,为了防止数据块损坏,或者磁盘及机器当机,每一个block在不同机器上都有几份备份(默认为3)。如果一个block不能用了,HDFS会以一种对用户透明的方式拷贝一份新的备份出来,从而把集群的数据安全级别恢复到以前的水平(你也可以通过提高冗余备份数来提高数据的安全级别)。

  可以使用HDFS中的fsck命令在block层面交互,例如运行命令:
hadoop fsck / -files-blocks
  会列出文件系统中组成所有文件的blocks


   2namenodedatanode

   HDFS集群有两类节点,并以管理者-工作者模式运行,即一个namenode(管理者)和多个datanode(工作者)。namenode管理文件系统的命名空间,它维护着整个文件系统树以及树中所有文件及目录的元数据。这些信息在本地文件系统中以两种形式永久保存:namespaceimage(包括namespace中所有文件的inodeblock列表)和editlog(记录了所有用户对HDFS所做的更改操作)。NameNode也保存着构成给定文件的blocks的位置,但这些信息并不是永久保存在磁盘中的,因为这些信息是在系统启动时根据datanode的反馈信息重建、并且是定时基于datanode的报考更新的,具有很强的动态性。

   客户端(client)代表用户(user)通过与NameNodeDataNode交互来访问文件系统。client提供了一个类似POSIXPortableOperating SystemInterface,可移植操作系统接口)的文件系统接口,所以用户在编程中并不需要namenodedatanode的具体实现。

   datanode是文件系统的工作节点,它们根据需要存储并检索数据块(受客户端或namenode调度),并且定期向namenode发送它们所存储的块的列表。

   namenode是整个分布式文件系统的一个单点故障(singlepoint offailure),没有了namenode整个分布式文件系统就无法使用了,因为我们无法从blocks中重构出相应的文件了。所以确保namenode能从失败中及时恢复是很重要的一件事,我们可以从以下两方面入手:
   A.第一种方法就是备份namenode中保存的永久信息(也就是上文中所提到的namespaceimageeditlog),namenode可以经过额外配置把它的永久信息保存到多个文件系统上去(这些多写操作是同步和原子性的)。最常用的做法是把永久信息保存到本地文件系统和某个远程NFSNetworkFileSystem)上去。
   B.另一种可能的做法就是运行一个secondarynamenode,尽管它的名字跟namenode听起来差不多,但它的功能跟namenode却不一样。它最主要的工作就是把namespaceimage检查点文件与editlog相融合(以防止editlog过大)并把融合后的namespaceimage保存在自己的本地文件系统上,同时发送这个新的备份给namenode。因为需要大量CPU资源和跟namenode一样大小内存的缘故,secondary namenode通常运行在另一个单独的机器上。然后由于secondarynamenode上保存的状态信息总是要滞后于namenode上的状态信息的缘故(未融合的editlog记录了这一部分改变),如果namenode完全失败,数据肯定要丢失一部分。
  通常的做法是把上述两种方法结合起来,也即当namenode当机时,把远端NFS上的namespaceimage拷贝到secondarynamenode上,然后把secondarynamenode当做namenode来运行。


   3HadoopFedoration

   namenode在内存中保存着文件系统中每个文件和目录的引用,但集群规模扩大时,这便造成了一个瓶颈。于是在hadoop2.x发行版中引入了一个新的概念:HadoopFedoration。它允许集群拥有不止一个namenode,这样每个namenode只负责维护文件系统中的一部分,例如一个namenode维护/user目录,另一个namenode可以维护/share目录。
  在fedoration中,每个namenode维护两部分信息:1)由namespace 元数据组成的namespacevolume2)包含其负责维护的某一部分文件系统中的的所有文件的block位置信息的blockpoolnamespacevolume各自之间是独立的,这就意味着namenode之间不用交互,而且某个namenode当机并不影响其他namenode的正常使用。相对于namespace volume而言,Blockpool并不是分区的,所以datanodes需要向集群中的每个namenode注册,并且可能要存储来自多个blockpool的数据。
  要想使用带有fedoration特性的cluster,用户可以使用用户端的挂载表来映射文件路径到namenode。这个可以通过ViewFileSystem来配置,并使用viewfs://URI.


   4HDFSHigh-Availability

   虽然通过在多个文件系统备份namespacemetadata和使用secondarynamenode来定期合并namespaceimageeditlog以产生新的checkpoint可以保护集群以免数据丢失。但这并没有提供集群的高可用性,因为namenode本身仍然是一个单点故障——如果namenode当掉了,所有的客户端,包括mapreduce作业都无法正常读、写以及查看文件了,因为namenode是维护namespacemetadata和提供file-to-block映射的唯一库。
  要想从失败的namenode中恢复,管理员应启动一个新的namenode,同时配置datanode和用户使用这个新的namenode。这个新的namenode暂时还不能正常运作,直到它做完了以下几件事:
   1)把namespace image备份加载入内存;
   2)重放edit log中的操作;
   3)从datanode中接受足够的blockreport(也就是记录各个datanodeblock的信息以确定file-to-block映射),然后离开safemode
  在有很多节点和文件的大的集群中,这个操作可能要花费几十分钟的时间!!

   Hadoop2.x发行版通过加入对HDFSHigh-Availabilty的支持而有效避免了长时间的downtime。在这种实现中,有一对namenode,它们分别配置为activestandby。当activenamenode当掉时,standbynamenode立即接手继续为client提供服务,期间的中断时间很小。为了实现HDFSHigh-Availabilty,结构上发生了以下变化:
   1)两个namenode使用一个高可用的共享设备(最初HA实现使用的是NFS来共享editlog,不过在未来的版本中会提供更多的选项,如构建于ZooKeeper之上的基于BookKeeper的系统)来存储editlog,当standbynamenode接手运行时,它就会立即重放editlog中的操作(同时它也充当着secondarynamenode的角色,不停地合并老的namespaceimage和新的editlog以免editlog过大),从而很快达到与activenamenode当掉前的状态。
   2datanode需要向两个namenode发送blockreport,因为blockmapping是存放在内存,而不是磁盘中的。
   3)用户端(client)必须被合适配置并采用一种对用户透明的方式处理namenode的失败恢复。综合起来,如下图所示:

bubuko.com,布布扣

   有了以上改变做基础,当activenamenode当掉时,因为standynamenode保存着最新的editlog(同时还有上个检查点镜像文件)和最新的blockmappingstandynamenode可以在几十秒内很快地接手继续工作。在实际应用中测得的失败恢复时间会长一些(大约一分钟左右),因为系统需要额外的时间确定active namenode确实已经当机了。

   psedit.log中都保存着哪些信息?         All mutations to the file system namespace,such as file renames, permission changes, file creations, blockallocations, etc, are written to a persistent write-ahead log bythe Name Node before returning success to a client call. Inaddition to this edit log, periodic checkpoints of the filesystem, called the fsimage, are also created and storedon-disk on the Name Node. Block locations, on the other hand,are stored only in memory. The locations of all blocks arereceived via “block reports” sent from the Data Nodes whenthe Name Node is started.


   5Hadoop命令行:hadoopfs命令执行的根目录是/home目录,本机上为/user/root

   1、列出所有HadoopShell支持的命令
   $ bin/hadoop fs -help  
   2、显示关于某个命令的详细信息
   $ bin/hadoop fs -help command-name
   3、用户可使用以下命令在指定路径下查看历史日志汇总(输出目录)
   $ bin/hadoop job -historyoutput-dir
   这条命令会显示作业的细节信息,失败和终止的任务细节。
   4、关于作业的更多细节,比如成功的任务,以及对每个任务的所做的尝试次数等可以用下面的命令查看
   $ bin/hadoop job -history all output-dir
   5、格式化一个新的分布式文件系统:
   $ bin/hadoop namenode -format
   6、在分配的NameNode上,运行下面的命令启动HDFS
   $ bin/start-dfs.sh
   bin/start-dfs.sh脚本会参照NameNode${HADOOP_CONF_DIR}/slaves文件的内容,在所有列出的slave上启动DataNode守护进程。
   7、在分配的JobTracker上,运行下面的命令启动Map/Reduce
   $ bin/start-mapred.sh
   bin/start-mapred.sh脚本会参照JobTracker${HADOOP_CONF_DIR}/slaves文件的内容,在所有列出的slave上启动TaskTracker守护进程。
   8、在分配的NameNode上,执行下面的命令停止HDFS
   $ bin/stop-dfs.sh
   bin/stop-dfs.sh脚本会参照NameNode${HADOOP_CONF_DIR}/slaves文件的内容,在所有列出的slave上停止DataNode守护进程。
   9、在分配的JobTracker上,运行下面的命令停止Map/Reduce
   $ bin/stop-mapred.sh
   bin/stop-mapred.sh脚本会参照JobTracker${HADOOP_CONF_DIR}/slaves文件的内容,在所有列出的slave上停止TaskTracker守护进程。

   DFSShell
   10hadoopdfs命令执行的根目录为“/”

   11、创建一个jay目录
   $ bin/hadoop dfs -mkdir /jay
   12、查看名为/foodir/myfile.txt 的文件内容
   $ bin/hadoop dfs -cat /foodir/myfile.txt

   DFSAdmin
   13、将集群置于安全模式
   $ bin/hadoop dfsadmin -safemode enter
   14、显示Datanode列表
   $ bin/hadoop dfsadmin -report
   15、使Datanode节点datanodename退役
   $ bin/hadoop dfsadmin -decommission datanodename
   16bin/hadoopdfsadmin -help 命令能列出所有当前支持的命令。比如:
   * -report:报告HDFS的基本统计信息。有些信息也可以在NameNodeWeb服务首页看到。
   * -safemode:虽然通常并不需要,但是管理员的确可以手动让NameNode进入或离开安全模式。

   *-finalizeUpgrade:删除上一次升级时制作的集群备份。
   17、显式地将HDFS置于安全模式
   $ bin/hadoop dfsadmin -safemode
   18、在升级之前,管理员需要用(升级终结操作)命令删除存在的备份文件

    $ bin/hadoop dfsadmin-finalizeUpgrade
   19、能够知道是否需要对一个集群执行升级终结操作。
   $ bin/hadoop dfsadmin -upgradeProgress status
   20、使用-upgrade选项运行新的版本
   $ bin/start-dfs.sh-upgrade
   21、如果需要退回到老版本,就必须停止集群并且部署老版本的Hadoop,用回滚选项启动集群
   $ bin/start-dfs.h -rollback
   22、下面的新命令或新选项是用于支持配额的。前两个是管理员命令。
    * dfsadmin-setquota <N><directory>...<directory>
   把每个目录配额设为N。这个命令会在每个目录上尝试,如果N不是一个正的长整型数,目录不存在或是文件名,或者目录超过配额,则会产生错误报告。
   *dfsadmin -clrquota<directory>...<director>
   为每个目录删除配额。这个命令会在每个目录上尝试,如果目录不存在或者是文件,则会产生错误报告。如果目录原来没有设置配额不会报错。
   *fs -count -q <directory>...<directory>
   使用-q选项,会报告每个目录设置的配额,以及剩余配额。如果目录没有设置配额,会报告noneinf
   23、创建一个hadoop档案文件
   $hadoop archive -archiveName NAME <src>* <dest>
   -archiveNameNAME 要创建的档案的名字。
   src文件系统的路径名,和通常含正则表达的一样。
   dest保存档案文件的目标目录。
   24、递归地拷贝文件或目录
   $hadoop distcp <srcurl> <desturl>
   srcurl   Url
   desturl 目标Url

   25、运行HDFS文件系统检查工具(fscktools)
   用法:hadoopfsck [GENERIC_OPTIONS] <path> [-move | -delete | -openforwrite]    [-files [-blocks [-locations | -racks]]]
   命令选项描述
   <path>检查的起始目录。
   -move移动受损文件到/lost+found
   -delete删除受损文件。
   -openforwrite打印出写打开的文件。
   -files打印出正被检查的文件。
   -blocks打印出块信息报告。
   -locations打印出每个块的位置信息。
   -racks打印出data-node的网络拓扑结构。
   26、用于和MapReduce作业交互和命令(jar)
   用法:hadoopjob [GENERIC_OPTIONS] [-submit <job-file>] | [-status <job-    id>]| [-counter <job-id> <group-name> <counter-name>] |[-kill <job-id>] | [-events <job-id> <from-event-#><#-of-events>] | [-history [all] <jobOutputDir>] | [-list[all]] | [-kill-task <task-id>] | [-fail-task<task-id>]
   命令选项描述
   -submit<job-file>提交作业
   -status<job-id>打印mapreduce完成百分比和所有计数器。
   -counter<job-id> <group-name> <counter-name>打印计数器的值。
   -kill<job-id>杀死指定作业。
   -events<job-id> <from-event-#><#-of-events>打印给定范围内jobtracker接收到的事件细节。
   -history[all] <jobOutputDir> -history打印作业的细节、失败及被杀死原因的细节。更多的<jobOutputDir>关于一个作业的细节比如成功的任务,做过的任务尝试等信息可以通过指定[all]选项查看


   -list [all]  -list all显示所有作业。-list只显示将要完成的作业。
   -kill-task<task-id>杀死任务。被杀死的任务不会不利于失败尝试。
   -fail-task<task-id>使任务失败。被失败的任务会对失败尝试不利。
   27、运行pipes作业 :用法               :hadooppipes [-conf <path>] [-jobconf <key=value>, <key=value>,...] [-input <path>] [-output <path>] [-jar <jarfile>] [-inputformat <class>] [-map <class>][-partitioner <class>] [-reduce <class>] [-writer<class>] [-program <executable>] [-reduces<num>]
   命令选项描述
-conf<path>作业的配置
-jobconf<key=value>, <key=value>, ... 增加/覆盖作业的配置项
-input<path>输入目录
-output<path>输出目录
-jar<jar file> Jar文件名
-inputformat<class>  InputFormat
-map<class>  Java Map
-partitioner<class>  Java Partitioner
-reduce <class> Java Reduce
-writer<class> Java RecordWriter
-program <executable> 可执行程序的URI
-reduces<num> reduce个数
   28、打印版本信息。
   用法:hadoopversion
   29hadoop脚本可用于调用任何类。
   用法:hadoopCLASSNAME
   运行名字为CLASSNAME的类。
   30、运行集群平衡工具。管理员可以简单的按Ctrl-C来停止平衡过程(balancer)
   用法:hadoopbalancer [-threshold <threshold>]
   命令选项描述
   -threshold<threshold>磁盘容量的百分比。这会覆盖缺省的阀值。
   31、获取或设置每个守护进程的日志级别(daemonlog)
   用法:hadoopdaemonlog -getlevel <host:port> <name>
   用法:hadoopdaemonlog -setlevel <host:port> <name><level>
   命令选项描述
   -getlevel<host:port><name>打印运行在<host:port>的守护进程的日志级别。这个命令内部会连    http://<host:port>/logLevel?log=<name>
   -setlevel<host:port> <name><level>设置运行在<host:port>的守护进程的日志级别。这个命令内部会连http://<host:port>/logLevel?log=<name>
   32、运行一个HDFSdatanode
   用法:hadoopdatanode[-rollback]
   命令选项描述
   -rollbackdatanode回滚到前一个版本。这需要在停止datanode,分发老的hadoop版本之后使用。
   33、运行一个HDFSdfsadmin客户端。
用法:hadoopdfsadmin [GENERIC_OPTIONS] [-report] [-safemode enter | leave | get |wait] [-refreshNodes] [-finalizeUpgrade] [-upgradeProgress status |details | force] [-metasave filename] [-setQuota <quota><dirname>...<dirname>] [-clrQuota <dirname>...<dirname>][-help[cmd]]
   命令选项描述
   -report报告文件系统的基本信息和统计信息。
   -safemodeenter | leave | get |wait安全模式维护命令。安全模式是Namenode的一个状态,这种状态下,Namenode1.不接受对名字空间的更改(只读)2.不复制或删除块。Namenode会在启动时自动进入安全模式,当配置的块最小百分比数满足最小的副本数条件时,会自动离开安全模式。安全模式可以手动进入,但是这样的话也必须手动关闭安全模式。
   -refreshNodes重新读取hostsexclude文件,更新允许连到Namenode的或那些需要退出或入编的Datanode的集合。
   -finalizeUpgrade终结HDFS的升级操作。Datanode删除前一个版本的工作目录,之后Namenode也这样做。这个操作完结整个升级过程。
   -upgradeProgressstatus | details | force请求当前系统的升级状态,状态的细节,或者强制升级操作进行。
   -metasavefilename保存Namenode的主要数据结构到hadoop.log.dir属性指定的目录下的<filename>文件。对于下面的每一项,<filename>中都会一行内容与之对应:
   1.Namenode收到的Datanode的心跳信号
   2.等待被复制的块
   3.正在被复制的块
   4.等待被删除的块
   -setQuota<quota> <dirname>...<dirname>  为每个目录<dirname>设定配额<quota>。目录配额是一个长整型整数,强制限定了目录树下的名字个数。
命令会在这个目录上工作良好,以下情况会报错:
   1.N不是一个正整数,或者
   2.用户不是管理员,或者
   3.这个目录不存在或是文件,或者
   4.目录会马上超出新设定的配额。
   -clrQuota<dirname>...<dirname> 为每一个目录<dirname>清除配额设定。命令会在这个目录上工作良好,以下情况会报错:
   1.这个目录不存在或是文件,或者
   2.用户不是管理员。
   如果目录原来没有配额不会报错。
   -help[cmd] 显示给定命令的帮助信息,如果没有给定命令,则显示所有命令的帮助信息。
   34、运行MapReducejob Tracker节点(jobtracker)
   用法:hadoopjobtracker
   35、运行namenode。有关升级,回滚,升级终结的更多信息请参考升级和回滚。
   用法:hadoopnamenode [-format] | [-upgrade] | [-rollback] | [-finalize] |[-importCheckpoint]
   命令选项描述
   -format格式化namenode。它启动namenode,格式化namenode,之后关闭namenode
   -upgrade分发新版本的hadoop后,namenode应以upgrade选项启动。
   -rollbacknamenode回滚到前一版本。这个选项要在停止集群,分发老的hadoop版本后使用。
   -finalizefinalize会删除文件系统的前一状态。最近的升级会被持久化,rollback选项将再不可用,升级终结操作之后,它会停掉namenode
   -importCheckpoint从检查点目录装载镜像并保存到当前检查点目录,检查点目录由fs.checkpoint.dir指定。
   36、运行HDFSsecondarynamenode
   用法:hadoopsecondarynamenode [-checkpoint [force]] |[-geteditsize]
   命令选项描述

   -checkpoint [force]如果EditLog的大小>= fs.checkpoint.size,启动Secondarynamenode的检查点过程。如果使用了-force,将不考虑EditLog的大小。
   -geteditsize打印EditLog大小。
   37、运行MapReducetaskTracker节点。
   用法:hadooptasktracker

       

本文出自 “游响云停” 博客,请务必保留此出处http://rangochen.blog.51cto.com/2445286/1371441

Hadoop集群搭建,布布扣,bubuko.com

Hadoop集群搭建

原文:http://rangochen.blog.51cto.com/2445286/1371441

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!