hadoop常用命令总结

hadoop常用命令

  • 集群节点服务启停
  • hdfs文件系统管理
  • yarn资源集群管理
  • hadoop启动过程

  • 集群节点服务启停
    如图所示脚本所在路径:主要分类类命令:管理hdfs和管理yarn资源
    服务启动方式:分别启动各节点服务、集群脚本启动整个服务。
    hadoop常用命令总结

    • 单独启停nn、dn服务

      hadoop-daemon.sh <start | stop> namenode | datanode | journalnode |zkfc
      hadoop-daemons.sh <start | stop> namenode | datanode |z kfc#表示启动集群内所有dn/nn服务

    • 启动yarn服务

      yarn-daemon.sh start |stop resourcemanager | nodemanager | proxyserver
      yarn-daemons.sh start |stop resourcemanager | nodemanager | proxyserver #表示启动yarn集群内所有rm/nm等服务

    • 启动MapReduce任务历史服务

      mr-jobhistory-daemon.sh start | stop historyserver

    [root@hadoop1 ~]# hadoop-daemons.sh start journalnode
    hadoop1: starting journalnode, logging to /hadoop/soft/hadoop-2.7.7/logs/hadoop-root-journalnode-hadoop1.out
    hadoop2: starting journalnode, logging to /hadoop/soft/hadoop-2.7.7/logs/hadoop-root-journalnode-hadoop2.out
    hadoop3: starting journalnode, logging to /hadoop/soft/hadoop-2.7.7/logs/hadoop-root-journalnode-hadoop3.out
    [root@hadoop1 ~]# jps
    1628 JournalNode
    1663 Jps
    [root@hadoop1 ~]# ssh hadoop2 jps
    1513 Jps
    1452 JournalNode
    [root@hadoop1 ~]# ssh hadoop3 jps
    1473 Jps
    1412 JournalNode
    • 脚本管理所有服务:需要配置ssh互信以及配置slaves文件

      start-dfs.sh | stop-dfs.sh #启停所有hdfs服务
      start-yarn.sh | stop-yarn.sh #启停所有yarn服务
      start-all.sh | stop-all.sh #可以启停所有hdfs、yarn服务,这两个脚本即将废弃,建议使用上面两个脚本管理服务。
      hadoop常用命令总结


  • hdfs文件系统管理
    • hadoop命令使用
      Usage: hadoop [--config confdir] [COMMAND | CLASSNAME]
      fs                   run a generic filesystem user client#运行一个文件系统客户端
      version              print the version #查看版本信息
      jar <jar>            run a jar file #运行jar文件,注使用**yarn jar**运行yarn应用
      distcp <srcurl> <desturl>  #递归复制文件或目录;DistCp(分布式拷贝)是用于大规模集群内部和集群之间拷贝的工具。 它使用Map/Reduce实现文件分发,错误处理和恢复,以及报告生成
      archive -archiveName NAME -p <parent path> <src>* <dest> #创建hadoop归档文件
      classpath            #列出所需要的类库  

      bash$ hadoop distcp hdfs://nn1:8020/foo/bar hdfs://nn2:8020/bar/foo

    • 用户文件系统管理相关命令:操作基本类似Linux
      [root@hadoop2 ~]# hadoop/hdfs  fs
      Usage: hadoop fs [generic options]
      [-cat [-ignoreCrc] <src> ...]  #查看文件内容
      [-checksum <src> ...] #查看文件校验码
      [-chgrp [-R] GROUP PATH...]  #修改文件属组
      [-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...] #修改文件权限
      [-chown [-R] [OWNER][:[GROUP]] PATH...] #修改文件属主或属组
      [-copyFromLocal [-f] [-p] [-l] <localsrc> ... <dst>] #复制本地文件到hdfs文件系统,类似put命令
      [-copyToLocal [-p] [-ignoreCrc] [-crc] <src> ... <localdst>] #复制hdfs文件到本地,类似get命令
      [-cp [-f] [-p | -p[topax]] <src> ... <dst>] #允许多源复制操作 ,目标路径必须是目录
      [-createSnapshot <snapshotDir> [<snapshotName>]] #创建快照
      [-deleteSnapshot <snapshotDir> <snapshotName>] #删除快照
      [-df [-h] [<path> ...]] #显示文件系统使用空间
      [-du [-s] [-h] <path> ...] #显示某个目录内包含的文件的大小,目录占用空间大小,与Linux命令一样
      [-find <path> ... <expression> ...] #查找文件
      [-get [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]
      [-getfacl [-R] <path>]
      [-getfattr [-R] {-n name | -d} [-e en] <path>]
      [-help [cmd ...]] #查看帮助
      [-ls [-d] [-h] [-R] [<path> ...]]  #替代“hadoop fs -ls -R”
      [-mkdir [-p] <path> ...] #创建目录
      [-moveFromLocal <localsrc> ... <dst>]
      [-moveToLocal <src> <localdst>]
      [-mv <src> ... <dst>]
      [-put [-f] [-p] [-l] <localsrc> ... <dst>]
      [-renameSnapshot <snapshotDir> <oldName> <newName>]
      [-rm [-f] [-r|-R] [-skipTrash] <src> ...]
      [-rmdir [--ignore-fail-on-non-empty] <dir> ...]
      [-setfacl [-R] [{-b|-k} {-m|-x <acl_spec>} <path>]|[--set <acl_spec> <path>]]
      [-setfattr {-n name [-v value] | -x name} <path>]
      [-stat [format] <path> ...] 
      [-tail [-f] <file>]
      [-test -[defsz] <path>] #测试命令 ,-d是否为目录,-e文件是否存在,-z是否为空文件,用法一样
      [-text [-ignoreCrc] <src> ...]
      [-touchz <path> ...] #创建 0字节空文件
      [-truncate [-w] <length> <path> ...]
      [-usage [cmd ...]] #查看命令的用法

      hadoop常用命令总结

    • hdfs管理命令
      [root@hadoop2 ~]# hdfs haadmin  # dfs管理客户端,查看hdfs状态集群
      Usage: haadmin 
      [-transitionToActive [--forceactive] <serviceId>] 
      [-transitionToStandby <serviceId>]
      [-failover [--forcefence] [--forceactive] <serviceId> <serviceId>] #以上3条关于手动故障转移命令
      [-getServiceState <serviceId>] #查看nn节点处active还是standby状态
      [-checkHealth <serviceId>] #检查nn节点是否健康
      [-help <command>] #查看命令帮助

      hadoop常用命令总结

      Usage: hdfs dfsadmin :Note: hdfs超级管理员才能够运行该命令
      [-report [-live] [-dead] [-decommissioning]] #报告文件系统的基本信息和统计信息
      [-safemode <enter | leave | get | wait>]  #安全模式维护命令。安全模式是Namenode的一个状态, 不接受对名字空间的更改(只读)、 不复制或删除块
      [-saveNamespace] #保存当前名称空间到存储目录,开始新edit-log,需要安全模式
      [-rollEdits] 
      [-restoreFailedStorage true|false|check]
      [-refreshNodes]  #重新读取hosts和exclude文件,更新允许连到NN的那些需要退出或新加入的Datanode。
      [-setQuota <quota> <dirname>...<dirname>] #限制一个目录包含最多子目录和文件 
      #hdfs dfsadmin -setQuota 1t  /user/dirname
      [-clrQuota <dirname>...<dirname>]
      [-setSpaceQuota <quota> [-storageType <storagetype>] <dirname>...<dirname>] #设置一个目录最多使用空间
      [-clrSpaceQuota [-storageType <storagetype>] <dirname>...<dirname>]
      [-refreshServiceAcl] 
      [-refreshUserToGroupsMappings]
      [-refreshSuperUserGroupsConfiguration]
      [-refreshCallQueue] #刷新请求队列
      [-refresh <host:ipc_port> <key> [arg1..argn]
      [-reconfig <datanode|...> <host:ipc_port> <start|status>]  #将datanode节点重新加入集群
      [-refreshNamenodes datanode_host:ipc_port]
      [-deleteBlockPool datanode_host:ipc_port blockpoolId [force]]
      [-setBalancerBandwidth <bandwidth in bytes per second>]
      [-fetchImage <local directory>]
      [-allowSnapshot <snapshotDir>] #某目录允许快照才可以进行快照
      [-disallowSnapshot <snapshotDir>]
      [-shutdownDatanode <datanode_host:ipc_port> [upgrade]]
      [-getDatanodeInfo <datanode_host:ipc_port>]
      [-metasave filename]    
    • 数据块重新分布,Ctrl-C来停止平衡过程

      hadoop balancer [-threshold <threshold>] # 磁盘容量的百分比
      hdfs达到平衡状态达到磁盘使用率偏差值,值越低越平衡,但消耗时间也越长。


  • yarn资源集群管理
    [root@hadoop2 ~]# yarn rmadmin #resourcemanager 客户端
    Usage: yarn rmadmin
    -refreshQueues  #重载队列的acl、状态及调度器队列
    -refreshNodes #为RM刷新主机信息
    -refreshSuperUserGroupsConfiguration 
    -refreshUserToGroupsMappings 
    -refreshAdminAcls 
    -refreshServiceAcl 
    -addToClusterNodeLabels [label1,label2,label3] (label splitted by ",")
    -removeFromClusterNodeLabels [label1,label2,label3] (label splitted by ",")
    -replaceLabelsOnNode [node1[:port]=label1,label2 node2[:port]=label1,label2]
    -directlyAccessNodeLabelStore 
    -transitionToActive [--forceactive] <serviceId>#rm节点故障转移
    -transitionToStandby <serviceId>
    -failover [--forcefence] [--forceactive] <serviceId> <serviceId>
    -getServiceState <serviceId>#检查当前rm状态
    -checkHealth <serviceId> 
    -help [cmd]

  • ha hadoop启动流程:安装完第一次启动。。。
    集群搭建环境:
    步骤1:启动zookeeper服务。由于ha hadoop依赖zookeeper服务。
    hadoop常用命令总结
    步骤2:hadoop启动
    1. 启动journalnode日志服务
      hadoop常用命令总结
    2. 在hadoop1上格式化namenode,仅当第一次启动时需要格式化。出现该信息表示成功。

      hdfs namenode -format
      hadoop常用命令总结

    3. 在节点1上启动namenode节点,由于采用主备模式NN节点,hadoop2上nn节点缺少元数据信息还不会启动,需要手动同步一次元数据。

      hadoop1:hadoop-daemon.sh start namenode
      hadoop2:hdfs namenode -bootstrapStandby,在启动nn

    4. 在hadoop1上格式化zkfc,无报错及为成功(仅在第一次启动之前需要格式化,后面启动不需要格式化)。(如果不进行这一步,会出现namenode无法向zookeeper注册,会出现两个namenode都为备的状态。

      hdfs zkfc -formatZK
      hadoop-daemon.sh start zkfc #把故障转移节点服务启动,否则当前状态都为standby!

    5. 然后可以启动各节点的hdfs、yarn服务
      hadoop常用命令总结
    6. 查看各节点的服务进程是否正常运行
      hadoop常用命令总结
  • webgui访问
    hadoop常用命令总结
    hadoop常用命令总结