[python作业AI毕业设计博客]大数据Hadoop工具python教程1-HDFS Hadoop分布式文件系统

简介: Hadoop分布式文件系统(HDFS:Hadoop Distributed File System)是基于Java的分布式文件系统分布式,可扩展和可移植的文件系统,旨在跨越大型商用服务器集群。 HDFS的设计基于谷歌文件系统GFS(https://ai.google/research/pubs/pub51)。

Hadoop分布式文件系统(HDFS:Hadoop Distributed File System)是基于Java的分布式文件系统
分布式,可扩展和可移植的文件系统,旨在跨越大型商用服务器集群。 HDFS的设计基于谷歌文件系统GFS(https://ai.google/research/pubs/pub51)。与许多其他分布式文件系统一样,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 <arg>]

参考资料

通用文件操作

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

$ hdfs COMMAND [-option <arg>]

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

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

$ hdfs dfs -mkdir /user
$ hdfs dfs -mkdir /user/hduser
$ hdfs dfs -ls /
Found 1 items
drwxr-xr-x   - hduser_ supergroup          0 2019-01-21 16:37 /user
$ hdfs dfs -ls -R /user
drwxr-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.txt
https://china-testing.github.io/
$ dfs -get /user/hduser/input.txt /home/hduser_/test.txt

命令参考

$ hdfs dfs
Usage: hadoop fs [generic options]
    [-appendToFile <localsrc> ... <dst>]
    [-cat [-ignoreCrc] <src> ...]
    [-checksum <src> ...]
    [-chgrp [-R] GROUP PATH...]
    [-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...]
    [-chown [-R] [OWNER][:[GROUP]] PATH...]
    [-copyFromLocal [-f] [-p] [-l] [-d] <localsrc> ... <dst>]
    [-copyToLocal [-f] [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]
    [-count [-q] [-h] [-v] [-t [<storage type>]] [-u] [-x] <path> ...]
    [-cp [-f] [-p | -p[topax]] [-d] <src> ... <dst>]
    [-createSnapshot <snapshotDir> [<snapshotName>]]
    [-deleteSnapshot <snapshotDir> <snapshotName>]
    [-df [-h] [<path> ...]]
    [-du [-s] [-h] [-x] <path> ...]
    [-expunge]
    [-find <path> ... <expression> ...]
    [-get [-f] [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]
    [-getfacl [-R] <path>]
    [-getfattr [-R] {-n name | -d} [-e en] <path>]
    [-getmerge [-nl] [-skip-empty-file] <src> <localdst>]
    [-help [cmd ...]]
    [-ls [-C] [-d] [-h] [-q] [-R] [-t] [-S] [-r] [-u] [<path> ...]]
    [-mkdir [-p] <path> ...]
    [-moveFromLocal <localsrc> ... <dst>]
    [-moveToLocal <src> <localdst>]
    [-mv <src> ... <dst>]
    [-put [-f] [-p] [-l] [-d] <localsrc> ... <dst>]
    [-renameSnapshot <snapshotDir> <oldName> <newName>]
    [-rm [-f] [-r|-R] [-skipTrash] [-safely] <src> ...]
    [-rmdir [--ignore-fail-on-non-empty] <dir> ...]
    [-setfacl [-R] [{-b|-k} {-m|-x <acl_spec>} <path>]|[--set <acl_spec> <path>]]
    [-setfattr {-n name [-v value] | -x name} <path>]
    [-setrep [-R] [-w] <rep> <path> ...]
    [-stat [format] <path> ...]
    [-tail [-f] <file>]
    [-test -[defsz] <path>]
    [-text [-ignoreCrc] <src> ...]
    [-touchz <path> ...]
    [-truncate [-w] <length> <path> ...]
    [-usage [cmd ...]]

Generic options supported are:
-conf <configuration file>        specify an application configuration file
-D <property=value>               define a value for a given property
-fs <file:///|hdfs://namenode:port> specify default filesystem URL to use, overrides 'fs.defaultFS' property from configurations.
-jt <local|resourcemanager:port>  specify a ResourceManager
-files <file1,...>                specify a comma-separated list of files to be copied to the map reduce cluster
-libjars <jar1,...>               specify a comma-separated list of jar files to be included in the classpath
-archives <archive1,...>          specify a comma-separated list of archives to be unarchived on the compute machines

The general command line syntax is:
command [genericOptions] [commandOptions]

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

相关实践学习
基于MaxCompute的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
相关文章
|
6月前
|
存储 缓存 测试技术
理解Python装饰器:简化代码的强大工具
理解Python装饰器:简化代码的强大工具
|
7月前
|
程序员 测试技术 开发者
Python装饰器:简化代码的强大工具
Python装饰器:简化代码的强大工具
285 92
|
6月前
|
数据采集 存储 XML
Python爬虫技术:从基础到实战的完整教程
最后强调: 父母法律法规限制下进行网络抓取活动; 不得侵犯他人版权隐私利益; 同时也要注意个人安全防止泄露敏感信息.
929 19
|
5月前
|
索引 Python
Python 列表切片赋值教程:掌握 “移花接木” 式列表修改技巧
本文通过生动的“嫁接”比喻,讲解Python列表切片赋值操作。切片可修改原列表内容,实现头部、尾部或中间元素替换,支持不等长赋值,灵活实现列表结构更新。
246 1
|
6月前
|
机器学习/深度学习 编解码 Python
Python图片上采样工具 - RealESRGANer
Real-ESRGAN基于深度学习实现图像超分辨率放大,有效改善传统PIL缩放的模糊问题。支持多种模型版本,推荐使用魔搭社区提供的预训练模型,适用于将小图高质量放大至大图,放大倍率越低效果越佳。
497 3
|
6月前
|
算法 安全 数据安全/隐私保护
Python随机数函数全解析:5个核心工具的实战指南
Python的random模块不仅包含基础的随机数生成函数,还提供了如randint()、choice()、shuffle()和sample()等实用工具,适用于游戏开发、密码学、统计模拟等多个领域。本文深入解析这些函数的用法、底层原理及最佳实践,帮助开发者高效利用随机数,提升代码质量与安全性。
1070 0
|
6月前
|
数据采集 存储 JSON
使用Python获取1688商品详情的教程
本教程介绍如何使用Python爬取1688商品详情信息,涵盖环境配置、代码编写、数据处理及合法合规注意事项,助你快速掌握商品数据抓取与保存技巧。
|
分布式计算 Hadoop Python
使用python的hdfs包操作分布式文件系统(HDFS)
转载请注明出处:@http://blog.csdn.net/gamer_gyt,Thinkagmer 撰写 博主微博:http://weibo.com/234654758 (欢迎互撩) Github:https://github.
2466 0
|
6月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
875 102
|
6月前
|
数据采集 机器学习/深度学习 算法框架/工具
Python:现代编程的瑞士军刀
Python:现代编程的瑞士军刀
419 104

推荐镜像

更多