Hadoop基础操作

Posted xingweikun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hadoop基础操作相关的知识,希望对你有一定的参考价值。


本文及后续文章大多在Hadoop伪分布式环境下操作

查看Hadoop集群的基本信息

当HDFS文件系统完成启动时,在服务器集群上启动了相关的监控服务。HDFS的监控服务,默认是通过名称节点(NameNode)的端口50070来访问。

在本机浏览器的地址栏中(注意不是搜索框)输入http://master:50070/(前提是在你电脑上配置好了host文件)
host文件位置C:\\Windows\\System32\\drivers\\etc\\host
添加内容如下

192.168.10.20	master

其中master为你的虚拟机主机名,可用hostname命令查看。或者直接输入http://192.168.10.20:50070/其中192.168.10.20是虚拟机ip地址,可用ifconfigip 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的各项资源信息。

上传文件到HDFS目录

新建目录/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就是用来存储大数据文件的,如果存储大量的小文件反而会造成资源上的浪费。

以上是关于Hadoop基础操作的主要内容,如果未能解决你的问题,请参考以下文章

学习笔记Hadoop—— Hadoop基础操作

Hadoop基础操作

指导手册03:Hadoop基础操作

学习笔记Hadoop—— Hadoop基础操作—— HDFS常用Shell操作

Hadoop基础操作

学习笔记Hadoop—— Hadoop基础操作—— Hadoop安全模式Hadoop集群基本信息