在centos系统上部署hadoop分布式文件系统(hdfs)需要多个步骤,涵盖hadoop安装、集群配置以及hdfs启动和验证。以下步骤提供了一个简明的配置指南:
1. 安装Java运行环境
sudo yum install java-1.8.0-openjdk-devel
验证安装:
java -version
2. 下载和解压Hadoop
从apache Hadoop官网下载最新版Hadoop,并解压到指定目录。例如:
wget https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-3.3.1/hadoop-3.3.1.tar.gz tar -xzvf hadoop-3.3.1.tar.gz -C /usr/local/ sudo mv /usr/local/hadoop-3.3.1 /usr/local/hadoop
3. 设置Hadoop环境变量
编辑/etc/profile.d/hadoop.sh文件,添加以下环境变量:
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk export HADOOP_HOME=/usr/local/hadoop export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
使环境变量生效:
source /etc/profile.d/hadoop.sh
4. 配置Hadoop核心文件
需要配置core-site.xml、hdfs-site.xml和yarn-site.xml三个核心配置文件。
core-site.xml
编辑$HADOOP_HOME/etc/hadoop/core-site.xml,添加以下内容:
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property> </configuration>
hdfs-site.xml
编辑$HADOOP_HOME/etc/hadoop/hdfs-site.xml,添加以下内容:
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>/usr/local/hadoop/data/namenode</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>/usr/local/hadoop/data/datanode</value> </property> </configuration>
创建并设置数据目录权限:
sudo mkdir -p /usr/local/hadoop/data/namenode sudo mkdir -p /usr/local/hadoop/data/datanode sudo chown -R hadoop:hadoop /usr/local/hadoop/data
yarn-site.xml
编辑$HADOOP_HOME/etc/hadoop/yarn-site.xml,添加以下内容:
<configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration>
5. 格式化HDFS
首次启动HDFS前,需要格式化:
hdfs namenode -format
6. 启动Hadoop集群
启动HDFS和YARN:
start-dfs.sh start-yarn.sh
7. 验证HDFS
使用jps命令检查HDFS进程:
jps
预期看到NameNode、DataNode、SecondaryNameNode、ResourceManager和NodeManager进程。
访问HDFS Web ui (https://www.php.cn/link/56c507670a47dd95c4a9b1a972b7f33d) 查看HDFS状态。
8. 停止Hadoop集群
停止HDFS和YARN:
stop-dfs.sh stop-yarn.sh
以上步骤适用于单节点HDFS配置。多节点集群配置需要编辑$HADOOP_HOME/etc/hadoop/slaves文件,并在每个节点重复上述步骤。 请确保Hadoop用户已创建并拥有合适的权限。