Hadoop在Linux上的数据存储核心依赖Hadoop分布式文件系统(HDFS),这是一个为大规模数据集设计的分布式存储系统,具备高容错、高吞吐、可扩展等特性,专门适配Linux集群环境。以下从HDFS的核心机制、存储流程、操作命令及管理功能等方面展开说明:
HDFS的设计围绕“大规模数据存储”需求,其核心特性直接决定了数据存储的可靠性与效率:
hdfs-site.xml调整),分散存储在集群的不同节点上,提升并行处理效率。数据从本地系统存储到HDFS的过程可分为以下步骤:
PATH)。$HADOOP_HOME/etc/hadoop)下的关键文件:
core-site.xml:设置HDFS的默认文件系统地址(如fs.defaultFS=hdfs://localhost:9000,指定NameNode的地址和端口);hdfs-site.xml:配置数据复制因子(如dfs.replication=3,设置数据块的副本数)、NameNode数据存储路径(dfs.namenode.name.dir)、DataNode数据存储路径(dfs.datanode.data.dir)。hdfs namenode -format命令,初始化NameNode的元数据存储目录(如dfs.namenode.name.dir指定的路径),创建HDFS的系统文件。start-dfs.sh脚本(位于$HADOOP_HOME/sbin),启动NameNode和所有DataNode服务;可通过jps命令验证服务状态(NameNode和DataNode进程应处于运行状态)。hdfs dfs将本地文件或目录上传至HDFS指定路径(如hdfs dfs -put /local/file.txt /hdfs/input)。上传过程中,HDFS会自动将文件切割成数据块,并按照复制因子将块分发到不同DataNode。HDFS提供了丰富的命令行工具(hdfs dfs),用于管理存储在HDFS中的数据,常见操作如下:
hdfs dfs -ls /hdfs/path(如hdfs dfs -ls /hdfs/input,查看/hdfs/input目录下的文件);hdfs dfs -put /local/path/file /hdfs/destination(如hdfs dfs -put ~/data.log /hdfs/logs);hdfs dfs -get /hdfs/path/file /local/destination(如hdfs dfs -get /hdfs/output/result.txt ~/result);hdfs dfs -cat /hdfs/path/file(如hdfs dfs -cat /hdfs/input/file.txt);hdfs dfs -rm /hdfs/path/file(删除文件)、hdfs dfs -rmdir /hdfs/path/dir(删除空目录)、hdfs dfs -rm -r /hdfs/path/dir(递归删除非空目录)。为保障数据存储的安全性与可维护性,HDFS提供了以下管理功能:
/user/<username>/.Trash目录(回收站),可通过hdfs dfs -mv /user/<username>/.Trash/file /hdfs/path恢复(默认保留时间为6小时,可通过core-site.xml中的fs.trash.interval调整)。hdfs dfsadmin -allowSnapshot /hdfs/path),用于数据恢复(如误删除、数据损坏时,可通过快照还原到指定时刻的状态)。hdfs dfs -cp命令复制数据到其他路径(如hdfs dfs -cp /hdfs/input /hdfs/input_backup),或使用第三方工具(如DistCp)实现跨集群备份。dfs.replication=3)。为保护存储数据的机密性与访问权限,HDFS支持以下安全功能:
hdfs dfs -chmod 755 /hdfs/path/file,设置文件所有者有读写执行权限,组和其他用户有读执行权限);hdfs dfs -setfacl命令配置(如hdfs dfs -setfacl -m user:alice:rwx /hdfs/path,允许用户alice对/hdfs/path有读写执行权限);core-site.xml配置加密算法,如AES-256);通过上述机制,Hadoop在Linux环境中实现了大规模、高可靠、高安全的数据存储,为后续的大数据处理(如MapReduce、Spark、Hive等)奠定了基础。