HDFS文件系统在Linux环境中的维护指南
在Linux系统中维护HDFS前,需完成以下基础配置:
java -version检查是否安装,未安装则使用sudo apt-get install openjdk-8-jdk(Ubuntu)或sudo yum install java-1.8.0-openjdk(CentOS)安装,并配置JAVA_HOME环境变量(添加至/etc/profile并执行source /etc/profile)。/usr/local/hadoop)。/etc/profile中添加HADOOP_HOME(Hadoop安装目录)和PATH(包含$HADOOP_HOME/bin、$HADOOP_HOME/sbin),执行source /etc/profile使配置生效。ssh-keygen -t rsa),将公钥复制到所有DataNode节点(ssh-copy-id datanode1、ssh-copy-id datanode2等),确保NameNode可通过SSH无密码访问DataNode。修改Hadoop配置文件(位于$HADOOP_HOME/etc/hadoop/),定义HDFS运行参数:
fs.defaultFS,如hdfs://namenode:9000)和Hadoop临时目录(hadoop.tmp.dir,如/tmp/hadoop)。dfs.namenode.name.dir,如/data/namenode)、DataNode数据目录(dfs.datanode.data.dir,如/data/datanode)、副本因子(dfs.replication,生产环境建议3)、数据块大小(dfs.blocksize,如128MB或256MB,根据数据访问模式调整)。mapreduce.framework.name为yarn)。yarn.resourcemanager.hostname为ResourceManager节点地址)和shuffle服务(yarn.nodemanager.aux-services为mapreduce_shuffle)。hdfs namenode -format,注意:此操作会清除已有数据)。start-dfs.sh启动NameNode和DataNode服务;如需启动YARN,可在ResourceManager节点执行start-yarn.sh。jps命令查看Java进程(NameNode、DataNode、SecondaryNameNode等是否运行)。hdfs dfsadmin -report查看集群详情(DataNode数量、磁盘使用情况、副本数等)。http://namenode:50070)查看集群状态。使用hdfs dfs命令管理HDFS中的文件和目录:
hdfs dfs -ls /path/to/directoryhdfs dfs -mkdir -p /path/to/new_directory(-p表示递归创建父目录)hdfs dfs -put localfile /hdfs/destinationhdfs dfs -get /hdfs/sourcefile localdestinationhdfs dfs -rm -r /hdfs/file_or_directory(-r表示递归删除,删除后进入回收站)hdfs dfs -cat /hdfs/filedf -h查看Linux系统磁盘空间,通过hdfs dfs -df -h查看HDFS各目录使用情况(如/user/hive/warehouse)。hdfs dfs -rm /path/to/old_filehdfs dfs -expunge(清空回收站,回收站文件默认保留1天)/tmp/hive中的7天以上数据(hdfs dfs -rm -r /tmp/hive/*.tmp)。start-balancer.sh启动均衡任务(默认阈值10%,可通过hdfs balancer -threshold 5调整)。hdfs dfs -chmod调整文件/目录权限(如hdfs dfs -chmod 755 /path/to/dir),使用hdfs dfs -chown修改所有者(如hdfs dfs -chown user:group /path/to/file)。hdfs dfs -setfacl设置访问控制列表(如hdfs dfs -setfacl -m user:alice:rwx /path/to/file),通过hdfs dfs -getfacl查看ACL规则。hdfs lifecycle -createPolicy)定义数据保留时间(如30天),超过期限的数据自动删除或归档。hdfs dfsadmin -allowSnapshot /path/to/dir,hdfs dfs -createSnapshot /path/to/dir snapshot_name),用于快速恢复数据。distcp命令(hadoop distcp hdfs://namenode1:9000/path hdfs://namenode2:9000/path)实现数据跨集群备份。hdfs dfs -put localfile /hdfs/destination -D mapreduce.output.fileoutputformat.compress=true -D mapreduce.output.fileoutputformat.compress.codec=org.apache.hadoop.io.compress.SnappyCodec)。jps命令定期检查HDFS进程(NameNode、DataNode、ResourceManager等)是否运行,若进程异常退出,需查看日志(/usr/local/hadoop/logs/目录下的namenode.log、datanode.log)定位原因。hdfs dfsck /检查文件系统完整性。HADOOP_NAMENODE_OPTS="-Xmx4g",根据数据量调整),使用G1GC垃圾回收器(-XX:+UseG1GC)减少Full GC时间。hadoop archive命令或编写MapReduce程序),减少NameNode内存压力。