Hadoop依赖Java运行环境,需先安装OpenJDK 11(推荐):
sudo apt update
sudo apt install openjdk-11-jdk
# 验证安装
java -version # 应输出Java版本信息
javac -version # 验证编译器
wget https://downloads.apache.org/hadoop/common/hadoop-3.3.1/hadoop-3.3.1.tar.gz
/usr/local目录(需管理员权限):sudo tar -xzvf hadoop-3.3.1.tar.gz -C /usr/local/
sudo mv /usr/local/hadoop-3.3.1 /usr/local/hadoop
编辑当前用户的~/.bashrc文件(仅影响当前用户),添加Hadoop路径:
nano ~/.bashrc
在文件末尾添加以下内容(替换/usr/local/hadoop为实际解压路径):
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
保存后使配置生效:
source ~/.bashrc
验证环境变量:
echo $HADOOP_HOME # 应输出Hadoop安装路径
hadoop version # 应显示Hadoop版本信息
进入Hadoop配置目录($HADOOP_HOME/etc/hadoop),修改以下文件:
core-site.xml(HDFS默认文件系统)<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value> <!-- 单机模式指向本地 -->
</property>
</configuration>
hdfs-site.xml(HDFS配置)<configuration>
<property>
<name>dfs.replication</name>
<value>1</value> <!-- 单机模式副本数设为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>
mapred-site.xml(MapReduce框架)若文件不存在,先复制模板:
cp mapred-site.xml.template mapred-site.xml
修改内容:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value> <!-- 使用YARN作为资源管理器 -->
</property>
</configuration>
yarn-site.xml(YARN配置)<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>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>localhost</value> <!-- 单机模式ResourceManager指向本地 -->
</property>
</configuration>
hdfs namenode -format
start-dfs.sh # 启动HDFS(NameNode、DataNode)
start-yarn.sh # 启动YARN(ResourceManager、NodeManager)
jps
正常输出应包含以下进程:
NameNode(HDFS主节点)DataNode(HDFS数据节点)ResourceManager(YARN资源管理器)NodeManager(YARN节点管理器)hdfs dfs -ls /
hdfs dfs -ls -R /
-p参数自动创建父目录):hdfs dfs -mkdir -p /user/hadoop/input
hdfs dfs -put ~/local_file.txt /user/hadoop/input/
hdfs dfs -get /user/hadoop/input/local_file.txt ~/downloaded_file.txt
-r递归删除目录):hdfs dfs -rm -r /user/hadoop/input/
运行Hadoop自带的WordCount示例(统计文本词频):
# 输入目录(需提前创建并上传文件)
hdfs dfs -mkdir -p /input
hdfs dfs -put ~/local_text.txt /input/
# 执行WordCount
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar wordcount /input /output
# 查看输出结果
hdfs dfs -cat /output/part-r-00000
sudo lsof -i :9000(HDFS端口)或sudo lsof -i :8088(YARN端口)查看占用进程,用kill -9 <PID>终止。dfs.namenode.name.dir、dfs.datanode.data.dir)有正确的读写权限(chown -R $USER:$USER /usr/local/hadoop/data)。JAVA_HOME not set,需检查~/.bashrc中的JAVA_HOME配置并重新加载。