hadoop常用命令总结
hadoop常用命令
- 集群节点服务启停
- hdfs文件系统管理
- yarn资源集群管理
- hadoop启动过程
-
集群节点服务启停
如图所示脚本所在路径:主要分类类命令:管理hdfs和管理yarn资源
服务启动方式:分别启动各节点服务、集群脚本启动整个服务。- 单独启停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服务,这两个脚本即将废弃,建议使用上面两个脚本管理服务。
- 单独启停nn、dn服务
- 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 ...]] #查看命令的用法
- 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>] #查看命令帮助
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达到平衡状态达到磁盘使用率偏差值,值越低越平衡,但消耗时间也越长。
- hadoop命令使用
- 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服务。
步骤2:hadoop启动- 启动journalnode日志服务
- 在hadoop1上格式化namenode,仅当第一次启动时需要格式化。出现该信息表示成功。
hdfs namenode -format
- 在节点1上启动namenode节点,由于采用主备模式NN节点,hadoop2上nn节点缺少元数据信息还不会启动,需要手动同步一次元数据。
hadoop1:hadoop-daemon.sh start namenode
hadoop2:hdfs namenode -bootstrapStandby,在启动nn - 在hadoop1上格式化zkfc,无报错及为成功(仅在第一次启动之前需要格式化,后面启动不需要格式化)。(如果不进行这一步,会出现namenode无法向zookeeper注册,会出现两个namenode都为备的状态。
hdfs zkfc -formatZK
hadoop-daemon.sh start zkfc #把故障转移节点服务启动,否则当前状态都为standby! - 然后可以启动各节点的hdfs、yarn服务
- 查看各节点的服务进程是否正常运行
- 启动journalnode日志服务
- webgui访问