hadoop常用命令

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

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

    • 单独启停nn、dn服务

      hadoop-daemon.sh namenode | datanode | journalnode |zkfc
      hadoop-daemons.sh 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常用命令总结_第2张图片


  • hdfs文件系统管理
    • hadoop命令使用
      Usage: hadoop [--config confdir] [COMMAND | CLASSNAME]
      fs                   run a generic filesystem user client#运行一个文件系统客户端
      version              print the version #查看版本信息
      jar             run a jar file #运行jar文件,注使用**yarn jar**运行yarn应用
      distcp    #递归复制文件或目录;DistCp(分布式拷贝)是用于大规模集群内部和集群之间拷贝的工具。 它使用Map/Reduce实现文件分发,错误处理和恢复,以及报告生成
      archive -archiveName NAME -p  *  #创建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]  ...]  #查看文件内容
      [-checksum  ...] #查看文件校验码
      [-chgrp [-R] GROUP PATH...]  #修改文件属组
      [-chmod [-R]  PATH...] #修改文件权限
      [-chown [-R] [OWNER][:[GROUP]] PATH...] #修改文件属主或属组
      [-copyFromLocal [-f] [-p] [-l]  ... ] #复制本地文件到hdfs文件系统,类似put命令
      [-copyToLocal [-p] [-ignoreCrc] [-crc]  ... ] #复制hdfs文件到本地,类似get命令
      [-cp [-f] [-p | -p[topax]]  ... ] #允许多源复制操作 ,目标路径必须是目录
      [-createSnapshot  []] #创建快照
      [-deleteSnapshot  ] #删除快照
      [-df [-h] [ ...]] #显示文件系统使用空间
      [-du [-s] [-h]  ...] #显示某个目录内包含的文件的大小,目录占用空间大小,与Linux命令一样
      [-find  ...  ...] #查找文件
      [-get [-p] [-ignoreCrc] [-crc]  ... ]
      [-getfacl [-R] ]
      [-getfattr [-R] {-n name | -d} [-e en] ]
      [-help [cmd ...]] #查看帮助
      [-ls [-d] [-h] [-R] [ ...]]  #替代“hadoop fs -ls -R”
      [-mkdir [-p]  ...] #创建目录
      [-moveFromLocal  ... ]
      [-moveToLocal  ]
      [-mv  ... ]
      [-put [-f] [-p] [-l]  ... ]
      [-renameSnapshot   ]
      [-rm [-f] [-r|-R] [-skipTrash]  ...]
      [-rmdir [--ignore-fail-on-non-empty]  ...]
      [-setfacl [-R] [{-b|-k} {-m|-x } ]|[--set  ]]
      [-setfattr {-n name [-v value] | -x name} ]
      [-stat [format]  ...] 
      [-tail [-f] ]
      [-test -[defsz] ] #测试命令 ,-d是否为目录,-e文件是否存在,-z是否为空文件,用法一样
      [-text [-ignoreCrc]  ...]
      [-touchz  ...] #创建 0字节空文件
      [-truncate [-w]   ...]
      [-usage [cmd ...]] #查看命令的用法

      hadoop常用命令总结_第3张图片

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

      hadoop常用命令总结_第4张图片

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

      hadoop balancer [-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] #rm节点故障转移
    -transitionToStandby 
    -failover [--forcefence] [--forceactive]  
    -getServiceState #检查当前rm状态
    -checkHealth  
    -help [cmd]

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

      hdfs namenode -format
      hadoop常用命令总结_第6张图片

    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常用命令总结_第7张图片
    6. 查看各节点的服务进程是否正常运行
      hadoop常用命令总结_第8张图片
  • webgui访问
    hadoop常用命令总结_第9张图片
    hadoop常用命令总结_第10张图片