HDFS与Ubuntu集成的详细步骤
在开始集成前,需完成系统基础配置:
sudo apt update && sudo apt upgrade -y,确保系统软件包为最新版本。sudo apt install -y build-essential openssh-server,安装编译工具和SSH服务(用于集群节点间通信)。Hadoop(HDFS的核心框架)依赖Java运行环境,需安装OpenJDK 8(Hadoop 3.x推荐的Java版本):
sudo apt install openjdk-8-jdk。java -version,确认输出显示Java版本为1.8.x。从Apache Hadoop官网下载稳定版本(如3.3.4),解压至Ubuntu的/usr/local/目录(系统级软件安装路径):
wget https://downloads.apache.org/hadoop/core/hadoop-3.3.4/hadoop-3.3.4.tar.gz。tar -xzvf hadoop-3.3.4.tar.gz -C /usr/local/。sudo mv /usr/local/hadoop-3.3.4 /usr/local/hadoop,简化后续命令。为了让系统识别Hadoop命令,需将Hadoop路径添加至环境变量:
~/.bashrc(当前用户)或/etc/profile(全局),添加以下内容:export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source ~/.bashrc(或source /etc/profile)。进入Hadoop配置目录($HADOOP_HOME/etc/hadoop),修改以下关键文件:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value> <!-- 本地模式下的NameNode地址 -->
</property>
</configuration>
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value> <!-- 本地模式下副本数为1(生产环境建议≥3) -->
</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>
<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>
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value> <!-- 使用YARN作为资源管理器 -->
</property>
</configuration>
根据hdfs-site.xml中的配置,手动创建NameNode和DataNode的数据目录,并设置正确的权限:
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 # 将目录所有者设为当前用户(避免权限问题)
NameNode是HDFS的“主节点”,负责存储文件系统元数据。首次启动前必须格式化(此操作会清空所有HDFS数据,仅首次需要):
hdfs namenode -format
格式化完成后,终端会显示“Format successful”提示。
使用Hadoop提供的脚本启动HDFS服务:
start-dfs.sh,该命令会自动启动NameNode和DataNode进程。jps,若看到以下进程则表示启动成功:
通过命令行和Web界面验证HDFS是否正常工作:
hdfs dfs -mkdir -p /user/$USER/input。hdfs dfs -put ~/test.txt /user/$USER/input。hdfs dfs -ls /user/$USER/input。hdfs dfs -get /user/$USER/input/test.txt ~/downloaded.txt。hdfs dfs -rm /user/$USER/input/test.txt。http://localhost:9870(Hadoop 3.x的NameNode Web界面),查看HDFS文件系统状态、节点信息等。若搭建多节点HDFS集群(NameNode+多个DataNode),需配置SSH免密登录,避免每次操作都需要输入密码:
ssh-keygen -t rsa -P '',按回车键生成密钥对(默认保存在~/.ssh/id_rsa)。ssh-copy-id user@datanode_ip(将user替换为目标节点用户名,datanode_ip替换为目标节点IP地址),将公钥添加至目标节点的~/.ssh/authorized_keys文件中。ssh user@datanode_ip,若无需输入密码即可登录,则配置成功。sudo ufw allow 9870。