博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[python作业AI毕业设计博客]大数据Hadoop工具python教程1-HDFS Hadoop分布式文件系统 ...
阅读量:2081 次
发布时间:2019-04-29

本文共 3446 字,大约阅读时间需要 11 分钟。

Hadoop分布式文件系统(HDFS:Hadoop Distributed File System)是基于Java的分布式文件系统

分布式,可扩展和可移植的文件系统,旨在跨越大型商用服务器集群。 HDFS的设计基于谷歌文件系统GFS(。与许多其他分布式文件系统一样,HDFS拥有大量数据并提供对许多客户端的透明访问。

HDFS以可靠和可扩展的方式存储非常大的文件:PB(1PB=1024TB,,针对非常大的文件)、GB和MB。它使用块结构文件系统来完成的。单个文件被拆分为固定大小的块,存储在集群中的计算机上。由多个块组成的文件通常不会将所有块存储在一台机器。

HDFS通过复制块并在集群中分发副本来确保可靠性。默认复制因子为3,表示每个块在群集上存在三次。即使单机出现故障,块级复制也保证数据可用。

本章首先介绍HDFS的核心概念,并解释如何使用本机内置命令与文件系统进行交互。

HDFS概述

HDFS的体系结构设计由两个进程组成:一个NameNode进程保存文件系统的元数据,一个或多个DataNode进程存储块。 NameNode和DataNode可以在一台机器上运行,但HDFS集群通常包含专机运行NameNode进程,可能还有数千台运行DataNode进程的计算机。

NameNode是HDFS中最重要的机器。它存储整个文件系统的元数据:文件名,文件权限以及每个文件对应块的位置。为了允许快速访问,NameNode将整个元数据结构存储在内存中。

NameNode还跟踪块的复制,确保机器故障不会导致数据丢失。由于NameNode存在单点故障,可以使用第2个NameNode生成主NameNode内存结构的快照,从而降低NameNode失败时数据丢失的风险。

在HDFS中存储块的机器称为DataNode。 DataNode通常是具有大存储容量的商用机器。与NameNode不同,少量DataNode失败,HDFS将继续正常运行。当DataNode失败时,NameNode将复制丢失的块,以保证最少复制数。

图片.png

HDFS交互

与HDFS交互主要使用hdfs的脚本

$ hdfs COMMAND [-option 
]

参考资料

  • [本文相关海量书籍下载](

通用文件操作

在HDFS上执行基本文件操作操作,使用dfs子命令。 dfs命令支持类似Linux shell中的许多文件操作。

$ hdfs COMMAND [-option 
]

注意:hdfs命令以系统用户的权限运行。 以下示例用“hduser”的用户运行。

列出HDFS中目录的内容,请使用-ls命令:

$ hdfs dfs -mkdir /user$ hdfs dfs -mkdir /user/hduser$ hdfs dfs -ls /Found 1 itemsdrwxr-xr-x   - hduser_ supergroup          0 2019-01-21 16:37 /user$ hdfs dfs -ls -R /userdrwxr-xr-x   - hduser_ supergroup          0 2019-01-21 16:45 /user/hduser

put与get数据

$ hdfs dfs -put /home/hduser_/input.txt /user/hduser$ hdfs dfs -cat /user/hduser/input.txthttps://china-testing.github.io/$ dfs -get /user/hduser/input.txt /home/hduser_/test.txt

命令参考

$ hdfs dfsUsage: hadoop fs [generic options]    [-appendToFile 
...
] [-cat [-ignoreCrc]
...] [-checksum
...] [-chgrp [-R] GROUP PATH...] [-chmod [-R]
PATH...] [-chown [-R] [OWNER][:[GROUP]] PATH...] [-copyFromLocal [-f] [-p] [-l] [-d]
...
] [-copyToLocal [-f] [-p] [-ignoreCrc] [-crc]
...
] [-count [-q] [-h] [-v] [-t [
]] [-u] [-x]
...] [-cp [-f] [-p | -p[topax]] [-d]
...
] [-createSnapshot
[
]] [-deleteSnapshot
] [-df [-h] [
...]] [-du [-s] [-h] [-x]
...] [-expunge] [-find
...
...] [-get [-f] [-p] [-ignoreCrc] [-crc]
...
] [-getfacl [-R]
] [-getfattr [-R] {-n name | -d} [-e en]
] [-getmerge [-nl] [-skip-empty-file]
] [-help [cmd ...]] [-ls [-C] [-d] [-h] [-q] [-R] [-t] [-S] [-r] [-u] [
...]] [-mkdir [-p]
...] [-moveFromLocal
...
] [-moveToLocal
] [-mv
...
] [-put [-f] [-p] [-l] [-d]
...
] [-renameSnapshot
] [-rm [-f] [-r|-R] [-skipTrash] [-safely]
...] [-rmdir [--ignore-fail-on-non-empty]
...] [-setfacl [-R] [{-b|-k} {-m|-x
}
]|[--set
]] [-setfattr {-n name [-v value] | -x name}
] [-setrep [-R] [-w]
...] [-stat [format]
...] [-tail [-f]
] [-test -[defsz]
] [-text [-ignoreCrc]
...] [-touchz
...] [-truncate [-w]
...] [-usage [cmd ...]]Generic options supported are:-conf
specify an application configuration file-D
define a value for a given property-fs
specify default filesystem URL to use, overrides 'fs.defaultFS' property from configurations.-jt
specify a ResourceManager-files
specify a comma-separated list of files to be copied to the map reduce cluster-libjars
specify a comma-separated list of jar files to be included in the classpath-archives
specify a comma-separated list of archives to be unarchived on the compute machinesThe general command line syntax is:command [genericOptions] [commandOptions]

更多帮助可以 hdfs dfs -usage 或 hdfs dfs -help

转载地址:http://xnfqf.baihongyu.com/

你可能感兴趣的文章
Intellij IDEA使用(二)—— 在Intellij IDEA中配置JDK(SDK)
查看>>
Intellij IDEA使用(三)——在Intellij IDEA中配置Tomcat服务器
查看>>
Intellij IDEA使用(四)—— 使用Intellij IDEA创建静态的web(HTML)项目
查看>>
Intellij IDEA使用(五)—— Intellij IDEA在使用中的一些其他常用功能或常用配置收集
查看>>
Intellij IDEA使用(六)—— 使用Intellij IDEA创建Java项目并配置jar包
查看>>
Eclipse使用(十)—— 使用Eclipse创建简单的Maven Java项目
查看>>
Eclipse使用(十一)—— 使用Eclipse创建简单的Maven JavaWeb项目
查看>>
Intellij IDEA使用(十三)—— 在Intellij IDEA中配置Maven
查看>>
面试题 —— 关于main方法的十个面试题
查看>>
集成测试(一)—— 使用PHP页面请求Spring项目的Java接口数据
查看>>
使用Maven构建的简单的单模块SSM项目
查看>>
Intellij IDEA使用(十四)—— 在IDEA中创建包(package)的问题
查看>>
FastDFS集群架构配置搭建(转载)
查看>>
HTM+CSS实现立方体图片旋转展示效果
查看>>
FFmpeg 命令操作音视频
查看>>
问题:Opencv(3.1.0/3.4)找不到 /opencv2/gpu/gpu.hpp 问题
查看>>
目的:使用CUDA环境变量CUDA_VISIBLE_DEVICES来限定CUDA程序所能使用的GPU设备
查看>>
问题:Mysql中字段类型为text的值, java使用selectByExample查询为null
查看>>
程序员--学习之路--技巧
查看>>
解决问题之 MySQL慢查询日志设置
查看>>