HDFS简单入门
HDFS简介
HDFS(Hadoop Distributed File System)是Hadoop项目的核心子系统,是分布式计算中数据存储管理的基础,是基于流数据模式访问和处理超大文件的需求而开发的,可以运行于廉价的商用服务器上。它所具有的高容错、高可靠性、高可扩展、高吞吐量等特性为海量数据提供了不怕故障的存储,为超大数据集的应用处理带来了很多遍历。
HDFS基础概念
数据块
HDFS(Hadoop Distributed File System)默认的最基本的存储单位是64M的数据块。
和普通文件系统相同的是,HDFS中的文件是被分成64M一块的数据块存储的。
不同于普通文件系统的是,HDFS中如果一个文件小于一个数据块大小,并不占用整个数据块的存储空间。
NameNode和DataNode
HDFS体系结构中有两类节点,一类是NameNode,又叫“元数据节点”;另一类是DataNode,又叫“数据节点”。
1) 元数据节点用来管理文件系统的命名空间
其将所有的文件和文件夹的元数据保存在一个文件系统树中。
这些信息也会在硬盘上保存成以下文件:命名空间镜像(namespace image)及修改日志(edit log)
其还保存了一个文件包括哪些数据块,分布在哪些数据节点上。然而这些信息并不存储在硬盘上,而是在系统启动的时候从数据节点收集而成的。
2) 数据节点是文件系统中真正存储数据的地方。
客户端(client)或者元数据信息(namenode)可以向数据节点请求写入或者读出数据块。
其周期性的向元数据节点回报其存储的数据块信息。
3) 从元数据节点(secondary namenode)
从元数据节点并不是元数据节点出现问题时候的备用节点,它和元数据节点负责不同的事情。
其主要功能就是周期性将元数据节点的命名空间镜像文件和修改日志合并,以防日志文件过大。
合并过后的命名空间镜像文件也在从元数据节点保存了一份,以防元数据节点失败的时候,可以恢复。
启动HDFS
最初,你必须格式化配置的HDFS文件系统,打开namenode(HDFS服务器), 然后执行以下命令。
$ hadoop namenode -format
格式化HDFS后,启动分布式文件系统。以下命令将启动namenode以及数据节点作为集群。
$ start-dfs.sh
查看Hadoop版本
[hadoop@centos7-node01 bin]$ ./hadoop version Hadoop 2.6.1 Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r b4d876d837b830405ccdb6af94742f99d49f9c04 Compiled by jenkins on 2015-09-16T21:07Z Compiled with protoc 2.5.0 From source with checksum ba9a9397365e3ec2f1b3691b52627f This command was run using /home/hadoop/share/hadoop/common/hadoop-common-2.6.1.jar
列出HDFS中的文件
在服务器中加载信心后,我们可以使用 "ls" 找到目录中的文件列表,文件的状态。
hadoop fs -ls <args>
将数据插入HDFS
假设我们在本地系统中的文件名为 README 中的数据,该文件应该保存在HDFS文件系统中。按照以下步骤在Hadoop文件系统中插入所需的文件。
步骤1
你必须创建一个输入目录。
$ hadoop fs -mkdir /usr/input
步骤2
使用put命令将数据文件从本地系统传输到Hadoop文件系统。
$ hadoop fs -put README /usr/input/README
步骤3
你可以使用ls命令验证文件。
$ hadoop fs -ls /usr/input
从HDFS检索数据
假设我们在HDFS中有一个名为README的文件。以下是从Hadoop文件系统中检索所需文件的简单演示。
步骤1
最初,使用cat命令查看HDFS中的数据。
$ hadoop fs -cat /usr/output/README
步骤2
使用get命令将文件从HDFS获取到本地文件系统。
$ hadoop fs -get /usr/output/README ./README_LOCAL
从HDFS删除文件
[hadoop@centos7-node01 bin]$ ./hadoop fs -ls /usr/input Found 1 items -r-------- 2 hadoop supergroup 15 2017-07-24 10:49 /usr/input/README [hadoop@centos7-node01 bin]$ ./hadoop fs -rmr /usr/input/README rmr: DEPRECATED: Please use 'rm -r' instead. 17/07/24 20:59:40 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 0 minutes, Emptier interval = 0 minutes. Deleted /usr/input/README [hadoop@centos7-node01 bin]$ ./hadoop fs -ls /usr/input
查看HDFS的基本统计信息
[hadoop@centos7-node01 bin]$ ./hdfs dfsadmin -report Configured Capacity: 37492883456 (34.92 GB) Present Capacity: 31821979596 (29.64 GB) DFS Remaining: 31821922304 (29.64 GB) DFS Used: 57292 (55.95 KB) DFS Used%: 0.00% Under replicated blocks: 0 Blocks with corrupt replicas: 0 Missing blocks: 0 ------------------------------------------------- Live datanodes (2): Name: 192.168.114.129:50010 (centos7-node02) Hostname: centos7-node02 Decommission Status : Normal Configured Capacity: 18746441728 (17.46 GB) DFS Used: 28646 (27.97 KB) Non DFS Used: 2835136538 (2.64 GB) DFS Remaining: 15911276544 (14.82 GB) DFS Used%: 0.00% DFS Remaining%: 84.88% Configured Cache Capacity: 0 (0 B) Cache Used: 0 (0 B) Cache Remaining: 0 (0 B) Cache Used%: 100.00% Cache Remaining%: 0.00% Xceivers: 1 Last contact: Mon Jul 24 21:05:25 CST 2017 Name: 192.168.114.130:50010 (centos7-node03) Hostname: centos7-node03 Decommission Status : Normal Configured Capacity: 18746441728 (17.46 GB) DFS Used: 28646 (27.97 KB) Non DFS Used: 2835767322 (2.64 GB) DFS Remaining: 15910645760 (14.82 GB) DFS Used%: 0.00% DFS Remaining%: 84.87% Configured Cache Capacity: 0 (0 B) Cache Used: 0 (0 B) Cache Remaining: 0 (0 B) Cache Used%: 100.00% Cache Remaining%: 0.00% Xceivers: 1 Last contact: Mon Jul 24 21:05:26 CST 2017
显示块信息
[hadoop@centos7-node01 bin]$ ./hdfs fsck / -files -blocks Connecting to namenode via http://centos7-node01:50070 FSCK started by hadoop (auth:SIMPLE) from /192.168.114.128 for path / at Mon Jul 24 21:48:42 CST 2017 / <dir> /system <dir> /usr <dir> /usr/bin 7 bytes, 1 block(s): OK 0. BP-1474938344-192.168.114.128-1500634710798:blk_1073741825_1001 len=7 repl=2 /usr/input <dir> Status: HEALTHY Total size: 7 B Total dirs: 4 Total files: 1 Total symlinks: 0 Total blocks (validated): 1 (avg. block size 7 B) Minimally replicated blocks: 1 (100.0 %) Over-replicated blocks: 0 (0.0 %) Under-replicated blocks: 0 (0.0 %) Mis-replicated blocks: 0 (0.0 %) Default replication factor: 2 Average block replication: 2.0 Corrupt blocks: 0 Missing replicas: 0 (0.0 %) Number of data-nodes: 2 Number of racks: 1 FSCK ended at Mon Jul 24 21:48:42 CST 2017 in 1 milliseconds The filesystem under path '/' is HEALTHY
关闭HDFS
你可以使用以下命令关闭HDFS
$ stop-dfs.sh