一、前期准备工作
1. 环境规划
假设我们有三台虚拟机,分别作为 NameNode 和 DataNode,集群规划如下:
节点名称 | 主机名 | IP地址 | 角色 |
---|---|---|---|
主节点 | namenode | hadoop01 | NameNode、ResourceManager |
从节点1 | datanode1 | hadoop02 | DataNode、NodeManager |
从节点2 | datanode2 | hadoop03 | DataNode、NodeManager |
2. 系统配置
- 安装操作系统:在三台虚拟机上安装 CentOS 或 Ubuntu 等 Linux 发行版。
- 关闭防火墙:在所有节点上关闭防火墙,以避免对通信造成阻碍。
systemctl stop firewalld systemctl disable firewalld
- 修改主机名:根据规划修改每台虚拟机的主机名。
hostnamectl set-hostname hadoop01
- 配置网络:确保所有节点在同一网络下,并且可以相互访问。
3. 配置免密登录
- 在主节点上生成 SSH 密钥对:
ssh-keygen -t rsa
- 将公钥复制到所有从节点的
~/.ssh/authorized_keys
文件中:ssh-copy-id hd@hadoop02 ssh-copy-id hd@hadoop03
二、安装 Java 和 Hadoop
1. 安装 Java
- 下载并安装 JDK,例如 JDK 1.8。
- 解压到指定目录,如
/export/servers/
。 - 配置环境变量,编辑
/etc/profile
文件,添加以下内容:export JAVA_HOME=/export/servers/jdk1.8.0_141 export PATH=$PATH:$JAVA_HOME/bin export CLASSPATH=.:$JAVA_HOME/lib
- 使环境变量生效:
source /etc/profile
2. 安装 Hadoop
- 下载 Hadoop 3.3.4,并将其解压到
/export/servers/
目录下。 - 配置环境变量,编辑
/etc/profile
文件,添加以下内容:export HADOOP_HOME=/export/servers/hadoop-3.3.4 export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
- 使环境变量生效:
source /etc/profile
三、Hadoop 集群配置
1. 配置 hadoop-env.sh
编辑 /export/servers/hadoop-3.3.4/etc/hadoop/hadoop-env.sh
文件,设置 JAVA_HOME
:
export JAVA_HOME=/export/servers/jdk1.8.0_141
2. 配置 core-site.xml
编辑 /export/servers/hadoop-3.3.4/etc/hadoop/core-site.xml
文件,添加以下内容:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://namenode:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/export/data/hadoop/tmp</value>
</property>
</configuration>
3. 配置 hdfs-site.xml
编辑 /export/servers/hadoop-3.3.4/etc/hadoop/hdfs-site.xml
文件,添加以下内容:
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/export/data/hadoop/hdfs/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/export/data/hadoop/hdfs/datanode</value>
</property>
</configuration>
4. 配置 yarn-site.xml
编辑 /export/servers/hadoop-3.3.4/etc/hadoop/yarn-site.xml
文件,添加以下内容:
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>namenode</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
5. 配置 workers
编辑 /export/servers/hadoop-3.3.4/etc/hadoop/workers
文件,添加从节点的主机名:
hadoop02
hadoop03
四、分发配置文件
将配置好的 Hadoop 文件夹分发到所有从节点:
scp -r /export/servers/hadoop-3.3.4 hd@hadoop02:/export/servers/
scp -r /export/servers/hadoop-3.3.4 hd@hadoop03:/export/servers/
五、集群启动
1. 格式化 HDFS
在主节点上运行以下命令:
hdfs namenode -format
2. 启动 HDFS 和 YARN
在主节点上运行以下命令:
start-dfs.sh
start-yarn.sh
3. 验证集群状态
- 在主节点上运行
jps
命令,检查 NameNode、DataNode、ResourceManager 和 NodeManager 等进程是否正常启动。 - 访问 HDFS Web UI:
http://<namenode IP>:9870
。 - 访问 YARN Web UI:
http://<namenode IP>:8088
。
六、常见问题及解决方法
1. DataNode 未启动
- 确保
dfs.datanode.data.dir
指定的目录存在且有权限。 - 确保从节点可以访问主节点的 9000 端口。
2. 网络问题
- 确保所有节点的网络配置正确,可以通过
ping
命令测试。
3. 权限问题
- 确保 Hadoop 安装目录和数据目录的权限正确,可以使用
chmod
命令调整。
七、集群管理
1. 添加新节点
如果需要添加新的 DataNode,只需将 Hadoop 安装包分发到新节点,并在主节点的 workers
文件中添加新节点的主机名,然后重启 HDFS。
2. 高可用性配置
为了提高集群的可靠性,可以配置 Hadoop 的高可用性(HA)。通过设置多个 NameNode 和 JournalNode,可以在一个 NameNode 失败时自动切换到另一个 NameNode。
3. 监控和日志管理
- 使用 Hadoop 自带的 Web UI 监控集群状态。
- 查看日志文件以排查问题,日志文件通常位于
/export/servers/hadoop-3.3.4/logs
目录下。
八、后续操作
1. 运行示例程序
运行 Hadoop 自带的示例程序测试集群功能:
hadoop jar /export/servers/hadoop-3.3.4/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.4.jar grep /input /output 'dfs[a-z.]+'
2. 数据存储和处理
- 将数据上传到 HDFS:
hdfs dfs -put /local/path /hdfs/path
- 使用 MapReduce 或其他框架(如 Spark)处理数据。