sudo apt update && sudo apt upgrade -y
build-essential用于编译依赖,openssh-server用于集群节点间通信(单机环境也需安装)。sudo apt install -y build-essential openssh-server
Hadoop依赖Java运行环境(推荐OpenJDK 8,兼容性最佳)。
sudo apt install -y openjdk-8-jdk
openjdk version "1.8.x"。java -version
/etc/profile,添加以下内容并使生效:export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::")
export PATH=$JAVA_HOME/bin:$PATH
source /etc/profile
wget下载。wget https://downloads.apache.org/hadoop/common/hadoop-3.3.4/hadoop-3.3.4.tar.gz
/usr/local/,便于系统管理。sudo tar -xzvf hadoop-3.3.4.tar.gz -C /usr/local/
sudo mv /usr/local/hadoop-3.3.4 /usr/local/hadoop
编辑用户级环境变量文件(~/.bashrc),添加Hadoop路径,使hadoop、hdfs等命令全局可用。
nano ~/.bashrc
在文件末尾添加:
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
使配置生效:
source ~/.bashrc
进入Hadoop配置目录($HADOOP_HOME/etc/hadoop),修改以下关键文件:
配置HDFS的默认文件系统地址(单机环境指向localhost)。
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/tmp</value>
</property>
</configuration>
配置HDFS的副本数(单机设为1)、NameNode和DataNode的数据目录。
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/usr/local/hadoop/data/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/usr/local/hadoop/data/datanode</value>
</property>
</configuration>
配置YARN的shuffle服务(MapReduce需要)。
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
</configuration>
HDFS需要专用目录存储元数据和数据,需手动创建并设置权限。
sudo mkdir -p /usr/local/hadoop/data/namenode
sudo mkdir -p /usr/local/hadoop/data/datanode
sudo chown -R $USER:$USER /usr/local/hadoop/data # 将目录所有者设为当前用户
首次启动HDFS前,必须格式化NameNode(初始化元数据存储目录)。
hdfs namenode -format
使用start-dfs.sh脚本启动NameNode和DataNode服务。
start-dfs.sh
jps命令,应看到NameNode、DataNode、SecondaryNameNode三个进程。jps
http://localhost:50070(Hadoop 3.x版本可能为http://localhost:9870),查看HDFS集群状态。若系统启用了ufw防火墙,需允许Hadoop相关端口通过。
sudo ufw allow 9000 # NameNode RPC端口
sudo ufw allow 50070 # HDFS Web界面端口
Permission denied错误:确保HDFS数据目录的所有者为当前用户(sudo chown -R $USER:$USER /usr/local/hadoop/data)。java.io.IOException: NameNode is not formatted:未格式化NameNode,重新执行hdfs namenode -format。logs目录下的日志文件(如/usr/local/hadoop/logs/),定位具体错误。通过以上步骤,即可在Ubuntu系统上完成HDFS环境的基础配置。如需扩展为分布式集群,还需配置多台节点的SSH免密登录、修改core-site.xml中的fs.defaultFS为集群地址,并同步所有节点的配置文件。