Hadoop基于Java开发,需先安装JDK。以CentOS为例:
sudo yum install -y java-1.8.0-openjdk-devel # 安装OpenJDK 8
java -version # 验证安装(需显示Java版本信息)
将Java路径添加到环境变量(所有节点):
echo 'export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk' >> ~/.bashrc
echo 'export PATH=$PATH:$JAVA_HOME/bin' >> ~/.bashrc
source ~/.bashrc # 使配置生效
从Apache官网下载稳定版本(如3.3.5),解压到指定目录(如/opt/hadoop):
wget https://dlcdn.apache.org/hadoop/common/hadoop-3.3.5/hadoop-3.3.5.tar.gz # 下载
tar -xzvf hadoop-3.3.5.tar.gz -C /opt/ # 解压
sudo mv /opt/hadoop-3.3.5 /opt/hadoop # 重命名目录
设置目录权限(避免权限问题):
sudo chown -R root:root /opt/hadoop # 根据实际用户调整
编辑~/.bashrc(或/etc/profile),添加Hadoop环境变量:
echo 'export HADOOP_HOME=/opt/hadoop' >> ~/.bashrc
echo 'export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin' >> ~/.bashrc
source ~/.bashrc # 使配置生效
验证Hadoop命令:
hadoop version # 应显示Hadoop版本信息
Hadoop配置文件位于$HADOOP_HOME/etc/hadoop目录,需修改以下核心文件:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://namenode:9000</value> <!-- Master节点主机名,端口9000 -->
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop/tmp</value> <!-- 临时目录(需提前创建) -->
</property>
</configuration>
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value> <!-- 数据副本数(集群节点≥3时设为3,否则设为节点数) -->
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/opt/hadoop/hdfs/namenode</value> <!-- NameNode元数据存储路径 -->
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/opt/hadoop/hdfs/datanode</value> <!-- DataNode数据存储路径 -->
</property>
</configuration>
需先将mapred-site.xml.template重命名为mapred-site.xml:
mv $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.resourcemanager.hostname</name>
<value>resourcemanager</value> <!-- ResourceManager节点主机名 -->
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value> <!-- 必须配置,支持MapReduce shuffle -->
</property>
</configuration>
若使用start-dfs.sh/start-yarn.sh自动启动DataNode/NodeManager,需在$HADOOP_HOME/etc/hadoop/slaves中列出所有Slave节点主机名(每行一个):
slave1
slave2
或使用workers文件(部分版本支持)。
Hadoop集群节点间需通过SSH无密码通信,步骤如下:
ssh-keygen -t rsa # 按回车键默认生成(路径~/.ssh/id_rsa)
ssh-copy-id slave1 # 输入Slave节点密码,完成公钥复制
ssh-copy-id slave2
ssh slave1 # 无需密码即可登录
ssh slave2
首次启动前需格式化NameNode(仅执行一次,会清除HDFS所有数据):
hdfs namenode -format # 输入命令后等待格式化完成(显示"Successfully formatted")
$HADOOP_HOME/sbin/start-dfs.sh # 启动NameNode、DataNode
$HADOOP_HOME/sbin/start-yarn.sh # 启动ResourceManager、NodeManager
jps # Master节点应显示NameNode、ResourceManager;Slave节点应显示DataNode、NodeManager
http://namenode:9870(查看HDFS状态、节点列表)http://resourcemanager:8088(查看资源分配、任务运行情况)hdfs dfsadmin -report # 查看HDFS集群报告(节点状态、存储容量)
yarn node -list # 查看YARN集群节点列表
/etc/hosts中配置节点主机名与IP映射(如192.168.1.100 namenode),避免DNS问题。