linux

如何部署Linux HDFS环境

小樊
33
2025-09-23 07:23:17
栏目: 智能运维

Linux环境下HDFS部署指南(伪分布/完全分布式模式)

一、部署前准备

1. 环境要求

2. 关键配置

3. 主机规划(完全分布式模式)

二、伪分布模式部署(单机模拟分布式)

伪分布模式适合开发测试,所有HDFS进程(NameNode、DataNode、SecondaryNameNode)运行在同一台机器的不同JVM中。

1. 解压与配置环境变量

tar -zxvf hadoop-3.3.6.tar.gz -C /opt/
echo "export HADOOP_HOME=/opt/hadoop-3.3.6" >> ~/.bashrc
echo "export PATH=\$PATH:\$HADOOP_HOME/bin:\$HADOOP_HOME/sbin" >> ~/.bashrc
source ~/.bashrc

2. 修改核心配置文件($HADOOP_HOME/etc/hadoop目录)

(1)core-site.xml(HDFS核心参数)

<configuration>
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://localhost:9820</value>  <!-- HDFS命名服务地址(伪分布用localhost) -->
  </property>
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/opt/hadoop-3.3.6/tmp</value>  <!-- 临时数据存储路径(需绝对路径) -->
  </property>
</configuration>

(2)hdfs-site.xml(HDFS存储参数)

<configuration>
  <property>
    <name>dfs.replication</name>
    <value>1</value>  <!-- 副本数(伪分布仅1台DataNode,设为1) -->
  </property>
  <property>
    <name>dfs.namenode.name.dir</name>
    <value>/opt/hadoop-3.3.6/data/namenode</value>  <!-- NameNode元数据存储路径 -->
  </property>
  <property>
    <name>dfs.datanode.data.dir</name>
    <value>/opt/hadoop-3.3.6/data/datanode</value>  <!-- DataNode数据存储路径 -->
  </property>
  <property>
    <name>dfs.namenode.http-address</name>
    <value>localhost:9870</value>  <!-- NameNode Web UI端口(Hadoop 3.x默认9870) -->
  </property>
</configuration>

3. 格式化NameNode

首次启动前需初始化元数据(仅执行一次,若重复格式化需删除hadoop.tmp.dirdata目录)。

hdfs namenode -format

成功标志:日志中出现“Successfully formatted”。

4. 启动HDFS集群

start-dfs.sh  # 启动NameNode和DataNode

5. 验证部署

三、完全分布式模式部署(多节点生产环境)

完全分布式模式适合生产环境,服务部署在多台机器上,实现真正的分布式存储和计算。

1. 分发Hadoop安装包

将NameNode上的Hadoop目录同步至所有DataNode(保持路径一致)。

scp -r /opt/hadoop-3.3.6 hadoop-dn1:/opt/
scp -r /opt/hadoop-3.3.6 hadoop-dn2:/opt/

2. 配置核心文件(所有节点)

(1)core-site.xml

<configuration>
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://hadoop-nn1:9000</value>  <!-- NameNode的RPC地址(替换为实际主机名/IP) -->
  </property>
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/opt/hadoop-3.3.6/tmp</value>  <!-- 临时数据存储路径 -->
  </property>
</configuration>

(2)hdfs-site.xml

<configuration>
  <property>
    <name>dfs.replication</name>
    <value>3</value>  <!-- 副本数(生产环境建议3,根据DataNode数量调整) -->
  </property>
  <property>
    <name>dfs.namenode.name.dir</name>
    <value>/opt/hadoop-3.3.6/data/namenode</value>  <!-- NameNode元数据存储路径 -->
  </property>
  <property>
    <name>dfs.datanode.data.dir</name>
    <value>/opt/hadoop-3.3.6/data/datanode</value>  <!-- DataNode数据存储路径 -->
  </property>
  <property>
    <name>dfs.namenode.http-address</name>
    <value>hadoop-nn1:9870</value>  <!-- NameNode Web UI端口 -->
  </property>
  <property>
    <name>dfs.datanode.http.address</name>
    <value>0.0.0.0:9864</value>  <!-- DataNode Web UI端口 -->
  </property>
</configuration>

(3)workers文件(仅NameNode节点)

列出所有DataNode的hostname(Hadoop 3.x替代2.x的slaves文件)。

hadoop-dn1
hadoop-dn2

3. 启动HDFS集群

start-dfs.sh  # 启动NameNode和所有DataNode

4. 验证部署

四、常见问题排查

1. 启动失败

2. DataNode无法启动

3. 上传文件失败

通过以上步骤,可完成Linux环境下HDFS的伪分布/完全分布式部署。伪分布模式适合快速验证HDFS功能,完全分布式模式适合生产环境的大规模数据存储需求。

0
看了该问题的人还看了