环境
-
宿主机:Windows 10 64_bit
-
虚拟机:VMware pro 12
- CentOS 7.5 64_bit(3台:1个master、2个slave)
- Hadoop-2.6.5
-
ssh工具:SecureCRT 7.3
目录
正文
启动集群:sbin/start-all.sh
,包括启动HDFS和Map/Reduce;
停止集群:sbin/stop-all.sh
。
1、hadoop常用命令:FS Shell命令
主要包括:
- 1、hadoop namenode -format
- 2、文件上传、下载
- 3、各种基本操作命令
所有的hadoop命令均由bin/hadoop脚本引发。
命令 | 说明 |
---|---|
hadoop namenode -format | 格式化一个新的分布式文件系统。这条命令小心使用,不要在子节点使用。 |
hadoop version | 查看hadoop版本 。在终端即可,无论在哪个路径下 |
cd $HADOOP_HOME/lib/native 、file libhadoop.so.1.0.0 | 查看集群位数 |
jps | 查看hadoop集群的进程 。(Java Process Status)。Hadoop jps各个进程的功能解析 |
hadoop fs -mkdir -p /data/input | 在HDFS上创建一个目录/data/input。-p 会创建路径中各级父目录(如果没有的话) |
hadoop fs -put aaa.txt /data/input | 将当前目录(本地文件系统)下的aaa.txt 文件复制(上传)到HDFS上。源路径可以是多个 |
hadoop fs -ls /data/input | 查看HDFS中/data/input目录下的文件 。加上-R 递归显示。hadoop2.x现在直接使用hadoop fs 命令, |
hadoop fs -cp {源路径,可以是多个} {目标路径} | (HDFS之间)复制文件到指定目录 |
hadoop fs -cat {URI} | [head head/tail -n] | 将HDFS路径指定文件的内容stdout(标准输出) |
hadoop fs -get {源路径} {本地路径} | HDFS上复制文件到本地文件系统(-put 的逆操作) |
hadoop fs -mv {源路径,可以多个} {目标路径} | (HDFS之间)将文件从源路径移动/重命名到目标路径(两者都是HDFS中) |
hadoop fs -rm {路径} | HDFS中删除指定的文件。只删除非空目录和文件(递归删除用-rm -r ) |
hadoop fs -tail [-f] URI | 将文件尾部1K字节的内容输出到stdout |
hadoop fs -touchz URI [URI …] | 创建一个0字节的空文件 |
hadoop fs -text [URI] | [head head/tail -n] | 将源文件输出为文本格式 |
hadoop fs -test -[ezd] URI | 检测文件。-e 检查文件是否存在;-z 检查文件是否是0字节;-d 如果路径是个目录 |
2、hadoop目录结构简介
[root@master hadoop-2.6.5]# tree -L 1
.
├── bin 存放Hadoop相关服务(HDFS,YARN)进行操作的脚本,用于执行hadoop脚本命令,被hadoop-daemon.sh调用执行,也可单独执行,一切命令的核心。
├── dfs 分布式文件系统,
├── etc 配置文件,其中hadoop目录是最重要的
├── include 本地库的头文件
├── lib 本地的库,存放的是Hadoop运行时依赖的jar包,Hadoop在执行时会把lib目录下面的jar全部加到classpath中。hadoop编译时需要它,例如编译c++等
├── libexec 各个服务对用的shell配置文件所在的目录,可用于配置日志输出、启动参数(比如JVM参数)等基本信息
├── LICENSE.txt
├── logs hadoop运行的log日志所在
├── NOTICE.txt
├── README.txt
├── sbin 启动/停止Hadoop相关服务的脚本
├── share Hadoop各个模块编译后的jar包所在的目录,还有文档和官方案例
└── tmp 临时文件夹
10 directories, 3 files
1)、/etc/hadoop/
下最重要的配置文件有:
core-site.xml
:Hadoop核心全局配置文件,其他配置文件中可以引用该文件中定义的属性;hadoop-env.sh
:Hadoop环境变量;hdfs-site.xml
:HDFS配置文件,该模板的属性继承于core-site.xml;namenode在这里配置mapred-site.xml
:MapReduce的配置文件,该模板的属性继承于core-site.xml
;slaves
:用于设置所有的slave的名称或IP,每行存放一个。
2)、/dfs
:分布式系统
[root@master dfs]# tree
.
├── data 【主节点】该文件夹无具体内容、从节点有。一个标准的dfs.datanode.data.dir目录结构
└── name
└── current 一个标准的dfs.namenode.name.dir目录结构
├── edits_0000000000000000001-0000000000000000008
├── edits_0000000000000000009-0000000000000000009
....
├── edits_0000000000000000030-0000000000000000030
├── edits_0000000000000000031-0000000000000000032
├── edits_inprogress_0000000000000000033
├── fsimage_0000000000000000029
├── fsimage_0000000000000000029.md5
├── fsimage_0000000000000000032
├── fsimage_0000000000000000032.md5
├── seen_txid
└── VERSION
3 directories, 18 files
HDFS metadata以树状结构存储整个HDFS上的文件和目录,以及相应的权限、配额和副本因子(replication factor)等。
其中,/name
下主要存储两种类型的文件:
- fsimage:元数据镜像文件,记录某一永久性检查点(Checkpoint)时整个HDFS的元信息
edits:元数据的操作日志,所有对HDFS的写操作都会记录在此文件中
3)、3种Node:
- NameNode:是Master节点,是大领导。管理数据块映射;处理客户端的读写请求;配置副本策略;管理HDFS的名称空间;
- SecondaryNameNode:是一个小弟,分担大哥namenode的工作量;是NameNode的冷备份;合并fsimage和fsedits然后再发给namenode。
- DataNode:Slave节点,奴隶,干活的。负责存储client发来的数据块block;执行数据块的读写操作。