在分布式计算环境中,Hadoop Distributed File System (HDFS) 和 Network File System (NFS) 都非常有用,但它们服务于不同的需求。HDFS 主要是为了处理大规模数据集而设计,适用于批处理作业。NFS 则是用于在类 Unix 操作系统之间共享文件,适用于需要频繁访问文件的场景。
首先,你需要在你的系统上安装 Hadoop。可以从 Apache Hadoop 官网下载 Hadoop 的 tarball。
wget https://downloads.apache.org/hadoop/common/hadoop-<version>/hadoop-<version>.tar.gz
tar -xzvf hadoop-<version>.tar.gz
mv hadoop-<version> /usr/local/hadoop
接下来,配置 Hadoop。主要配置文件包括 hadoop-env.sh, core-site.xml, hdfs-site.xml 和 mapred-site.xml。
hadoop-env.sh
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/datanode</value>
</property>
</configuration>
mapred-site.xml (如果需要使用 MapReduce)
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
hdfs namenode -format
start-dfs.sh
在 Ubuntu 上,可以使用以下命令安装 NFS 服务器和客户端:
sudo apt-get update
sudo apt-get install nfs-kernel-server nfs-common
编辑 /etc/exports 文件,添加你想要共享的目录:
sudo vim /etc/exports
添加一行,例如:
/usr/local/hadoop/namenode *(rw,sync,no_subtree_check)
然后,重新加载 NFS 导出:
sudo exportfs -a
sudo systemctl start nfs-kernel-server
sudo systemctl enable nfs-kernel-server
在客户端上挂载 NFS 共享:
sudo mount -t nfs <server_ip>:/usr/local/hadoop/namenode /mnt/nfs_share
现在,你可以通过 NFS 客户端访问 HDFS 的 NameNode 数据目录了。但是,通常不建议直接通过 NFS 访问 HDFS 数据目录,因为这可能会违背 HDFS 的设计初衷。更好的方式是使用 HDFS 的 WebHDFS API 或 Hadoop 的其他客户端工具来访问数据。如果你需要通过 NFS 提供对 HDFS 数据的访问,确保这样做不会违反你的安全策略和数据完整性要求。通常,NFS 更适合用于共享非结构化数据或者在单机或多节点间共享配置文件等。对于大数据处理任务,建议继续使用 HDFS。

