hadoop)操作,避免root权限滥用。Hadoop依赖Java运行环境,需在所有节点安装JDK(推荐OpenJDK 8/11):
# CentOS系统(以OpenJDK 8为例)
sudo yum install -y java-1.8.0-openjdk-devel
# Ubuntu系统(以OpenJDK 11为例)
sudo apt update
sudo apt install -y openjdk-11-jdk
# 验证安装
java -version # 应输出Java版本信息
配置JAVA_HOME环境变量(编辑~/.bashrc或/etc/profile):
echo 'export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk' >> ~/.bashrc # CentOS路径
echo 'export PATH=$PATH:$JAVA_HOME/bin' >> ~/.bashrc
source ~/.bashrc # 使配置生效
从Apache官网下载稳定版本的Hadoop(如3.4.1),解压到指定目录(如/usr/local):
# 下载Hadoop(以3.4.1为例)
wget https://downloads.apache.org/hadoop/common/hadoop-3.4.1/hadoop-3.4.1.tar.gz
# 解压并移动到目标目录
tar -zxvf hadoop-3.4.1.tar.gz
sudo mv hadoop-3.4.1 /usr/local/hadoop
# 修改目录权限(避免权限问题)
sudo chown -R hadoop:hadoop /usr/local/hadoop
编辑用户目录下的~/.bashrc文件,添加Hadoop相关环境变量:
echo 'export HADOOP_HOME=/usr/local/hadoop' >> ~/.bashrc
echo 'export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop' >> ~/.bashrc
echo 'export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin' >> ~/.bashrc
source ~/.bashrc # 使配置生效
Hadoop集群节点间需通过SSH免密通信,步骤如下:
ssh-keygen -t rsa -P "" # 按回车键生成默认路径的密钥对
ssh-copy-id hadoop@master # Master节点
ssh-copy-id hadoop@worker1 # Worker1节点
ssh-copy-id hadoop@worker2 # Worker2节点
ssh hadoop@master # 无需输入密码即可登录
ssh hadoop@worker1
ssh hadoop@worker2
进入Hadoop配置目录($HADOOP_HOME/etc/hadoop),修改以下关键文件:
配置HDFS的默认文件系统地址(指向NameNode):
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value> <!-- 替换为Master节点的主机名/IP -->
</property>
</configuration>
配置HDFS的副本数(生产环境建议3副本,测试环境可设为1)及NameNode/DataNode的数据存储路径:
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value> <!-- 副本数,根据节点数量调整 -->
</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>
指定MapReduce框架为YARN(需提前创建mapred-site.xml,可通过cp mapred-site.xml.template mapred-site.xml生成):
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
配置YARN的资源管理器(ResourceManager)及Shuffle服务:
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value> <!-- 替换为ResourceManager节点的主机名/IP -->
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
NameNode是HDFS的核心组件,首次启动前需格式化(仅执行一次,会清空HDFS数据):
hdfs namenode -format
格式化后,会在配置的dfs.namenode.name.dir路径下生成元数据文件。
start-dfs.sh # 启动NameNode、DataNode等服务
start-yarn.sh # 启动ResourceManager、NodeManager等服务
验证服务是否启动:
jps # 查看Java进程,应包含NameNode、DataNode、ResourceManager、NodeManager等
若进程未启动,可查看日志文件($HADOOP_HOME/logs)排查问题。
hdfs dfsadmin -report # 显示DataNode列表、存储容量等信息
http://master:9870(默认端口,Hadoop 3.x版本)http://master:8088以上步骤完成后,一个基本的Hadoop集群即可正常运行。生产环境中还需进行优化(如调整JVM参数、配置高可用HA、增加数据节点等)。