在Ubuntu上部署Hadoop应用的完整步骤
Hadoop依赖Java运行环境,推荐安装OpenJDK 8或11(兼容性最佳)。
sudo apt updatesudo apt install -y openjdk-11-jdkjava -version(输出应包含“openjdk version “11.x.x””)。Hadoop的NameNode和DataNode需要通过SSH通信,需配置本地免密登录。
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa(直接回车,默认保存到~/.ssh目录)。cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys。chmod 600 ~/.ssh/authorized_keys(防止未授权访问)。ssh localhost(若无需密码即可登录,则配置成功)。从Apache官网下载稳定版本(如3.3.6),解压到指定目录(如/usr/local)。
wget https://downloads.apache.org/hadoop/core/hadoop-3.3.6/hadoop-3.3.6.tar.gz(国内用户可使用清华镜像加速:wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz)。sudo tar -zxvf hadoop-3.3.6.tar.gz -C /usr/local/。sudo mv /usr/local/hadoop-3.3.6 /usr/local/hadoop。sudo chown -R $USER:$USER /usr/local/hadoop(避免权限问题)。编辑~/.bashrc文件,添加Hadoop和Java的环境变量,使命令全局可用。
nano ~/.bashrc(或vim ~/.bashrc)。export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 # 根据实际Java路径调整
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source ~/.bashrc。echo $HADOOP_HOME(应输出Hadoop安装路径)。进入Hadoop配置目录($HADOOP_HOME/etc/hadoop),修改以下关键文件:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value> <!-- HDFS的URI -->
</property>
</configuration>
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value> <!-- 单机部署设为1,集群需调整为大于1 -->
</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.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
</configuration>
首次启动Hadoop前,必须格式化NameNode(清除旧数据,仅第一次需要)。
hdfs namenode -format(按提示确认,输出“Format successful”则表示成功)。启动HDFS(分布式文件系统)和YARN(资源管理器)服务。
start-dfs.sh(启动NameNode和DataNode)。start-yarn.sh(启动ResourceManager和NodeManager)。jps(应显示NameNode、DataNode、ResourceManager、NodeManager等进程,若缺失则检查日志)。http://localhost:9870(Hadoop 3.x版本端口,旧版本为50070)。http://localhost:8088(查看集群资源和任务)。hdfs dfs -ls /(列出根目录)。mkdir -p input # 创建输入目录
cp $HADOOP_HOME/etc/hadoop/*.xml input # 复制配置文件作为测试数据
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar wordcount input output # 运行WordCount
hdfs dfs -cat output/* # 查看输出结果
core-site.xml中的fs.defaultFS端口(如改为9001),并同步修改yarn-site.xml中的yarn.resourcemanager.webapp.address端口。sudo ufw allow 9870/tcp)。JAVA_HOME not set,需确认~/.bashrc中的JAVA_HOME路径是否正确(通过java -XshowSettings:properties -version查看Java安装路径)。