搭建Ubuntu 版的Hadoop集群是大数据处理的基础,通常涉及配置多台机器(节点),将它们连接到一个集群中,以实现分布式计算和存储。下面是一个Hadoop集群搭建的详细指南。
一、准备工作
硬件要求:
至少3台机器(或者3个虚拟机):一个作为主节点(namenode),其他作为从节点(datanode)。每台机器需要安装Ubuntu操作系统(推荐使用 18.04 或更高版本)。
网络配置:
确保每台机器的网络可互通。
配置机器的静态IP地址,避免IP地址变化。
配置SSH无密码登录:所有节点间需要通过 SSH 免密码登录,以便 Hadoop 管理进程在各个节点上启动和停止。
JDK 安装: Hadoop需要Java环境,因此需要先安装JDK(建议使用OpenJDK8或11)。
二、安装 Hadoop 依赖和准备
1. 安装 JDK
在每台机器上安装 OpenJDK(版本 8 或 11)。
sudo apt update
sudo apt install openjdk-8-jdk
验证安装:
java -version
确保输出正确的 Java 版本。
2. 配置 JAVA_HOME
将 JAVA_HOME 设置为 JDK 的安装路径,编辑 ~/.bashrc 文件,添加如下配置:
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
然后执行:
source ~/.bashrc
3. 安装 Hadoop
下载 Hadoop(可以从官网获取最新的稳定版本):访问 Hadoop 官网,下载最新版本的 .tar.gz 文件。
解压安装包:
cd /opt
sudo wget http://apache.mirrors.hoobly.com/hadoop/common/hadoop-3.x.x/hadoop-3.x.x.tar.gz
sudo tar -xzvf hadoop-3.x.x.tar.gz
sudo mv hadoop-3.x.x hadoop
配置 Hadoop 环境变量:
在 ~/.bashrc 中添加以下内容:
export HADOOP_HOME=/opt/hadoop
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
执行:
source ~/.bashrc
4. 配置 SSH 无密码登录
Hadoop 需要在各个节点之间进行 SSH 登录,且不能要求密码。执行以下命令来设置无密码 SSH 登录:
生成 SSH 密钥对:
ssh-keygen -t rsa
按提示操作,默认文件位置即可。
将 SSH 公钥复制到 ~/.ssh/authorized_keys 中:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
在每个节点上执行此步骤,确保所有节点都能通过 SSH 免密码登录。
5. 配置 /etc/hosts
为了让所有节点相互识别,在 /etc/hosts 文件中添加所有节点的 IP 和主机名。每个节点都需要修改该文件。假设主节点的 IP 地址是 192.168.1.1.从节点的 IP 地址是 192.168.1.2 和 192.168.1.3.编辑 /etc/hosts 文件并添加如下内容:
192.168.1.1 master
192.168.1.2 slave1
192.168.1.3 slave2
三、配置 Hadoop
1. 配置 Hadoop 核心文件
Hadoop 的配置文件存储在 HADOOP_CONF_DIR 目录下,常见的配置文件包括:
core-site.xml
hdfs-site.xml
mapred-site.xml
yarn-site.xml
2. 配置 core-site.xml
编辑 core-site.xml,配置 Hadoop 的基本文件系统:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
</configuration>
这里 master 是主节点的主机名,9000 是 HDFS 的默认端口。
3. 配置 hdfs-site.xml
编辑 hdfs-site.xml,配置 HDFS 的存储路径和副本数等:
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/opt/hadoop/hdfs/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/opt/hadoop/hdfs/datanode</value>
</property>
</configuration>
4. 配置 mapred-site.xml
编辑 mapred-site.xml,配置 MapReduce 框架:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobtracker.address</name>
<value>master:9001</value>
</property>
</configuration>
5. 配置 yarn-site.xml
编辑 yarn-site.xml,配置 YARN:
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
四、启动 Hadoop 集群
1. 格式化 HDFS
首先需要在主节点上格式化 HDFS:
hdfs namenode -format
2. 启动 Hadoop 服务
在主节点上执行以下命令启动 Hadoop 集群:
start-dfs.sh
start-yarn.sh
检查服务是否启动:
jps
你应该能看到以下进程:
NameNode
DataNode
ResourceManager
NodeManager
3. 验证集群是否正常运行
你可以通过以下 URL 验证 Hadoop 的 Web 界面:
HDFS Web UI:http://master:50070
YARN Web UI:http://master:8088
4. 运行一个简单的 Hadoop 示例
可以运行 Hadoop 的示例作业来验证集群是否正常工作:
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar pi 16 1000
此命令将计算 Pi 的估计值,并输出结果。
五、将节点添加到集群
将从节点的 hadoop-env.sh 配置为正确的 Java 环境路径。
将从节点的 slaves 文件添加到主节点。
编辑主节点上的 slaves 文件,添加从节点的主机名:
nano $HADOOP_HOME/etc/hadoop/slaves
例如:
slave1
slave2
然后,运行 start-dfs.sh 和 start-yarn.sh 命令来启动从节点。
总之,搭建一个 Ubuntu 版的 Hadoop 集群 涉及多个步骤,通过这些步骤,你可以搭建并运行一个基本的 Hadoop 集群。