/etc/hosts文件将主机名与IP绑定(如192.168.1.100 namenode),避免域名解析问题。9000(NameNode)、50010(数据传输)、50070(Web界面)),或临时关闭防火墙(systemctl stop firewalld)。Hadoop依赖Java 8(OpenJDK或Oracle JDK),执行以下命令安装:
sudo yum install -y java-1.8.0-openjdk-devel
验证安装:
java -version
输出应包含1.8.0版本信息。
从Apache官网下载稳定版Hadoop(如3.3.4),解压至/usr/local/目录:
wget https://archive.apache.org/dist/hadoop/common/hadoop-3.3.4/hadoop-3.3.4.tar.gz
tar -xzvf hadoop-3.3.4.tar.gz -C /usr/local/
sudo mv /usr/local/hadoop-3.3.4 /usr/local/hadoop # 重命名便于管理
设置目录权限(假设Hadoop用户为hadoop):
sudo chown -R hadoop:hadoop /usr/local/hadoop
编辑/etc/profile.d/hadoop.sh(若不存在则新建),添加以下内容:
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk # Java安装路径
export HADOOP_HOME=/usr/local/hadoop # Hadoop安装路径
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin # 添加Hadoop命令到PATH
使配置生效:
source /etc/profile.d/hadoop.sh
验证环境变量:
echo $HADOOP_HOME # 应输出/usr/local/hadoop
hadoop version # 应显示Hadoop版本信息
Hadoop的主配置文件位于$HADOOP_HOME/etc/hadoop/目录下,需修改以下文件:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://namenode:9000</value> <!-- NameNode主机名:端口 -->
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/tmp</value> <!-- 临时目录 -->
</property>
</configuration>
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value> <!-- 单节点环境设为1(生产环境建议≥3) -->
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/usr/local/hadoop/data/namenode</value> <!-- NameNode元数据存储路径 -->
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/usr/local/hadoop/data/datanode</value> <!-- DataNode数据存储路径 -->
</property>
</configuration>
若文件不存在,复制模板生成:
cp $HADOOP_HOME/etc/hadoop/mapred-site.xml.template $HADOOP_HOME/etc/hadoop/mapred-site.xml
修改内容:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value> <!-- 使用YARN作为资源管理器 -->
</property>
</configuration>
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value> <!-- MapReduce Shuffle服务 -->
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>namenode</value> <!-- ResourceManager主机名 -->
</property>
</configuration>
首次启动HDFS前,必须格式化NameNode(初始化元数据):
hdfs namenode -format
执行后会提示“Format successful”,表示格式化完成。
在NameNode节点上执行以下命令启动HDFS服务:
start-dfs.sh
验证进程是否启动:
jps
应看到NameNode和DataNode进程(若为单节点,两者均在同一机器上)。
查看HDFS状态:
hdfs dfsadmin -report
输出应显示NameNode和DataNode的信息。
访问Web界面:
在浏览器中输入http://namenode:50070(若端口未修改),查看HDFS的存储状态、节点信息等。
上传/下载文件:
hdfs dfs -mkdir /user/test # 创建HDFS目录
hdfs dfs -put /local/file.txt /user/test # 上传本地文件到HDFS
hdfs dfs -ls /user/test # 查看HDFS目录内容
配置SSH无密码登录:若为多节点环境,需在NameNode上生成SSH密钥,并复制到所有DataNode节点:
ssh-keygen -t rsa
ssh-copy-id hadoop@datanode1
ssh-copy-id hadoop@datanode2
确保NameNode可通过SSH无密码登录到所有DataNode。
配置slaves文件:在$HADOOP_HOME/etc/hadoop/目录下编辑slaves文件,添加所有DataNode的主机名(每行一个):
datanode1
datanode2
重启HDFS后,DataNode会自动注册到NameNode。
通过以上步骤,即可在CentOS系统上成功集成HDFS,实现分布式文件存储功能。