Hadoop2.x 基本操作命令
2018-08-13 本文已影响118人
georgeguo
1 集群的启动和停止
格式化文件系统
hdfs namenode -format
- 格式化hdfs文件系统:
hdfs namenode -format
(主节点,只需要格式化一次就行,下次启动是无需执行)。
启动集群(注意启动顺序)
sh sbin/start-dfs.sh
sh sbin/start-yarn.sh
sh sbin/mr-jobhistory-daemon.sh start historyserver
- 启动hdfs,进入hadoop的安装目录,
sh sbin/start-dfs.sh
(要在hadoop的安装路径中,etc/hadoop/hadoop-env.sh中设置JAVA_HOME,否则启动时会报JAVA_HOME找不到的错误)。 - 启动YARN,进入hadoop的安装目录,
sh sbin/start-yarn.sh
- 启动日志相关服务,进入hadoop的安装目录,
sh sbin/mr-jobhistory-daemon.sh start historyserver
停止集群(注意停止顺序)
sh sbin/stop-yarn.sh
sh sbin/stop-dfs.sh
sh sbin/mr-jobhistory-daemon.sh stop historyserver
- 停止yarn,
sh sbin/stop-yarn.sh
- 停止dfs,
sh sbin/stop-dfs.sh
- 停止日志相关服务,
sh sbin/mr-jobhistory-daemon.sh stop historyserver
通过集群启动分析Hadoop(DFS、YARN)的相关进程
sh sbin/start-dfs.sh之后,通过jps查看启动的进程。
启动hdfs之后从上图可以看出,和DFS相关的进程主要是NameNode、SecondaryNameNode、DateNode。其中,NameNode、SecondaryNameNode位于主节点上,DataNode分别位于3个从节点上。
sh sbin/start-yarn.sh之后,再通过jps查看启动的进程,
启动YARN之后从上图可以看出,和YARN相关的进程分别是ResourceManager、NodeManager。其中,ResourceManager位于主节点上,NodeManager位于各个从节点上。
2 HDFS相关命令
查看hdfs集群状态:
hdfs dfsamdin -report
hdfs dfsadmin -report -live
hdfs dfsadmin -report -dead
hdfs dfsadmin -report -decommissioning
hdfs dfsadmin -safemode enter //启动安全模式
hdfs dfsadmin -safemode leave // 关闭安全模式
创建目录
- hdfs dfs 查看命令帮助
- hdfs dfs -mkdir DIR_NAME
上传和下载文件
- hdfs dfs -copyFromLocal local.txt /remote/remote.txt 将本地文件拷贝到DFS文件系统中
- hdfs dfs -mvFromLocal local.txt /remote/remote.txt 将本地文件移动到DFS文件系统中
- hdfs dfs -put local.txt /remote/remote.txt 将本地文件上传到DFS文件系统中(有点类似-copyFromLocal)
- hdfs dfs -copyToLocal /remote/remote.txt local.txt 将HDFS文件拷贝到本地文件系统中
- hdfs dfs -get /remote/remote.txt local.txt 将HDFS文件下载到本地文件系统中
查看dfs文件系统中的文件
- hdfs dfs -cat FILENAME
- hdfs dfs -tail FILENAME
删除dfs中的文件和目录
- hdfs dfs -rm FILENAME
- hdfs dfs -rmdir DIR_NAME
并行的拷贝文件 distcp
将集群1的 /foo目录复制到集群2的/foo目录
hadoop distcp -update -delete -p hdfs://namenode1/foo hdfs://namenode2/foo
若两个集群的HDFS版本不兼容,可以使用webHDFS协议
hadoop distcp -update -delete -p webhdfs://namenode1/foo \
webhdfs://namenode2/foo
常用命令的alias
可以将下面的alias添加到~/.bash_profile中,这样就可以简化输入命令的长度。
alias cdh='cd /usr/local/hadoop-2.6.5'
alias hls='hdfs dfs -ls'
alias hcpf='hdfs dfs -copyFromLocal'
alias hcpt='hdfs dfs -copyToLocal'
alias hrm='hdfs dfs -rm'
alias hrmdir='hdfs dfs -rmdir'
alias hmkdir='hdfs dfs -mkdir'
alias hcat='hdfs dfs -cat'
alias htail='hdfs dfs -tail'
web方式查看HDFS
http://master:50070
3 Web集群监控
- HDFS信息: http://namenode_host:port, 默认: http://192.168.2.154:50070
- YARN信息: http://resource_manager_host:port, 默认: http://192.168.2.154:8088
- 日志服务信息: http://jobhistory_server_host:port, 默认: http://192.168.2.154:19888
4 YARN相关操作命令
提交任务给MapReduce集群
- hadoop jar JAR_NAME wordcount INPUT OUTPUT
- hadoop jar JAR_NAME PI MAP_COUTN EXECUTE_COUNT_OF_EACH_MAP
- 查看集群的计算资源:http://master:8088/cluster/nodes
- 查看集群任务信息:http://master:8088/cluster/apps
- 练习通过两个窗口向集群中提交多个任务
中断MapReduce任务(通过web界面)
- 方法1:
mapred job -kill job_id
- 方法2: 直接通过资源界面,找到对应的作业,"Kill Application"
获取计数器的个数
格式: mapred job -counter <job-id> <group-name> <counter-name>
举例:
mapred job -counter job_1535252686216_0008 "Data statistic" "VALID_COUNT"
计算器可以通过mapred job命令获取,也可以调用API动态的读取计数器。
实验命令
第一个实验:计算文件中每个邮件出现的次数
hadoop jar /usr/local/hadoop-2.6.5/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.5.jar \
wordcount \
/data/email_log.txt \
/data/output
第二个实验:使用monte carlo估算PI值
hadoop jar /usr/local/hadoop-2.6.5/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.5.jar \
pi \
100 \
100
第三个实验:多任务提交,观察第一个任务占有所有资源之后,第二个任务会处于accept状态,等待yarn分配资源
hadoop jar /usr/local/hadoop-2.6.5/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.5.jar \
wordcount \
/data/email_log.txt \
/data/output1
hadoop jar /usr/local/hadoop-2.6.5/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.5.jar \
wordcount \
/data/email_log.txt \
/data/output2
第四个实验:提交多个任务,然后通过界面,中断任务,观察是否切换执行在等待的任务
hadoop jar /usr/local/hadoop-2.6.5/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.5.jar \
pi \
100 \
1000
hadoop jar /usr/local/hadoop-2.6.5/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.5.jar \
wordcount \
/data/email_log.txt \
/data/output2
第五个实验:运行一个自己写的mapreduce
hadoop jar /root/data/dailyAccessCount.jar /data/user_login.txt /data/userlogin
hadoop jar accessTimeSort.jar /data/userlogin1/part-r-00000 /data/accesssort1