Hadoop集群搭建

本文详细介绍了如何在三台主机上部署Hadoop集群的过程,包括前期准备、具体配置步骤及注意事项,适合初学者参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、搭建前准备

1、为各个主机设置主机名

2、为各个主机配置SSH免密登录

3、为各个主机安装JDK

4、假设有三台主机:master(主节点)、slave1(从节点)、slave2(从节点)。

二、安装hadoop集群

1、注意

Hadoop如果是2.7.X,对应的jdk选择1.8或者1.7都可以, 推荐使用1.8,如果Hadoop是2.6.X,对应的jdk就选择1.7

2、将hadoop安装包拷到主节点主机的某个文件夹下并解压

[root@cmaster hadoop]# tar -zxvf hadoop-2.7.3.tar.gz

3、在Hadoop目录下,创建 tmp,logs,hdfs,hdfs/data(存 取的文件),hdfs/name(存放子节点名称) 文件夹

[root@cmaster hadoop-2.7.3]# mkdir tmp

[root@cmaster hadoop-2.7.3]# mkdir logs

[root@cmaster hadoop-2.7.3]# mkdir -p hdfs/data

[root@cmaster hadoop-2.7.3]# mkdir -p hdfs/name

4、修改hadoop的配置文件

(1)hadoop-env.sh

增加:
export JAVA_HOME=/opt/softWare/java/jdk1.8.0_141

(2)yarn-env.sh

增加:
export JAVA_HOME=/opt/softWare/java/jdk1.8.0_141

(3)slaves

#增加从节点
slave1
slave2

(4)core-site.xml

<configuration>
<property>
<name>fs.defaultFS</name>
<!--定义HadoopMaster的URI和端口-->
<value>hdfs://cmaster:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<!--hadoop中其他目录的临时存储目录-->
<value>file:/opt/softWare/hadoop/hadoop-2.7.3/tmp</value>
</property>
<property>
<name>io.file.buffer.size</name>
<!--用作序列化文件处理时读写buffer的大小-->
<value>131702</value>
</property>
<property>
      <name>hadoop.proxyuser.root.groups</name>
      <value>*</value>
  </property>
  <property>
      <name>hadoop.proxyuser.root.hosts</name>
      <value>*</value>
  </property>
</configuration>

(5)hdfs-site.xml

<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<!--namenode节点数据存储目录-->
<value>file:/opt/softWare/hadoop/hadoop-2.7.3/hdfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<!--datanode数据存储目录-->
<value>file:/opt/softWare/hadoop/hadoop-2.7.3/hdfs/data</value>
</property>
<property>
<!--指定DataNode存储block的副本数量,不大于DataNode的个数就行-->
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<!--指定master的http地址-->
<name>dfs.namenode.secondary.http-address</name>
<value>cmaster:50090</value>
</property>
<property>
<!--指定master的https地址-->
<name>dfs.namenode.secondary.https-address</name>
<value>cmaster:50091</value>
</property>
<property>
<!--必须设置为true,否则就不能通过web访问hdfs上的文件信息-->
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
 <property>
    <name>dfs.permissions</name>
    <value>false</value>
  </property>
</configuration>

(6)yarn-site.xml

<configuration>
<property>
<!--NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序-->
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property>
<!--ResourceManager 对ApplicationMaster暴露的访问地址。ApplicationMaster通过该地址向RM申请资源、释放资源等。-->
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<!--ResourceManager 对NodeManager暴露的地址.。NodeManager通过该地址向RM汇报心跳,领取任务等。-->
<name>yarn.resourcemanager.resourcetracker.address</name>
<value>master:8031</value>
</property>
<property>
<!--ResourceManager 对管理员暴露的访问地址。管理员通过该地址向RM发送管理命令等。-->
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
<property>
<!--用户可通过该地址在浏览器中查看集群各类信息。-->
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
<property>
<!--NodeManager总的可用物理内存。注意,该参数是不可修改的,一旦设置,整个运行过程中不 可动态修改。另外,该参数的默认值是8192MB,因此,这个值通过一 定要配置。不过,Apache已经正在尝试将该参数做成可动态修改的。-->
<name>yarn.nodemanager.resource.memory-mb</name>
<value>4096</value>
</property>
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>

(7)mapred-site.xml

<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>cmaster:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>cmaster:19888</value>
</property>
</configuration>

5、远程将master中/opt/softWare/下的hadoop和java拷贝到所有从节点

scp -r /opt/SoftWare/hadoop root@slave1:/opt/SoftWare
scp -r /opt/SoftWare/hadoop root@slave2:/opt/SoftWare
scp -r /opt/SoftWare/java root@slave1:/opt/SoftWare
scp -r /opt/SoftWare/java root@slave2:/opt/SoftWare

6、配置环境变量并远程将master中的配置文件拷贝到从节点

#hadoop
export HADOOP_HOME=/opt/softWare/hadoop/hadoop-2.7.3/bin
export PATH=$PATH:$HADOOP_HOME
scp -r /etc/profile root@slave1:/etc/ 
scp -r /etc/profile root@slave2:/etc/

在所有从节点执行source  /etc/profile

java -version 检查从节点是否安装成功jdk

7、同步系统时间

安装ntpdate工具 yum ‐y install ntp ntpd
设置与网络时间同步 ntpdate cn.pool.ntp.
系统时间写入硬件时间 hwclock ‐‐systohc

8、关闭防火墙

Centos7
关闭防火墙:systemctl stop firewalld.service
永久关闭防火墙:systemctl disable firewalld.service
查看防火墙状态:systemctl status firewalld.service

Centos6
关闭防火墙:service iptables stop
永久关闭防火墙:chkconfig iptables off
查看防火墙状态:service iptables status

9、格式化

在master主节点进入hadoop/bin,./hdfs namenode -format 进行格式化

10、启动、关闭集群

[root@cmaster ~]# cd /opt/softWare/hadoop/hadoop-2.7.3/sbin/
[root@cmaster sbin]# ./start-all.sh
[root@cmaster sbin]# ./stop-all.sh

11、网页版访问

http://ip:50070

小建议:

可以将解压配置好的hadoop-2.7.3安装包,移动到其他机器进行hadoop的快速安装。在进行快速安装的时候需要注意下面几点:
1、记得根据实际主机名、java环境变量等修改对应配置文件;
2、将tmp,logs,hdfs,hdfs/data,hdfs/name文件夹重新清空;
3、重新格式化;
<think>好的,用户想了解如何搭建Hadoop集群的详细步骤和配置。首先,我需要回忆之前学过的Hadoop集群搭建知识,确保步骤正确。记得Hadoop集群通常分为完全分布式模式,需要多台机器,比如hadoop102、hadoop103、hadoop104这样的命名。用户提供的引用里提到了设置这些节点,并测试SSH连接,还有上传安装包。可能这些是关键的步骤。 接下来,我应该按照逻辑分步骤讲解。首先准备环境,包括服务器、Java安装、主机名和hosts文件的配置,以及SSH免密登录的设置。这些都是搭建集群的基础。然后,安装Hadoop,解压安装包,配置环境变量。接下来是核心的配置文件修改,比如hadoop-env.sh、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml以及workers文件。每个配置文件的作用需要简要说明,比如core-site.xml设置NameNode地址,hdfs-site.xml配置副本数等。 配置完成后,需要同步到其他节点,这里可以用scp命令或者rsync。然后初始化HDFS,启动集群,最后验证是否成功,比如jps查看进程,或者访问Web界面。可能用户在实际操作中会遇到问题,比如SSH连接失败,端口占用,或者配置文件错误,这些常见问题应该提及解决方案。 另外,用户的问题可能涉及到具体的配置参数,比如副本数设置成多少合适,或者资源管理器的配置,这些需要根据集群规模给出建议。比如小型集群副本数可以设为2,但生产环境通常3。还有安全模式的问题,可能需要关闭防火墙或者配置SELinux。 需要确保所有的命令和路径都是正确的,比如JAVA_HOME的路径是否正确,Hadoop的安装目录是否一致。同时,用户可能需要知道如何验证集群是否正常工作,比如运行一个测试的MapReduce作业,或者检查日志文件。 最后,生成相关问题的时候,应该围绕用户可能进一步关心的问题,比如配置参数优化、添加节点、安全配置、性能调优等。这些能帮助用户更深入理解集群管理和维护。</think>### Hadoop集群搭建步骤详解 #### 一、环境准备(3节点示例) 1. **服务器规划** - hadoop102(NameNode + DataNode) - hadoop103(ResourceManager + DataNode) - hadoop104(SecondaryNameNode + DataNode) 2. **基础配置** - 所有节点安装JDK 8+并配置环境变量: ```bash export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 ``` - 配置主机名和/etc/hosts文件: ```bash 192.168.1.102 hadoop102 192.168.1.103 hadoop103 192.168.1.104 hadoop104 ``` - 配置SSH免密登录: ```bash ssh-keygen -t rsa ssh-copy-id hadoop102 ssh-copy-id hadoop103 ssh-copy-id hadoop104 ``` #### 二、Hadoop安装与配置 1. **解压安装包** ```bash tar -zxvf hadoop-3.3.6.tar.gz -C /opt/module/ ``` 2. **配置环境变量** ```bash export HADOOP_HOME=/opt/module/hadoop-3.3.6 export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin ``` 3. **修改核心配置文件** - `etc/hadoop/hadoop-env.sh`: ```bash export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 ``` - `etc/hadoop/core-site.xml`: ```xml <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://hadoop102:8020</value> </property> </configuration> ``` - `etc/hadoop/hdfs-site.xml`: ```xml <configuration> <property> <name>dfs.replication</name> <value>3</value> </property> </configuration> ``` #### 三、集群同步与启动 1. **分发配置到所有节点** ```bash scp -r /opt/module/hadoop-3.3.6 hadoop103:/opt/module/ scp -r /opt/module/hadoop-3.3.6 hadoop104:/opt/module/ ``` 2. **初始化HDFS** ```bash hdfs namenode -format ``` 3. **启动集群** ```bash start-dfs.sh # 启动HDFS start-yarn.sh # 启动YARN ``` #### 四、验证集群状态 1. **进程验证** ```bash jps # hadoop102应显示NameNode/DataNode # hadoop103应显示ResourceManager/NodeManager ``` 2. **Web界面验证** - HDFS状态:`http://hadoop102:9870` - YARN状态:`http://hadoop103:8088` #### 五、常见问题解决 1. **SSH连接失败** - 检查防火墙状态:`systemctl stop firewalld` - 验证公钥是否完整复制到`~/.ssh/authorized_keys` 2. **端口冲突** - 使用`netstat -tunlp | grep 8020`检查默认端口占用情况 3. **HDFS无法格式化** - 删除所有节点的`/tmp/hadoop-*`目录后重试[^1]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郝少

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值