搭建 Hadoop 集群详细教程

搭建 Hadoop 集群详细教程1 准备工作 1 1 环境 Centos7 JDK1 8 Hadoop2 10 0

1. 准备工作

1.1 环境

  • Centos 7
  • JDK 1.8
  • Hadoop 2.10.0

1.2 集群部署规划

hadoop1 hadoop2 hadoop3
HDFS NameNode, DataNode DataNode SecondaryNameNode, DataNode
Yarn NodeManager ResourceManager, NodeManager NodeManager

2. 配置主节点

2.1 创建虚拟机

  1. 选择新建虚拟机
  2. 选择典型类型
  3. 选择稍后安装操作系统
  4. 选择 Linux,Centos 7 64位
  5. 命名虚拟机 hadoop1
  6. 使用默认 20G 磁盘大小
  7. 不修改虚拟机硬件配置,完成创建虚拟机
  8. 选择创建好的虚拟机,点击编辑虚拟机
  9. 移除 USB 控制器、声卡、打印机
  10. 选择 CD/DVD,使用 ISO 映像文件,选择 ISO 文件位置
  11. 开启并安装虚拟机
    • 时区选 Asia Shanghai
    • 需创建 root 用户

2.2 配置

  1. 「编辑」->「虚拟网络编辑器」->「VMnet8」->「设置 NAT」,如下图

搭建 Hadoop 集群详细教程

  1. 虚拟机网络配置选择 NAT 模式
  2. 配置静态 ip

切换到 root 用户

su root 

编辑配置文件

vi /etc/sysconfig/network-scripts/ifcfg-ens32 

也有可能是 eth0、ens33 等,跟 Centos 版本有关

配置文件内容如下,其中需要修改 BOOTPROTO 字段值为 staticONBOOT 字段值为 yes,表示开机启动网络;IPADDR 字段为 ip 地址,需与 NAT 子网 ip 在同一网段;GATEWAY 字段为网关,需与 NAT 网关相同

TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=static DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=ens32 UUID=4d0b744b-8ebf-4c75-b35c-324d9f671ce6 DEVICE=ens32 ONBOOT=yes IPADDR=192.168.144.101 GATEWAY=192.168.144.2 DNS1=8.8.8.8 DNS2=8.8.4.4 

重启网络

systemctl restart network 

查看 ip

ip addr 
  1. 关闭防火墙
systemctl stop firewalld.service systemctl disable firewalld.service systemctl status firewalld 
  1. 修改 hostname
echo hadoop1 > /etc/hostname 

编辑文件

vi /etc/sysconfig/network 

写入以下内容

NETWORKING=yes # 使用网络 HOSTNAME=hadoop1 # 设置主机名 
  1. 配置 Host
vi /etc/hosts 

追加以下内容

192.168.144.101 hadoop1 192.168.144.102 hadoop2 192.168.144.103 hadoop3 
  1. 重启
reboot 
  1. 切换回普通用户
su shenke 

创建安装目录

sudo mkdir /opt/module 

修改安装目录所有者

sudo chown shenke:shenke /opt/module 

2.3 安装 JDK

  1. 将在 /tmp 目录下的 jdk-8u261-linux-x64.tar.gz 解压
tar -zxvf jdk-8u261-linux-x64.tar.gz 
  1. 移动到 /opt/module 目录下,并重命名为 jdk
mv jdk1.8.0_261 /opt/module/jdk 
  1. 配置环境变量
sudo vi /etc/profile 

追加以下内容

# JAVA_HOME export JAVA_HOME=/opt/module/jdk export PATH=$PATH:$JAVA_HOME/bin 

使环境变量生效

source /etc/profile 
  1. 验证是否安装成功
java -version 

2.4 安装 Hadoop

  1. 将在 /tmp 目录下的 hadoop-2.10.0.tar.gz 解压
tar -zxvf hadoop-2.10.0.tar.gz 
  1. 移动到 /opt/module 目录下,并重命名为 hadoop
mv hadoop-2.10.0 /opt/module/hadoop 
  1. 配置环境变量
sudo vi /etc/profile 

追加以下内容

# HADOOP_HOME export HADOOP_HOME=/opt/module/hadoop export PATH=$PATH:$HADOOP_HOME/bin export PATH=$PATH:$HADOOP_HOME/sbin 

使环境变量生效

source /etc/profile 
  1. 验证是否安装成功
hadoop 

2.5 安装其他包

sudo yum install -y net-tools rsync 

3. 配置从节点

3.1 克隆虚拟机

先将 hadoop1 关机,「右键」->「管理」->「克隆」

  1. 选择创建完整克隆
  2. 修改虚拟机名称为 hadoop2

3.2 配置网络

如 2.2 中第 3 步,修改 /etc/sysconfig/network-scripts/ifcfg-ens32 文件中的 IPADDR192.168.144.102,并删除 UUID

如 2.2 中第 5 步,修改 hostname 为 hadoop2

重复以上步骤,克隆一个 hadoop3 节点

3.3 测试

尝试能否 ping 通其他节点

ping hadoop2 

4. 配置集群

4.1 设置 SSH 无密码登录

  1. 生成公钥
ssh-keygen -t rsa 
  1. 分发公钥
ssh-copy-id hadoop1 ssh-copy-id hadoop2 ssh-copy-id hadoop3 

在三个节点上重复以上命令

4.2 编写集群分发脚本 xsync

  1. 在 hadoop1 的 /home/user/bin 目录下创建 xsync 文件
mkdir bin && touch bin/xsync 

如果是 root 用户则可将脚本放在 /usr/local/bin 目录下

编辑脚本

vi bin/xsync 

内容参考 xsync.sh,主要是通过以下命令实现文件同步,其中,-r 表示递归处理子目录,-v 表示以详细模式输出,-l 表示保留软链接,--delete 表示同步删除,--ignore-errors 表示即使出现 IO 错误也进行删除

rsync -rvl --delete --ignore-errors $directory/$file $user@$host:$directory 
  1. 赋予执行权限
chmod 777 bin/xsync 
  1. 使用
xsync $file # 例如 xsync /home/shenke/bin 

搭建 Hadoop 集群详细教程

5. 配置集群

配置文件均在 hadoop 安装目录下的 etc/hadoop 目录下

5.1 核心配置文件

  1. 编辑 core-site.xml
vi core-site.xml 

configuration 标签中写入以下内容

<configuration>  
    <property> <name>fs.defaultFS 
     name> <value>hdfs://hadoop1:9000 
      value>  
       property>  
       <property> <name>hadoop.tmp.dir 
        name> <value>/opt/module/hadoop/data/tmp 
         value>  
          property>  
           configuration> 
  1. 创建存储目录
mkdir -p /opt/module/hadoop/data/tmp 

5.2 HDFS 配置文件

  1. 配置 hadoop-env.sh
vi hadoop-env.sh 

在文件末尾追加以下内容

export JAVA_HOME=/opt/module/jdk 
  1. 配置 hdfs-site.xml
vi hdfs-site.xml 

configuration 标签中写入以下内容

<configuration> <property> <name>dfs.replication 
     name> <value>3 
      value>  
       property>  
       <property> <name>dfs.namenode.secondary.http-address 
        name> <value>hadoop3:50090 
         value>  
          property>  
           configuration> 

5.3 Yarn 配置文件

  1. 配置 yarn-env.sh
vi yarn-env.sh 

在文件末尾追加以下内容

export JAVA_HOME=/opt/module/jdk 
  1. 配置 yarn-site.xml
vi yarn-site.xml 

configuration 标签中写入以下内容

<configuration>  
    <property> <name>yarn.nodemanager.aux-services 
     name> <value>mapreduce_shuffle 
      value>  
       property>  
       <property> <name>yarn.resourcemanager.hostname 
        name> <value>hadoop2 
         value>  
          property>  
           configuration> 

5.4 MapReduce 配置文件

  1. 配置 mapred-env.sh
vi mapred-env.sh 

在文件末尾追加以下内容

export JAVA_HOME=/opt/module/jdk 
  1. 配置 mapred-site.xml
cp mapred-site.xml.template mapred-site.xml && vi mapred-site.xml 

configuration 标签中写入以下内容

<configuration>  
    <property> <name>mapreduce.framework.name 
     name> <value>yarn 
      value>  
       property>  
        configuration> 

5.5 配置 slaves

编辑 slaves

vi slaves 

写入以下内容

hadoop1 hadoop2 hadoop3 

5.6 同步配置文件

xsync /opt/module/hadoop 

6. 启动集群

在 hadoop 安装目录下

  1. 格式化
bin/hdfs namenode -format 

如果需要重新格式化 NameNode,需要先将 data/tmplogs下的文件全部删除

  1. 启动 HDFS
sbin/start-dfs.sh 
  1. 启动 Yarn
sbin/start-yarn.sh 

注意:需在 ResouceManager 所在节点启动 Yarn,本例中在 hadoop2 中启动

  1. 查看进程
jps 
  1. 查看 web 端
  • NameNode: hadoop1:50070
  • SecondaryNameNode: hadoop3:50090
  1. 停止 HDFS
sbin/stop-dfs.sh 
  1. 停止 Yarn
sbin/stop-yarn.sh 

7. 编写群起脚本

  1. 启动和关闭脚本

同样是在 /home/shenke/bin 目录下,新建并编辑脚本

vi ~/bin/hdp 

内容参考 hadoop.sh

  1. 查看进程脚本

新建并编辑脚本

vi ~/bin/xcall 

内容参考 xcall.sh

搭建 Hadoop 集群详细教程

8. HDFS 测试

  1. 上传文件

上传一个小文件到根目录

bin/hdfs dfs -put /home/shenke/bin/xsync / 

上传一个大文件到根目录

bin/hdfs dfs -put /tmp/hadoop-2.10.0.tar.gz / 

搭建 Hadoop 集群详细教程

  1. 查看文件存储路径

搭建 Hadoop 集群详细教程

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/223750.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午1:29
下一篇 2026年3月17日 下午1:30


相关推荐

  • 由于找不到MSVCR110.dll,无法继续执行代码…解决办法

    由于找不到MSVCR110.dll,无法继续执行代码…解决办法本人的电脑是 64 位系统 想安装 wamp3 0 6 但是安装后打开软件时会提示 上面这张图是我在网上找的 我当时的提示是由于找不到 MSVCR110 dll 为解决这个问题 百度了好多尝试了好多 大多数都是说去微软官网下载之类的就能解决 当然可能是下载其他版本的 比如 2015 版本的 但是照做了我还是无法解决 经过各种尝试后发现 解决办法 安装 VC 运行库合集

    2026年3月26日
    2
  • UML图绘制—–时序图的画法

    UML图绘制—–时序图的画法UML图绘制—–时序图的画法1.什么是时序图时序图用于描述对象之间的传递消息的时间顺序,即用例中的行为顺序主要用来更直观的表现各个对象交互的时间顺序,将体现的重点放在以时间为参照,各个对象发送、接收消息,处理消息,返回消息的时间流程顺序,也称为时序图。又名序列图、循序图、顺序图,是一种UML交互图2.时序图的作用:确认和丰富一个使用情境的逻辑。3.时序图…

    2022年6月15日
    46
  • webservice传参数_java有参构造方法

    webservice传参数_java有参构造方法一、获取接口信息:  使用工具soapUI获取接口调用信息:  双击request:复制接口调用格式:webService接口通常传递xml参数因此需要组装数据: ①若传递单个参数则:&lt;soapenv:Envelopexmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"xmlns:cen…

    2022年10月16日
    7
  • python关键字定义_python 关键字与含义

    python关键字定义_python 关键字与含义False 布尔类型的值 表示假 与 True 相反 None None 比较特殊 表示什么也没有 它有自己的数据类型 NoneType True 布尔类型的值 表示真 与 False 相反 and 用于表达式运算 逻辑与操作 as 用于类型转换 assert 断言 用于判断变量或者条件表达式的值是否为真 break 中断循环语句的

    2026年3月18日
    2
  • linux基础入门图文教程(2020最新)

    linux基础入门图文教程(2020最新)学习目标 1 了解 VMware 备份的两种方式 2 能说出快照与克隆的区别 3 了解 Linux 系统文件 4 掌握 Linux 基础命令 5 知道 vmwaretools 的作用一 备份操作系统在 VMware 中备份的方式有 2 种 快照或克隆 1 快照快照 又称还原点 就是保存在拍快照时候的系统的状态 包含了所有的内容 在后期的时候随时可以恢复 注意 侧重在于短期备份 需要频繁备份的时候都可以使用快照 做快照的时候虚拟机中操作系统一般处于开启状态快照 使用 VMware 实现快照 具体

    2026年3月26日
    2
  • phpstorm激活码[免费获取]「建议收藏」

    (phpstorm激活码)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年3月22日
    162

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号