【详解】基于3台服务器搭建Hadoop3.x集群
【摘要】 基于3台服务器搭建Hadoop3.x集群概述Hadoop是一个由Apache基金会开发的分布式计算框架,它能够处理大规模数据集。Hadoop的核心组件包括HDFS(Hadoop Distributed File System)和MapReduce。本文将介绍如何在三台服务器上搭建Hadoop 3.x集群。环境准备硬件要求3台服务器,建议配置:CPU: 4核及以上内存: 8GB及以上磁盘: 1...
基于3台服务器搭建Hadoop3.x集群
概述
Hadoop是一个由Apache基金会开发的分布式计算框架,它能够处理大规模数据集。Hadoop的核心组件包括HDFS(Hadoop Distributed File System)和MapReduce。本文将介绍如何在三台服务器上搭建Hadoop 3.x集群。
环境准备
硬件要求
- 3台服务器,建议配置:
- CPU: 4核及以上
- 内存: 8GB及以上
- 磁盘: 100GB及以上
软件要求
- 操作系统: CentOS 7.x
- Java: JDK 1.8+
- Hadoop: 3.x
服务器配置
服务器 |
IP地址 |
角色 |
Node1 |
192.168.1.1 |
NameNode, ResourceManager |
Node2 |
192.168.1.2 |
DataNode, NodeManager |
Node3 |
192.168.1.3 |
DataNode, NodeManager |
安装步骤
1. 配置主机名和hosts文件
在所有节点上执行以下命令,修改主机名:
sudo hostnamectl set-hostname node1
编辑 /etc/hosts
文件,添加以下内容:
192.168.1.1 node1
192.168.1.2 node2
192.168.1.3 node3
2. 安装Java
在所有节点上安装JDK:
sudo yum install -y java-1.8.0-openjdk
验证Java安装:
java -version
3. 下载并解压Hadoop
在Node1上下载Hadoop 3.x:
wget https://archive.apache.org/dist/hadoop/core/hadoop-3.3.1/hadoop-3.3.1.tar.gz
tar -xzvf hadoop-3.3.1.tar.gz -C /opt/
cd /opt/
sudo ln -s hadoop-3.3.1 hadoop
将Hadoop目录复制到其他节点:
scp -r /opt/hadoop node2:/opt/
scp -r /opt/hadoop node3:/opt/
4. 配置Hadoop环境变量
编辑 ~/.bashrc
文件,添加以下内容:
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export HADOOP_HOME=/opt/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
使环境变量生效:
source ~/.bashrc
5. 配置Hadoop
5.1 修改 core-site.xml
编辑 /opt/hadoop/etc/hadoop/core-site.xml
文件,添加以下内容:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://node1:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/app/hadoop/tmp</value>
</property>
</configuration>
5.2 修改 hdfs-site.xml
编辑 /opt/hadoop/etc/hadoop/hdfs-site.xml
文件,添加以下内容:
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.http-address</name>
<value>node1:9870</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>node1:9868</value>
</property>
</configuration>
5.3 修改 yarn-site.xml
编辑 /opt/hadoop/etc/hadoop/yarn-site.xml
文件,添加以下内容:
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>node1</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>4096</value>
</property>
</configuration>
5.4 修改 mapred-site.xml
编辑 /opt/hadoop/etc/hadoop/mapred-site.xml
文件,添加以下内容:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
5.5 配置 slaves
文件
编辑 /opt/hadoop/etc/hadoop/slaves
文件,添加以下内容:
node2
node3
6. 格式化HDFS
在Node1上执行以下命令格式化HDFS:
hdfs namenode -format
7. 启动Hadoop集群
在Node1上启动HDFS和YARN:
start-dfs.sh
start-yarn.sh
8. 验证集群状态
访问HDFS Web界面:
http://node1:9870
访问YARN Web界面:
http://node1:8088
9. 测试Hadoop
在Node1上创建一个测试目录,并上传文件:
hdfs dfs -mkdir /user
hdfs dfs -mkdir /user/test
hdfs dfs -put /path/to/local/file /user/test/
运行一个简单的MapReduce作业:
hadoop jar /opt/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar wordcount /user/test/input /user/test/output
查看输出结果:
hdfs dfs -cat /user/test/output/part-r-00000
通过以上步骤,我们成功地在三台服务器上搭建了一个Hadoop 3.x集群。这个集群可以用于处理大规模数据集,并支持分布式计算任务。希望本文对您有所帮助!
在实际应用中,搭建一个Hadoop 3.x集群通常涉及到配置多个节点(包括NameNode、DataNode、Secondary NameNode等)。以下是一个基于三台服务器的Hadoop 3.x集群的搭建步骤和示例配置文件。
前提条件
- 三台服务器:假设它们的IP地址分别为
192.168.1.101
(NameNode), 192.168.1.102
(DataNode 1), 和 192.168.1.103
(DataNode 2)。 - 操作系统:Linux(例如Ubuntu 20.04)。
- Java环境:确保每台服务器上都安装了Java 8或更高版本。
步骤
1. 安装Java
在所有服务器上安装Java:
sudo apt update
sudo apt install openjdk-8-jdk -y
2. 下载并解压Hadoop
在所有服务器上下载并解压Hadoop 3.x:
wget https://archive.apache.org/dist/hadoop/core/hadoop-3.3.1/hadoop-3.3.1.tar.gz
tar -xzvf hadoop-3.3.1.tar.gz
sudo mv hadoop-3.3.1 /usr/local/
3. 配置环境变量
编辑 /etc/profile
文件,添加Hadoop环境变量:
export HADOOP_HOME=/usr/local/hadoop-3.3.1
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
使配置生效:
source /etc/profile
4. 配置Hadoop
编辑Hadoop配置文件,主要需要修改的文件有 core-site.xml
, hdfs-site.xml
, yarn-site.xml
, 和 mapred-site.xml
。
core-site.xml
在所有节点上编辑 /usr/local/hadoop-3.3.1/etc/hadoop/core-site.xml
:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://192.168.1.101:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/app/hadoop/tmp</value>
</property>
</configuration>
hdfs-site.xml
在所有节点上编辑 /usr/local/hadoop-3.3.1/etc/hadoop/hdfs-site.xml
:
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.http-address</name>
<value>192.168.1.101:9870</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>192.168.1.101:9868</value>
</property>
</configuration>
yarn-site.xml
在所有节点上编辑 /usr/local/hadoop-3.3.1/etc/hadoop/yarn-site.xml
:
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>192.168.1.101</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
mapred-site.xml
在所有节点上编辑 /usr/local/hadoop-3.3.1/etc/hadoop/mapred-site.xml
:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
5. 配置无密码SSH登录
在NameNode上生成SSH密钥并分发到所有节点:
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
ssh-copy-id 192.168.1.102
ssh-copy-id 192.168.1.103
6. 格式化NameNode
在NameNode上执行格式化命令:
hadoop namenode -format
7. 启动Hadoop集群
在NameNode上启动HDFS和YARN:
start-dfs.sh
start-yarn.sh
8. 验证集群状态
在NameNode上验证HDFS和YARN的状态:
jps
你应该能看到以下进程:
- NameNode
- DataNode
- SecondaryNameNode
- ResourceManager
- NodeManager
9. 访问Web界面
你可以通过浏览器访问HDFS和YARN的Web界面:
- HDFS Web界面:
http://192.168.1.101:9870
- YARN Web界面:
http://192.168.1.101:8088
根据实际需求,你可能还需要进行更多的配置和优化。希望这些信息对你有所帮助!如果有任何问题,请随时提问。搭建一个基于3台服务器的Hadoop 3.x集群涉及到多个步骤,包括环境准备、配置文件修改、服务启动等。下面是一个详细的指南,帮助你完成这个过程。
环境准备
- 服务器准备:
- 至少3台服务器,每台服务器上安装了相同版本的Linux操作系统(如Ubuntu 18.04或CentOS 7)。
- 每台服务器上安装了Java 8或更高版本。
- 网络配置:
- 确保所有服务器之间可以互相通信。
- 配置主机名和IP地址映射,在每台服务器的
/etc/hosts
文件中添加如下内容:
192.168.1.101 node1
192.168.1.102 node2
192.168.1.103 node3
- SSH无密码登录:
- 在主节点(假设为node1)上生成SSH密钥对,并将公钥复制到所有节点:
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
ssh-copy-id node1
ssh-copy-id node2
ssh-copy-id node3
下载和解压Hadoop
- 下载Hadoop:
- 在主节点上下载Hadoop 3.x的压缩包:
wget https://archive.apache.org/dist/hadoop/core/hadoop-3.3.1/hadoop-3.3.1.tar.gz
- 解压Hadoop:
- 解压到指定目录,例如
/usr/local/
:
tar -xzvf hadoop-3.3.1.tar.gz -C /usr/local/
- 创建软链接:
- 创建一个软链接方便管理:
ln -s /usr/local/hadoop-3.3.1 /usr/local/hadoop
- 分发Hadoop:
- 将Hadoop分发到其他节点:
scp -r /usr/local/hadoop node2:/usr/local/
scp -r /usr/local/hadoop node3:/usr/local/
配置Hadoop
- 修改环境变量:
- 编辑
~/.bashrc
文件,添加Hadoop环境变量:
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
- 使环境变量生效:
source ~/.bashrc
- 配置
core-site.xml
:
- 编辑
$HADOOP_HOME/etc/hadoop/core-site.xml
文件:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://node1:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/app/hadoop/tmp</value>
</property>
</configuration>
- 配置
hdfs-site.xml
:
- 编辑
$HADOOP_HOME/etc/hadoop/hdfs-site.xml
文件:
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.http-address</name>
<value>node1:9870</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>node2:9868</value>
</property>
</configuration>
- 配置
yarn-site.xml
:
- 编辑
$HADOOP_HOME/etc/hadoop/yarn-site.xml
文件:
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>node1</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>4096</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>4096</value>
</property>
</configuration>
- 配置
mapred-site.xml
:
- 编辑
$HADOOP_HOME/etc/hadoop/mapred-site.xml
文件:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
- 配置
workers
文件:
- 编辑
$HADOOP_HOME/etc/hadoop/workers
文件,添加所有DataNode和NodeManager的主机名:
node1
node2
node3
格式化NameNode
- 格式化NameNode:
- 在主节点上执行以下命令:
hdfs namenode -format
启动Hadoop集群
- 启动HDFS:
- 在主节点上启动HDFS:
start-dfs.sh
- 启动YARN:
- 在主节点上启动YARN:
start-yarn.sh
- 验证集群状态:
- 访问NameNode的Web界面,确保所有DataNode都已连接:
http://node1:9870
- 访问ResourceManager的Web界面,确保所有NodeManager都已连接:
http://node1:8088
测试Hadoop集群
- 上传测试文件:
- 创建一个测试文件并上传到HDFS:
echo "This is a test file." > test.txt
hdfs dfs -put test.txt /user/yourusername/
- 运行MapReduce作业:
- 运行一个简单的WordCount作业:
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar wordcount /user/yourusername/test.txt /user/yourusername/output
- 查看输出结果:
- 查看WordCount作业的输出结果:
hdfs dfs -cat /user/yourusername/output/part-r-00000
通过以上步骤,你应该能够成功地在3台服务器上搭建一个Hadoop 3.x集群,并运行基本的Hadoop作业。如果有任何问题,请检查日志文件以获取更多信息。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)