Ubuntu下HDFS参数设置步骤
在设置HDFS参数前,需完成以下基础准备:
sudo apt update && sudo apt install openjdk-8-jdk安装,通过java -version验证安装。/usr/local/hadoop)。执行tar -xzvf hadoop-3.3.4.tar.gz -C /usr/local/。~/.bashrc(或/etc/profile),添加以下内容:export HADOOP_HOME=/usr/local/hadoop-3.3.4
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
执行source ~/.bashrc使配置生效。HDFS的核心参数配置位于$HADOOP_HOME/etc/hadoop/目录下,主要涉及以下文件:
定义HDFS的默认文件系统和临时目录,是Hadoop集群的基础配置:
<configuration>
<!-- 指定HDFS的NameNode地址(单节点集群用localhost,集群用NameNode主机名/IP) -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
<!-- Hadoop临时文件目录(建议使用独立磁盘分区,避免被系统清理) -->
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/tmp</value>
</property>
<!-- 文件IO缓冲区大小(默认128KB,调大可提高IO性能) -->
<property>
<name>io.file.buffer.size</name>
<value>131072</value> <!-- 128KB -->
</property>
</configuration>
配置HDFS的数据存储、副本策略等关键参数:
<configuration>
<!-- 默认数据块副本数(集群节点≥3时建议设为3,单节点设为1) -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<!-- NameNode元数据存储路径(本地目录,可配置多个用逗号分隔) -->
<property>
<name>dfs.namenode.name.dir</name>
<value>/usr/local/hadoop/data/namenode</value>
</property>
<!-- DataNode数据存储路径(本地目录,可配置多个用逗号分隔) -->
<property>
<name>dfs.datanode.data.dir</name>
<value>/usr/local/hadoop/data/datanode</value>
</property>
<!-- DataNode向NameNode发送心跳的时间间隔(秒,默认3秒) -->
<property>
<name>dfs.heartbeat.interval</name>
<value>3</value>
</property>
</configuration>
若需使用YARN作为资源管理器,需配置以下参数:
<configuration>
<!-- NodeManager的辅助服务(用于MapReduce Shuffle) -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- Shuffle服务的实现类 -->
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
</configuration>
若需使用MapReduce,需配置框架为YARN:
<configuration>
<!-- 指定MapReduce运行在YARN上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
首次启动HDFS前,必须格式化NameNode(此操作会清空NameNode元数据,仅首次执行):
hdfs namenode -format
格式化完成后,启动HDFS服务:
start-dfs.sh
启动后,通过jps命令查看进程,应看到NameNode、DataNode(若有多个节点,还会显示SecondaryNameNode)。
hdfs dfsadmin -report,查看DataNode数量、存储容量等信息。http://localhost:9870(Hadoop 3.x版本),查看HDFS文件系统状态。# 创建HDFS目录
hdfs dfs -mkdir -p /user/hadoop/test
# 上传本地文件到HDFS
hdfs dfs -put /path/to/local/file.txt /user/hadoop/test
# 查看HDFS目录内容
hdfs dfs -ls /user/hadoop/test
# 下载HDFS文件到本地
hdfs dfs -get /user/hadoop/test/file.txt /path/to/local/
# 删除HDFS文件
hdfs dfs -rm /user/hadoop/test/file.txt
根据业务需求,可调整以下参数提升性能:
hdfs-site.xml中设置dfs.blocksize(默认128MB,大文件建议设为256MB或更大):<property>
<name>dfs.blocksize</name>
<value>268435456</value> <!-- 256MB -->
</property>
hadoop fs -setquota 10G /user/hadoop/dir # 限制dir目录不超过10GB
hdfs-site.xml中设置dfs.client.read.shortcircuit(允许客户端直接从本地读取数据,提高读取性能):<property>
<name>dfs.client.read.shortcircuit</name>
<value>true</value>
</property>
/etc/hosts文件中包含所有节点的主机名和IP映射(单节点集群可忽略)。sudo ufw allow 9000
sudo ufw allow 50010
sudo ufw allow 9870
dfs.namenode.name.dir和dfs.datanode.data.dir目录存在且具有正确的读写权限(建议用hadoop用户创建并拥有所有权)。