在Ubuntu上运行Hadoop示例前,需完成以下基础准备:
安装Java环境:Hadoop依赖Java运行环境,推荐使用OpenJDK 8。
执行以下命令安装并验证:
sudo apt update
sudo apt install openjdk-8-jdk
java -version # 验证安装,需显示Java版本信息
配置SSH免密登录:Hadoop需要无密码SSH访问本地节点(伪分布模式必需)。
生成密钥对并配置:
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa # 生成密钥对(直接回车)
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys # 添加公钥到授权文件
chmod 600 ~/.ssh/authorized_keys # 设置权限
ssh localhost # 测试免密登录(无需输入密码)
下载并解压Hadoop:从Apache官网下载稳定版本(如3.3.1),解压至指定目录:
wget https://archive.apache.org/dist/hadoop/common/hadoop-3.3.1/hadoop-3.3.1.tar.gz
sudo tar -zxvf hadoop-3.3.1.tar.gz -C /usr/local/
sudo chown -R $USER:$USER /usr/local/hadoop-3.3.1 # 修改所有权(避免权限问题)
设置环境变量:编辑~/.bashrc文件,添加Hadoop路径和Java环境变量:
export HADOOP_HOME=/usr/local/hadoop-3.3.1
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 # 根据实际Java路径调整
使配置生效:
source ~/.bashrc
配置Hadoop核心文件:进入Hadoop配置目录($HADOOP_HOME/etc/hadoop),修改以下文件:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/usr/local/hadoop-3.3.1/data/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/usr/local/hadoop-3.3.1/data/datanode</value>
</property>
</configuration>
cp mapred-site.xml.template mapred-site.xml
编辑内容:<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>localhost</value>
</property>
</configuration>
格式化HDFS:首次运行需格式化NameNode(删除原有数据):
hdfs namenode -format
启动Hadoop集群:依次启动HDFS和YARN服务:
start-dfs.sh # 启动HDFS(NameNode、DataNode)
start-yarn.sh # 启动YARN(ResourceManager、NodeManager)
验证服务状态:
jps命令查看守护进程:应显示NameNode、DataNode、ResourceManager、NodeManager(若未显示,检查日志文件$HADOOP_HOME/logs)。http://localhost:9870(Hadoop 3.x版本)http://localhost:8088Hadoop自带WordCount示例,用于统计文本单词频率,步骤如下:
准备输入文件:在本地创建输入目录和测试文件:
mkdir -p ~/hadoop_input
echo "hello world hello hadoop" > ~/hadoop_input/file1.txt
echo "hadoop mapreduce yarn" > ~/hadoop_input/file2.txt
上传文件到HDFS:将本地输入目录上传至HDFS的/input路径:
hdfs dfs -mkdir -p /input # 在HDFS上创建输入目录
hdfs dfs -put ~/hadoop_input/* /input # 上传文件
运行WordCount程序:使用Hadoop jar命令执行示例:
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar wordcount /input /output
(注:hadoop-mapreduce-examples-*.jar是Hadoop自带的示例程序,路径可能因版本略有差异)
查看运行结果:
hdfs dfs -ls /output(应包含part-r-00000文件,存储计算结果)。hdfs dfs -cat /output/part-r-00000(显示单词及出现次数,如hello 2、world 1等)。测试完成后,使用以下命令停止Hadoop服务:
stop-yarn.sh # 停止YARN
stop-dfs.sh # 停止HDFS
chmod命令调整目录权限(如HDFS数据目录)。sudo ufw disable。