HDFS常用命令及Python连接HDFS操作

目录

一、HDFS常用命令

二、Python连接HDFS操作


一、HDFS常用命令

HDFS(Hadoop Distributed File System,Hadoop分布式文件系统)是Hadoop集群中的一部分,用于存储大量数据,并运行在商用硬件集群上。以下是HDFS中常用的文件和文件夹操作命令:

1、查看HDFS文件系统:

hdfs dfs -ls <path>

2、上传文件到HDFS:

hdfs dfs -put <local_path>  <hdfs_path>

3、从HDFS下载文件:

hdfs dfs -get <hdfs_path>  <local_path>

4、在HDFS内复制文件:

hdfs dfs -cp <source> <destination>

5、在HDFS内移动文件:

hdfs dfs -mv <source> <destination>

6、删除HDFS中的文件:

hdfs dfs -rm <path>

7、递归删除HDFS中的目录和文件:

hdfs dfs -rm -r <path>

8、创建HDFS目录:

hdfs dfs -mkdir <path>

9、递归创建HDFS目录:

hdfs dfs -mkdir -p <path>

10、查看HDFS中的文件内容:

hdfs dfs -cat <path>

11、查看HDFS中的文件末尾内容:

hdfs dfs -tail <path>

12、更改HDFS中文件的所有者:

hdfs dfs -chown <user>:<group> <path>

13、更改HDFS中文件的权限:

hdfs dfs -chmod <mode> <path>

14、更改HDFS中文件的副本数:

hdfs dfs -setrep -w <replication_factor> <path>

15、文本文件内容追加到HDFS文件:

hdfs dfs -appendToFile <local_file> <hdfs_file>

16、在HDFS中统计文件夹/文件大小:

hdfs dfs -du -s -h <path>

17、在HDFS中统计文件夹/文件大小:

hdfs dfs -du -h <path>

18、检查HDFS文件系统的磁盘空间使用情况:

hdfs dfs -df -h

19、列出HDFS中正在执行的操作:

hdfs dfsadmin -report

二、Python连接HDFS操作

本文使用hdfs库进行操作,其他的库如PyDoop、HdfsCLI也都可以连接HDFS。

1、安装第三方库

pip install hdfs

2、连接HDFS

初始化客户端时,使用的端口号是NameNode节点所使用的端口号,具体信息可以在hdfs-site.xml文件中查看。

from hdfs import InsecureClient

# 初始化客户端,HDFS的地址和端口
client = InsecureClient('http://localhost:50070', user='root')

# 列出HDFS上的文件
client.list('/')

3、文件操作

# 文件和目录的路径
hdfs_dir_path = '/user/hdfs/my_directory'
hdfs_file_path = '/user/hdfs/my_directory/my_file.txt'

# 列出HDFS根目录的内容
print("List HDFS root directory:")
print(client.list('/'))

# 创建目录
print("\nCreating directory:")
client.makedirs(hdfs_dir_path)

# 上传文件到HDFS
print("\nUploading file to HDFS:")
with client.write(hdfs_file_path, overwrite=True) as writer:
    writer.write('Hello, HDFS!')

# 列出目录内容
print("\nList directory contents:")
print(client.list(hdfs_dir_path))

# 读取文件内容
print("\nReading file content:")
with client.read(hdfs_file_path) as reader:
    content = reader.read()
    print(content)

# 追加内容到文件
print("\nAppending to file:")
with client.write(hdfs_file_path, append=True) as writer:
    writer.write('\nAppend this line.')

# 检查文件状态
print("\nChecking file status:")
status = client.status(hdfs_file_path)
print(status)

# 复制文件
print("\nCopying file:")
client.copy(hdfs_file_path, '/user/hdfs/my_directory/copy_of_my_file.txt')

# 移动文件
print("\nMoving file:")
client.move(hdfs_file_path, '/user/hdfs/my_directory/moved_file.txt')

# 删除文件
print("\nDeleting file:")
client.delete('/user/hdfs/my_directory/moved_file.txt')

# 删除目录(递归删除)
print("\nDeleting directory recursively:")
client.delete(hdfs_dir_path, recursive=True)

作者:唯余木叶下弦声

物联沃分享整理
物联沃-IOTWORD物联网 » HDFS常用命令及Python连接HDFS操作

发表回复