HDFS在Linux环境中的配置指南
sudo apt-get install openjdk-8-jdk或sudo yum install java-1.8.0-openjdk-devel),安装后通过java -version验证是否成功。tar -xzvf hadoop-3.3.4.tar.gz -C /usr/local/解压至指定目录(如/usr/local/hadoop-3.3.4)。编辑用户或系统的环境变量文件(如~/.bashrc或/etc/profile),添加以下内容:
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 # 根据实际JDK路径调整
export HADOOP_HOME=/usr/local/hadoop-3.3.4 # 根据实际Hadoop解压路径调整
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
保存后执行source ~/.bashrc(或source /etc/profile)使配置生效。
Hadoop的配置文件位于$HADOOP_HOME/etc/hadoop/目录下,需修改以下关键文件:
配置HDFS的默认文件系统和临时目录:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://namenode:9000</value> <!-- NameNode的URI,集群中替换为实际主机名 -->
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/tmp/hadoop-${user.name}</value> <!-- Hadoop临时目录,建议使用独立分区 -->
</property>
</configuration>
fs.defaultFS是HDFS的核心配置,决定了客户端访问HDFS的默认路径。
配置HDFS的具体参数,如副本数、数据存储路径:
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value> <!-- 数据副本数,生产环境建议≥3,单机测试可设为1 -->
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/data/namenode</value> <!-- NameNode元数据存储路径,需提前创建 -->
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/data/datanode</value> <!-- DataNode数据存储路径,需提前创建 -->
</property>
</configuration>
dfs.replication是HDFS的关键参数,决定了数据的冗余备份数量。
若需集成YARN资源管理,需配置yarn-site.xml:
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>resourcemanager</value> <!-- ResourceManager主机名 -->
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value> <!-- 支持MapReduce Shuffle服务 -->
</property>
</configuration>
YARN是Hadoop的资源管理系统,用于调度MapReduce、Spark等任务。
若需使用MapReduce框架,需配置mapred-site.xml(通常需从mapred-site.xml.template复制而来):
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value> <!-- 指定MapReduce运行在YARN上 -->
</property>
</configuration>
该配置让MapReduce任务由YARN统一调度。
为了实现集群节点间的免密管理(如NameNode启动DataNode),需配置SSH无密码登录:
ssh-keygen -t rsa(直接回车,默认路径);ssh-copy-id datanode1、ssh-copy-id datanode2(替换为实际节点主机名);ssh datanode1,若无需输入密码则配置成功。首次启动HDFS前,必须格式化NameNode以初始化元数据存储目录:
hdfs namenode -format
格式化会清除NameNode的所有元数据,请确保在全新环境或备份后操作。
start-dfs.sh,该命令会自动启动NameNode、DataNode及SecondaryNameNode(若配置了dfs.namenode.secondary.http-address);jps命令查看NameNode、DataNode进程是否启动(NameNode节点应显示NameNode,DataNode节点应显示DataNode)。hdfs dfs -ls /,若返回空目录则表示正常;hdfs dfs -mkdir /user/test、hdfs dfs -put /local/path/file.txt /user/test;http://namenode:9870(Hadoop 3.x版本),查看集群状态、节点信息及文件系统。sudo firewall-cmd --permanent --zone=public --add-port=9000/tcp(CentOS)或sudo ufw allow 9000/tcp(Ubuntu)开放端口;/etc/hosts文件,添加节点主机名与IP的映射(如192.168.1.100 namenode、192.168.1.101 datanode1),避免DNS解析问题;dfs.namenode.name.dir和dfs.datanode.data.dir指定的目录存在且具有读写权限(如chmod -R 755 /data/namenode)。