Hadoop在Linux上的部署步骤
sudo apt update && sudo apt install -y openjdk-11-jdk # Ubuntu/Debian
sudo yum install -y java-11-openjdk-devel # CentOS/RHEL
验证安装:java -version(需显示Java版本信息)。wget命令获取:wget https://dlcdn.apache.org/hadoop/common/hadoop-3.3.5/hadoop-3.3.5.tar.gz
解压至指定目录(如/opt/hadoop):sudo tar -zxvf hadoop-3.3.5.tar.gz -C /opt/
sudo mv /opt/hadoop-3.3.5 /opt/hadoop # 重命名为hadoop方便管理
编辑用户家目录下的.bashrc文件(全局配置可修改/etc/profile),添加Hadoop相关环境变量:
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 # Java安装路径(通过`java -XshowSettings:properties -version`查看)
export HADOOP_HOME=/opt/hadoop # Hadoop安装路径
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin # 添加Hadoop命令到PATH
使配置生效:source ~/.bashrc。
Hadoop的主要配置文件位于$HADOOP_HOME/etc/hadoop目录下,需修改以下文件:
配置Hadoop文件系统的默认URI(本地模式无需修改,集群模式需替换为NameNode的IP/主机名):
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value> <!-- 本地模式 -->
</property>
</configuration>
配置HDFS的核心参数(数据存储路径、副本数):
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value> <!-- 副本数(本地模式设为1,集群模式根据节点数调整) -->
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/opt/hadoop/tmp/dfs/name</value> <!-- NameNode元数据存储路径 -->
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/opt/hadoop/tmp/dfs/data</value> <!-- DataNode数据存储路径 -->
</property>
</configuration>
配置YARN资源管理器(MapReduce运行框架):
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value> <!-- Shuffle服务 -->
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</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> <!-- 使用YARN作为资源管理器 -->
</property>
</configuration>
Hadoop集群节点间需要通过SSH无密码通信(本地模式仅需本机免密):
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa(直接回车,默认保存到~/.ssh目录)。authorized_keys文件:cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys。chmod 600 ~/.ssh/authorized_keys。ssh localhost(无需输入密码则成功)。首次启动HDFS前,需格式化NameNode(会清空HDFS所有数据,生产环境需谨慎):
hdfs namenode -format
start-dfs.sh(启动NameNode、DataNode等服务)。start-yarn.sh(启动ResourceManager、NodeManager等服务)。jps(应显示NameNode、DataNode、ResourceManager、NodeManager等进程)。http://localhost:50070(查看HDFS文件系统、节点状态)。http://localhost:8088(查看集群资源、运行任务)。hdfs dfs -mkdir -p /user/hadoop。hdfs dfs -put ~/test.txt /user/hadoop/。hdfs dfs -get /user/hadoop/test.txt ~/。hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.5.jar wordcount /user/hadoop/test.txt /user/hadoop/output
sudo systemctl stop firewalld # CentOS
sudo ufw disable # Ubuntu
$HADOOP_HOME/logs目录下的日志文件,排查问题。authorized_keys,并在slaves文件($HADOOP_HOME/etc/hadoop)中添加节点主机名,然后重启集群。