- 查看Hadoop集群的基本信息
- 查询集群的计算资源信息
- 上传文件到HDFS目录
- 下载文件
- 删除文件
- 小任务实现
本文及后续文章大多在Hadoop伪分布式环境下操作 查看Hadoop集群的基本信息
当HDFS文件系统完成启动时,在服务器集群上启动了相关的监控服务。HDFS的监控服务,默认是通过名称节点(NameNode)的端口50070来访问。
在本机浏览器的地址栏中(注意不是搜索框)输入http://master:50070/(前提是在你电脑上配置好了host文件)
host文件位置C:WindowsSystem32driversetchost
添加内容如下
192.168.10.20 master
其中master为你的虚拟机主机名,可用hostname命令查看。或者直接输入http://192.168.10.20:50070/其中192.168.10.20是虚拟机ip地址,可用ifconfig或ip addr命令查看。
大概是这个页面
其中
Configured Capacity:已配置的文件系统存储总量 DFS Used:已使用的DFS存储总量 Non DFS Used:被非DFS的应用所占的存储总量,比如本地目录中的Linux文件 DFS Remaining:可使用的DFS存储总量 Live Nodes:在线的数据节点(DataNode)数量 各存储容量之间的关系为: Configured Capacity=Non DFS Used+DFS Used+DFS Remaining
单击页面上的标签Datanodes,可以显示各个数据节点的信息。
也可以在命令行输入命令进行操作
[root@master hadoop-2.7.3]# hdfs dfsadmin -report Configured Capacity: 18238930944 (16.99 GB) Present Capacity: 15482327040 (14.42 GB) DFS Remaining: 15482314752 (14.42 GB) DFS Used: 12288 (12 KB) DFS Used%: 0.00% Under replicated blocks: 0 Blocks with corrupt replicas: 0 Missing blocks: 0 Missing blocks (with replication factor 1): 0 ------------------------------------------------- Live datanodes (1): Name: 192.168.10.20:50010 (master) Hostname: master Decommission Status : Normal Configured Capacity: 18238930944 (16.99 GB) DFS Used: 12288 (12 KB) Non DFS Used: 2756603904 (2.57 GB) DFS Remaining: 15482314752 (14.42 GB) DFS Used%: 0.00% DFS Remaining%: 84.89% Configured Cache Capacity: 0 (0 B) Cache Used: 0 (0 B)
hdfs dfsadmin -report -report:输出文件系统的基本信息及相关数据统计 -report -live:输出文件系统中在线节点的基本信息及相关数据统计 -report -dead:输出文件系统中失效节点的基本信息及相关数据统计 -report -decommissioning:输出文件系统中停用节点的基本信息及相关数据统计查询集群的计算资源信息
Hadoop集群的计算资源,是由资源管理器(ResourceManager)来进行管理的。在浏览器地址栏输入http://192.168.10.20:8088/cluster/nodes
Active Nodes:在线的计算节点 Memory Total:可使用的内存总量 VCores Total:可使用的CPU核心 Rack:机架名称,默认为default-rack Node Address:计算节点的名称及端口 Containers:执行计算任务的容器容量,无任务时值为0 Mem Used和Mem Avail:实际内存使用数量和可用内存的数量。 VCores Used和VCores Avail:实际CPU核心使用数量和可用CPU核心的数量。
点击页面上的超链接master:8042
显示计算节点master的各项资源信息。
新建目录/user/dfstest
hdfs dfs -mkdir /user/dfstest
http://192.168.10.20:50070/explorer.html#/这个地址可以看到HDFS文件目录
当前为根目录
在框中输入/user/然后点击Go!或者直接回车,可以看到/user/目录下的内容
创建多级目录
hdfs dfs -mkdir -p /user/test/example
上传文件
[root@master myfile]# pwd /home/xwk/myfile [root@master myfile]# ls hello_hadoop.txt [root@master myfile]# cat hello_hadoop.txt hello hadoop [root@master myfile]#
把hello_hadoop.txt文件上传至/user/dfstest目录
[root@master myfile]# hdfs dfs -copyFromLocal hello_hadoop.txt /user/dfstest [root@master myfile]# hdfs dfs -cat /user/dfstest/hello_hadoop.txt hello hadoop [root@master myfile]#
可以看到,文件已经上传成功。
也可以使用以下命令,上传文件并重命名
[root@master myfile]# hdfs dfs -moveFromLocal hello_hadoop.txt /user/dfstest/a.txt 这个是移动文件的命令,所以现在hello_hadoop.txt已经不在原来的文件夹了, 我在这里再创建一个hello_hadoop.txt文件,进行下一步操作。
[root@master myfile]# hdfs dfs -put hello_hadoop.txt /user/dfstest/b.txt 这个命令也可以上传文件,上传后,原目录下的文件不变
可以看到,之前三个上传命令都成功将文件上传到指定目录了。
[root@master myfile]# hdfs dfs -ls /user/dfstest/ Found 3 items -rw-r--r-- 3 root supergroup 13 2021-10-21 23:04 /user/dfstest/a.txt -rw-r--r-- 3 root supergroup 13 2021-10-21 23:10 /user/dfstest/b.txt -rw-r--r-- 3 root supergroup 13 2021-10-21 23:01 /user/dfstest/hello_hadoop.txt [root@master myfile]#下载文件
[root@master myfile]# hdfs dfs -copyToLocal /user/dfstest/a.txt [root@master myfile]# hdfs dfs -get /user/dfstest/b.txt [root@master myfile]# ls a.txt b.txt hello_hadoop.txt [root@master myfile]#
大家可以发现,有些命令和在Linux下操作文件命令大同小异,所以在学习的过程中应该举一反三。
删除文件[root@master myfile]# hdfs dfs -mkdir /user/dfstest/rmdir [root@master myfile]# hdfs dfs -rm /user/dfstest/b.txt 21/10/21 23:20:54 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 0 minutes, Emptier interval = 0 minutes. Deleted /user/dfstest/b.txt [root@master myfile]# hdfs dfs -rmdir /user/dfstest/rmdir [root@master myfile]#
被删除后,它们好像从来没有来到过这个世界…
把电脑上的email_log.txt文件传输到集群服务器(master)的/root/hadoop/目录
上传email_log.txt到HDFS目录/user/root/
[root@master myfile]# mkdir -p /root/hadoop [root@master myfile]# cd /root/hadoop/ [root@master hadoop]# ls [root@master hadoop]#
现在通过xshell和xftp连接虚拟机,并将电脑上的文件传到虚拟机。
先将文件传至/home/xwk/software/
[root@master hadoop]# cd /home/xwk/software/ [root@master software]# ls email_log.txt hadoop-2.7.3.tar.gz jdk-8u77-linux-x64.tar.gz hadoop-2.7.3 jdk1.8.0_77 [root@master software]#
再移动至/root/hadoop目录
[root@master software]# mv email_log.txt /root/hadoop/ [root@master software]# cd /root/hadoop/ [root@master hadoop]# ls email_log.txt [root@master hadoop]#
上传email_log.txt到HDFS目录/user/root/
[root@master hadoop]# hdfs dfs -put email_log.txt /user/root/
上传成功。
为什么文件email_log.txt被拆分为两个文件块呢?因为email_log.txt的原始大小是216MB,而Hadoop2.x版本默认设置的HDFS文件块大小是128MB,所以HDFS分配了两个文件块,这两个文件块累计提供了256MB的存储空间。
即使要存储一个1KB的文件,HDFS也会分配一个128MB的文件块来存储它。HDFS就是用来存储大数据文件的,如果存储大量的小文件反而会造成资源上的浪费。



