在Ubuntu上搭建HDFS集群是一个相对复杂的过程,需要仔细规划和执行。以下是一个详细的步骤指南,帮助你完成这一任务。
首先,确保你的系统是最新的:
sudo apt update && sudo apt upgrade -y
安装一些必要的工具:
sudo apt install -y build-essential openssh-server
下载并安装JDK:
wget https://download.java.net/java/GA/jdk8/9/GPL/openjdk-8u221-b11-linux-x64.tar.gz
tar -zxvf openjdk-8u221-b11-linux-x64.tar.gz -C /usr/lib/jvm
配置环境变量:
sudo nano /etc/profile
在文件末尾添加以下内容:
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_221
export PATH=$JAVA_HOME/bin:$PATH
使环境变量生效:
source /etc/profile
从Apache Hadoop官网下载所需版本的Hadoop安装包。例如,下载Hadoop 3.3.4:
wget http://archive.apache.org/dist/hadoop/common/hadoop-3.3.4/hadoop-3.3.4.tar.gz
tar -xzf hadoop-3.3.4.tar.gz
sudo mv hadoop-3.3.4 /usr/local/hadoop
编辑 /usr/local/hadoop/etc/hadoop/hadoop-env.sh
文件,设置 JAVA_HOME
:
sudo nano /usr/local/hadoop/etc/hadoop/hadoop-env.sh
在文件末尾添加以下内容:
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_221
编辑 /usr/local/hadoop/etc/profile
文件,添加Hadoop的 bin
目录到 PATH
环境变量:
echo 'export HADOOP_HOME=/usr/local/hadoop' >> /etc/profile
echo 'export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin' >> /etc/profile
使环境变量生效:
source /etc/profile
ssh-keygen -t rsa
假设你有三个节点(master和两个slaves),将公钥复制到其他节点:
ssh-copy-id user@slave_node_ip1
ssh-copy-id user@slave_node_ip2
ssh-copy-id user@slave_node_ip3
编辑 /usr/local/hadoop/etc/hadoop/core-site.xml
文件,配置HDFS的URI:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
编辑 /usr/local/hadoop/etc/hadoop/hdfs-site.xml
文件,配置数据块大小、副本数等:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/usr/local/hadoop/hdfs/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/usr/local/hadoop/hdfs/datanode</value>
</property>
</configuration>
sudo mkdir -p /usr/local/hadoop/hdfs/namenode
sudo mkdir -p /usr/local/hadoop/hdfs/datanode
sudo chown -R hdfs:hdfs /usr/local/hadoop/hdfs
hdfs namenode -format
./sbin/start-dfs.sh
检查HDFS状态:
hdfs dfsadmin -report
上传文件测试:
hdfs dfs -put local_file_path hdfs://namenode_ip:9000/hdfs_directory
在浏览器中访问:
http://namenode_ip:50070
如果一切正常,你应该能看到HDFS的Web界面。