分类: 系统运维
2014-12-26 18:45:34
进入bin目录,运行 ./hadoop namenode –format
进入hadoop目录,在bin/下面有很多启动脚本,可以根据自己的需要来启动。
* start-all.sh 启动所有的Hadoop守护。包括namenode, datanode, jobtracker, tasktrack
* stop-all.sh 停止所有的Hadoop
* start-mapred.sh 启动Map/Reduce守护。包括Jobtracker和Tasktrack
* stop-mapred.sh 停止Map/Reduce守护
* start-dfs.sh 启动Hadoop DFS守护Namenode和Datanode
* stop-dfs.sh 停止DFS守护
./hadoop-daemon.sh start/stop namenode
./hadoop-daemon.sh start/stop secondarynamenode
./hadoop-daemon.sh start/stop jobtracker
./hadoop-daemon.sh start/stop datanode
./hadoop-daemon.sh start/stop tasktracker
所有的hadoop命令均由bin/hadoop脚本引发。不指定参数运行hadoop脚本会打印所有命令的描述。
hadoop [--config confdir] [COMMAND] [GENERIC_OPTIONS] [COMMAND_OPTIONS]
Hadoop有一个选项解析框架用于解析一般的选项和运行类。
命令选项
--config confdir 覆盖缺省配置目录。缺省是${HADOOP_HOME}/conf。
GENERIC_OPTIONS 多个命令都支持的通用选项。
COMMAND
命令选项 各种各样的命令和它们的选项会在下面提到。这些命令被分为 用户命令 管理命令两组。
常规选项
下面的选项被 dfsadmin, fs, fsck和 job支持。 应用程序要实现 Tool来支持 常规选项。
GENERIC_OPTION 描述
-conf
-D
-fs
-jt
-files <逗号分隔的文件列表> 指定要拷贝到map reduce集群的文件的逗号分隔的列表。 只适用于job。
-libjars <逗号分隔的jar列表> 指定要包含到classpath中的jar文件的逗号分隔的列表。 只适用于job。
-archives <逗号分隔的archive列表> 指定要被解压到计算节点上的档案文件的逗号分割的列表。 只适用于job。
hadoop集群用户的常用命令。
创建一个hadoop档案文件。参考 Hadoop Archives.
用法:hadoop
archive -archiveName NAME
命令选项 描述
-archiveName NAME 要创建的档案的名字。
src 文件系统的路径名,和通常含正则表达的一样。
dest 保存档案文件的目标目录。
递归地拷贝文件或目录。参考DistCp指南以获取等多信息。
用法:hadoop
distcp
命令选项 描述
srcurl 源Url
desturl 目标Url
[hadoop@DataNode03 ~]$ hadoop distcp /data_new /imos_data
[hadoop@DataNode03 ~]$ hadoop fs -ls /imos_data/data_new
Found 12 items
-rw-r--r-- 3 hadoop supergroup 72720745 2013-10-17 16:47 /imos_data/data_new/imos_log_20131016230000_V1R6_5min.log.tar.gz
-rw-r--r-- 3 hadoop supergroup 1389921 2013-10-17 16:47 /imos_data/data_new/imosother_log_20131016230000_V1R6_5min.log.tar.gz
不同集群间使用方法:
[hadoop@Slave3 ~]$ hadoop distcp hdfs://10.0.2.75:54310/input/dui /distcp/
Or
[hadoop@Slave3 ~]$ hadoop distcp hdfs://10.0.2.75:54310/input/dui hdfs://10.0.2.58:54310/distcp/
查看:
[hadoop@Slave3 ~]$ hadoop fs -ls /distcp
Found 2 items
drwxr-xr-x - hadoop supergroup 0 2013-11-20 17:32 /distcp/_distcp_logs_j7ji12
drwxr-xr-x - hadoop supergroup 0 2013-11-20 17:32 /distcp/dui
[hadoop@Slave3 ~]$ hadoop fs -ls /distcp/dui
Found 6 items
-rw-r--r-- 2 hadoop supergroup 14224179 2013-11-20 17:32 /distcp/dui/dui_20131102_2355.aser.gz
-rw-r--r-- 2 hadoop supergroup 30984730 2013-11-20 17:32 /distcp/dui/dui_20131102_2355.cook.gz
-rw-r--r-- 2 hadoop supergroup 9735220 2013-11-20 17:32 /distcp/dui/dui_20131102_2355.fser.gz
-rw-r--r-- 2 hadoop supergroup 456947612 2013-11-20 17:32 /distcp/dui/dui_20131102_2355.gene.gz
-rw-r--r-- 2 hadoop supergroup 107209520 2013-11-20 17:32 /distcp/dui/dui_20131102_2355.spec.gz
-rw-r--r-- 2 hadoop supergroup 4437913 2013-11-20 17:32 /distcp/dui/dui_20131102_2355.topn.gz
用法:hadoop fs [GENERIC_OPTIONS] [COMMAND_OPTIONS]
运行一个常规的文件系统客户端。
各种命令选项可以参考HDFS
Shell指南。
运行HDFS文件系统检查工具。参考Fsck了解更多。
用法:hadoop
fsck [GENERIC_OPTIONS]
命令选项 描述
-move 移动受损文件到/lost+found
-delete 删除受损文件。
-openforwrite 打印出写打开的文件。
-files 打印出正被检查的文件。
-blocks 打印出块信息报告。
-locations 打印出每个块的位置信息。
-racks 打印出data-node的网络拓扑结构。
[hadoop@NameNode01 ~]$ hadoop fsck /input -files -locations -racks -delete
FSCK started by hadoop (auth:SIMPLE) from /10.0.2.75 for path /input at Wed Nov 20 17:53:27 CST 2013
/input
/input/dui
/input/dui/dui_20131102_2355.aser.gz 14224179 bytes, 1 block(s): OK
/input/dui/dui_20131102_2355.cook.gz 30984730 bytes, 1 block(s): OK
/input/dui/dui_20131102_2355.fser.gz 9735220 bytes, 1 block(s): OK
/input/dui/dui_20131102_2355.gene.gz 456947612 bytes, 7 block(s): OK
/input/dui/dui_20131102_2355.spec.gz 107209520 bytes, 2 block(s): OK
/input/dui/dui_20131102_2355.topn.gz 4437913 bytes, 1 block(s): OK
Status: HEALTHY
Total size: 623539174 B
Total dirs: 2
Total files: 6
Total blocks (validated): 13 (avg. block size 47964551 B)
Minimally replicated blocks: 13 (100.0 %)
Over-replicated blocks: 0 (0.0 %)
Under-replicated blocks: 0 (0.0 %)
Mis-replicated blocks: 0 (0.0 %)
Default replication factor: 3
Average block replication: 3.0
Corrupt blocks: 0
Missing replicas: 0 (0.0 %)
Number of data-nodes: 4
Number of racks: 1
FSCK ended at Wed Nov 20 17:53:27 CST 2013 in 3 milliseconds
[hadoop@NameNode01 ~]$ hadoop fsck -racks
FSCK started by hadoop (auth:SIMPLE) from /10.0.2.75 for path / at Wed Nov 20 17:44:49 CST 2013
................................Status: HEALTHY
Total size: 624055703 B
Total dirs: 41
Total files: 32
Total blocks (validated): 33 (avg. block size 18910778 B)
Minimally replicated blocks: 33 (100.0 %)
Over-replicated blocks: 0 (0.0 %)
Under-replicated blocks: 0 (0.0 %)
Mis-replicated blocks: 0 (0.0 %)
Default replication factor: 3 副本数
Average block replication: 3.0
Corrupt blocks: 0 破损的block数
Missing replicas: 0 (0.0 %)
Number of data-nodes: 4
Number of racks: 1
FSCK
ended at Wed Nov 20 17:44:49 CST 2013 in 27 milliseconds
运行jar文件。用户可以把他们的Map Reduce代码捆绑到jar文件中,使用这个命令执行。
用法:hadoop
jar
streaming作业是通过这个命令执行的。参考Streaming examples中的例子。
Word count例子也是通过jar命令运行的。参考Wordcount example。
用于和Map Reduce作业交互和命令。
用法:hadoop
job [GENERIC_OPTIONS] [-submit
命令选项 描述
-submit
-status
-counter
-kill
-events
-history
[all]
-list [all] -list all显示所有作业。-list只显示将要完成的作业。
-kill-task
-fail-task
运行pipes作业。
用法:hadoop
pipes [-conf
命令选项 描述
-conf
-jobconf
-input
-output
-jar
-inputformat
-map
-partitioner
-reduce
-writer
-program
-reduces
打印版本信息。
用法:hadoop version
[hadoop@NameNode01 ~]$ hadoop version
Hadoop 0.20.2-cdh3u5
Subversion svn://10.0.2.251/other/DP/platform/offline/hadoop/cluster/trunk/hadoop-0.20.2-cdh3u5 -r 19148
Compiled by root on Tue Feb 5 10:54:59 CST 2013
From source with checksum a7e2eac2a2d524445ae15ab38b691d8f
hadoop脚本可用于调调用任何类。
用法:hadoop CLASSNAME
运行名字为CLASSNAME的类。
hadoop集群管理员常用的命令。
运行集群平衡工具。管理员可以简单的按Ctrl-C来停止平衡过程。参考Rebalancer了解更多。
用法:hadoop
balancer [-threshold
命令选项 描述
-threshold
[hadoop@NameNode01 ~]$ hadoop balancer
Time Stamp Iteration# Bytes Already Moved Bytes Left To Move Bytes Being Moved
13/10/17 17:45:58 INFO net.NetworkTopology: Adding a new node: /default-rack/10.0.2.217:50010
13/10/17 17:45:58 INFO net.NetworkTopology: Adding a new node: /default-rack/10.0.2.218:50010
13/10/17 17:45:58 INFO net.NetworkTopology: Adding a new node: /default-rack/10.0.2.216:50010
13/10/17 17:45:58 INFO balancer.Balancer: 0 over utilized nodes:
13/10/17 17:45:58 INFO balancer.Balancer: 3 under utilized nodes: 10.0.2.217:50010 10.0.2.218:50010 10.0.2.216:50010
The cluster is balanced. Exiting...
Balancing took 2.153 seconds
用法:hadoop
daemonlog -getlevel
用法:hadoop
daemonlog -setlevel
命令选项 描述
-getlevel
-setlevel
运行一个HDFS的datanode。
用法:hadoop datanode [-rollback]
命令选项 描述
-rollback 将datanode回滚到前一个版本。这需要在停止datanode,分发老的hadoop版本之后使用。
运行一个HDFS的dfsadmin客户端。
用法:hadoop
dfsadmin [GENERIC_OPTIONS] [-report] [-safemode enter | leave | get |
wait] [-refreshNodes] [-finalizeUpgrade] [-upgradeProgress status |
details | force] [-metasave filename] [-setQuota
命令选项 描述
-report 报告文件系统的基本信息和统计信息。
-safemode enter | leave | get | wait 安全模式维护命令。安全模式是Namenode的一个状态,这种状态下,Namenode
1. 不接受对名字空间的更改(只读)
2. 不复制或删除块
Namenode会在启动时自动进入安全模式,当配置的块最小百分比数满足最小的副本数条件时,会自动离开安全模式。安全模式可以手动进入,但是这样的话也必须手动关闭安全模式。
-refreshNodes 重新读取hosts和exclude文件,更新允许连到Namenode的或那些需要退出或入编的Datanode的集合。
-finalizeUpgrade 终结HDFS的升级操作。Datanode删除前一个版本的工作目录,之后Namenode也这样做。这个操作完结整个升级过程。
-upgradeProgress status | details | force 请求当前系统的升级状态,状态的细节,或者强制升级操作进行。
-metasave
filename 保存Namenode的主要数据结构到hadoop.log.dir属性指定的目录下的
1. Namenode收到的Datanode的心跳信号
2. 等待被复制的块
3. 正在被复制的块
4. 等待被删除的块
-setQuota
命令会在这个目录上工作良好,以下情况会报错:
1. N不是一个正整数,或者
2. 用户不是管理员,或者
3. 这个目录不存在或是文件,或者
4. 目录会马上超出新设定的配额。
-clrQuota
命令会在这个目录上工作良好,以下情况会报错:
1. 这个目录不存在或是文件,或者
2. 用户不是管理员。
如果目录原来没有配额不会报错。
-help [cmd] 显示给定命令的帮助信息,如果没有给定命令,则显示所有命令的帮助信息。
运行MapReduce job Tracker节点。
用法:hadoop jobtracker
运行namenode。有关升级,回滚,升级终结的更多信息请参考升级和回滚。
用法:hadoop namenode [-format] | [-upgrade] | [-rollback] | [-finalize] | [-importCheckpoint]
命令选项 描述
-format 格式化namenode。它启动namenode,格式化namenode,之后关闭namenode。
-upgrade 分发新版本的hadoop后,namenode应以upgrade选项启动。
-rollback 将namenode回滚到前一版本。这个选项要在停止集群,分发老的hadoop版本后使用。
-finalize finalize会删除文件系统的前一状态。最近的升级会被持久化,rollback选项将再不可用,升级终结操作之后,它会停掉namenode。
-importCheckpoint 从检查点目录装载镜像并保存到当前检查点目录,检查点目录由fs.checkpoint.dir指定。
运行HDFS的secondary namenode。参考Secondary Namenode了解更多。
用法:hadoop secondarynamenode [-checkpoint [force]] | [-geteditsize]
命令选项 描述
-checkpoint [force] 如果EditLog的大小 >= fs.checkpoint.size,启动Secondary namenode的检查点过程。 如果使用了-force,将不考虑EditLog的大小。
-geteditsize 打印EditLog大小。
运行MapReduce的task Tracker节点。
用法:hadoop tasktracker
hadoop fs -count的结果含义
最近要对hdfs上空间使用和文件结点使用增加报警,当超过一定的限额的时候就要发报警好通知提前准备。
[sunwg]$ hadoop fs -count /sunwg
2 1 108 hdfs://sunwg:9000/sunwg
第一个数值2表示/sunwg下的文件夹的个数,
第二个数值1表是当前文件夹下文件的个数,
第三个数值108表示该文件夹下文件所占的空间大小,这个大小是不计算副本的个数的
[sunwg]$ hadoop fs -count -q /sunwg
1024 1021 10240 10132 2 1 108 hdfs://sunwg:9000/sunwg
在count后面增加 -q选项可以查看当前文件夹的限额使用情况,
第一个数值1024,表示总的文件包括文件夹的限额
第二个数值1021表示目前剩余的文件限额,即还可以创建这么多的文件或文件夹
第三个数值10240表示当前文件夹空间的限额
第四个数值10132表示当前文件夹可用空间的大小,这个限额是会计算多个副本的
剩下的三个数值与 -count的结果一样
1、hadoop fs -mkdir /user/username 创建用户
2、hadoop fs -chown user:user /user/username 设置权限
3、hadoop dfsadmin -setSpaceQuota 1t /user/username 限制空间容量
4、hadoop dfsadmin -saveNamespace 创建检查点,将内存中的文件熊映射保存为一个新的fsimage文件,重置edits文件,该操作仅在安全模式下执行
5、hadoop dfsadmin -safemode get 查看namenode是否处于安全模式
6、hadoop dfsadmin -safemode wait 在脚本中执行某条命令前namenode先退出安全模式
7、hadoop dfsadmin -safemode enter 进入安全模式
8、hadoop dfsadmin -safemode leave 离开安全模式
9、hadoop dfsadmin -report 显示文件系统的统计信息,以及所连接的各个datanode的信息
10、hadoop dfsadmin -metasave 将某些信息存储到hadoop日志目录中的一个文件中,包括正在被复制或删除的块信息,以及已连接的datanode列表
11、hadoop dfsadmin -refreshNodes 更新允许连接到namenode的datanode列表
12、hadoop dfsadmin -upgradeProgress 获取有关hdfs升级的进度信息或强制升级
13、hadoop dfsadmin -finalizeUpgrade 移除datanode和namenode的存储目录上的旧版数据
14、hadoop dfsadmin -setQuota 设置目录中包含的文件和子目录的个数的配额
15、hadoop dfsadmin -clrQuota 清理指定目录的文件和子目录个数的配额
16、hadoop dfsadmin -clrSpaceQuota 清理指定的空间大小配额
17、hadoop dfsadmin -refreshServiceAcl 刷新namenode的服务级授权策略文件
18、hadoop fsck / 检查hdfs中文件的健康状况,该工具会查找那些所有datanode中均缺失的块以及过少或过多复本的块
19、hadoop fsck /user/tom/part-007 -files -blocks -racks files选项显示文件名称,大小,块数量,健康状况;block选项描述文件中各个块的信息,每个块一行;racks选项显示各个块的机架位置和 datanode的地址
解决主nemenode重启较慢的方法:(使用 -importCheckpoint选项启动辅助namenode,可将辅助namenode用作新的主namenode)
1、辅助namenode请求主namenode停止使用edits(记录操作日志的文件)文件。暂时将新记录写操作记录到一个新文件中
2、辅助namenode从主namenode获取fsimage(元数据永久检查点文件)和edits文件(采用http get)
3、辅助namenode将fsimage文件载入内存,逐一执行edits文件中的操作,创建新的fsimage文件
4、辅助namenode将新的fsimage文件发送回主namenode(使用http post)
5、主namenode用从辅助namenode接收的fsimage文件替换旧的fsimage文件,用步骤一所产生的edits文件替换旧的edits文件,同时,还更新fstime文件来记录检查点执行的时间
start-balancer.sh -threshold 参数指定阀值(百分比格式),默认值是10%,任何时刻,集群中都只能运行一个均衡器,均衡器在不同节点之间复制数据是有带宽限制的,默认值是1mb/s
[hadoop@NameNode01 hadoop-0.20.2-cdh3u5]$ hadoop dfs -D dfs.replication=2 -put hadoop-core-0.20.2-cdh3u5.jar /input/234
[hadoop@NameNode01 hadoop-0.20.2-cdh3u5]$ hadoop fs -setrep -R 3 /input/123
Replication 3 set: hdfs://10.0.2.75:54310/input/123
[hadoop@NameNode01 hadoop-0.20.2-cdh3u5]$ hadoop fs -ls /input
Found 4 items
-rw-r--r-- 3 hadoop supergroup 3857257 2013-11-27 15:28 /input/123
-rw-r--r-- 2 hadoop supergroup 3857257 2013-11-27 15:29 /input/234
drwxr-xr-x - hadoop supergroup 0 2013-11-20 15:32 /input/dui
-rw-r--r--
1 hadoop supergroup 3857257 2013-11-27 15:28
/input/hadoop-core-0.20.2-cdh3u5.jar
[hadoop@DataNode01 conf]$ cat hdfs-site.xml
[hadoop@DataNode01 conf]$ cat core-site.xml
[hadoop@DataNode01 conf]$ cat mapred-site.xml