hadoop最新版本完全分布式集群的搭建

本文详细介绍了如何在Linux环境下,使用hadoop 3.1.3搭建完全分布式集群。从准备工具、配置虚拟机、安装Java和Hadoop、修改主机名和配置文件,到克隆虚拟机、实现主机间免密登录,最后开启并测试集群运行,全程覆盖了搭建过程中的关键步骤和注意事项。
摘要由CSDN通过智能技术生成

搭建前的工具准备

vmware15,centos7,jdk1.8,hadoop-3.1.3,xshell6,xftp6。
我是用的hadoop最新版,在网上看了很多都是很久前的老版本教程着实踩了很多坑…

安装虚拟机

安装过程不必多说,默认安装过来就好了。记得安装一个桌面,别最小安装。前期设置普通用户的时候建议就设置用户名为hadoop吧,密码弄个自己好记的就行。

虚拟机的系统配置

登录虚拟机后,先连接好网络,查看自己的ip,输入ifconfig命令查看。建议用xshell连接好主机进行操作,xshell界面更舒服点。用xftp传输文件。

  1. 修改hostname:先输入hostname查看自己的主机名,一般都是localhost。切换到root,输入hostname master把这台机器的主机名修改为master,这只是临时修改,重启就会失效。我们需要永久修改,输入vim /etc/sysconfig/network按i编辑加入两行:
NETWORKING=yes #使用网络
HOSTNAME=master #设置主机名

保存退出,然后vim /etc/hosts在下面添加代码:

***.***.***.*** master
***.***.***.*** slave1
***.***.***.*** slave2
***.***.***.*** slave3

*号处填上对应的ip地址即可,slave的数量根据你自己的意愿,这里先配置好master,slave还没创建,等master配置好然后直接克隆为slave即可。
配置好上述文件,可以手动切换下用户,一般主机名就会更改成功。

  1. 关闭防火墙:输入systemctl status firewalld查看防火墙状态。一般都是开启的,需要关闭它。输入systemctl stop firewalld禁用防火墙。然后输入systemctl disable firewalld永久关闭防火墙。这时候可以再输入命令查看状态。然后就是关闭selinux,selinux是Linux一个子安全机制,学习环境可以将它禁用。输入vim /etc/sysconfig/selinux,修改一处即可:SELINUX=disabled

配置java、hadoop环境

在配置之前,先把虚拟机自带的jdk卸载。
查看自带的jdk

rpm -qa | grep gcj

把列出的文件逐一全部删除:

rpm -e <检索到的软件名>

卸载干净后,创建一个存放它们的目录,这里放在/opt/modules,因为opt是存放外部文件的目录,使用mkdir -p /opt/modules创建好该目录。用xftp把jdk和hadoop文件传输给虚拟机后,先配置好java环境,使用如下命令解压:

tar -zxvf jdk-8u231-linux-x64.tar.gz -C /opt/modules

输入vim /etc/profile在末尾添加

export JAVA_HOME="/opt/modules/jdk1.8.0_231"
export PATH=$JAVA_HOME/bin:$PATH

保存退出,输入source /etc/profile使当前配置立即生效,然后就可以输入java -version查看,若显示版本则配置成功

[hadoop@master ~]$ java -version
java version "1.8.0_231"
Java(TM) SE Runtime Environment (build 1.8.0_231-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.231-b11, mixed mode)
[hadoop@master ~]$ 

接下来配置hadoop,创建目录mkdir -p /opt/modules/app,解压至指定目录:

tar -zxvf hadoop-3.1.3.tar.gz -C /opt/modules/app

输入vim /etc/profile在末尾添加

export HADOOP_HOME="/opt/modules/app/hadoop-3.1.3"
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

保存退出,输入source /etc/profile使当前配置立即生效,然后就可以输入hadoop version查看,若显示版本则配置成功。
提示:在之后有需要用到这两个环境变量,输入echo ${JAVA_HOME}或者echo ${HADOOP_HOME}就可以查看相关路径了。

配置hadoop

大家可以先进入hadoop目录熟悉下结构。cd /opt/modules/app/hadoop-3.1.3,配置文件是在hadoop目录下的etc/hadoop/下。
配置之前可以先把hadoop文件的拥有者改为hadoop用户:sudo chown –R hadoop:hadoop /opt/modules/app/hadoop-3.1.3
然后切换为hadoop用户开始配置

  1. 配置 hadoop-env.sh文件的JAVA_HOME参数:
    找到该段代码,在下方添加export JAVA_HOME="/opt/modules/jdk1.8.0_231"
#The java implementation to use. By default, this environment
#variable is REQUIRED on ALL platforms except OS X!
#export JAVA_HOME=
  1. 配置 mapred-env.sh文件的JAVA_HOME参数:
    在末尾添加export JAVA_HOME="/opt/modules/jdk1.8.0_231"
  2. 配置 yarn-env.sh文件的JAVA_HOME参数:
    在末尾添加export JAVA_HOME="/opt/modules/jdk1.8.0_231"
  3. 配置core-site.xml
<configuration>
         <property>
                <name>fs.defaultFS</name>
                <value>hdfs://master:8020</value> #hdfs的api接口
         </property>
         <property>
                <name>hadoop.tmp.dir</name> #hadoop运行时产生临时数据的存储目录
                <value>/opt/modules/app/hadoop-3.1.3/data/tmp</value>
         </property>
</configuration>

创建目录/data/tmp:mkdir -p data/tmp

  1. 配置hdfs-site.xml
<configuration>
        <property>
                <name>dfs.namenode.secondary.http-address</name>
                <value>master:50090</value>
         </property>
        <property>
                <name>dfs.replication</name> #设置副本个数
                <value>3</value>
        </property>
        <property>
                <name>dfs.namenode.name.dir</name> #设置namende数据存放点
                <value>file:/opt/modules/app/hadoop-3.1.3/data/tmp/dfs/name</value>
        </property>
        <property>
                <name>dfs.datanode.data.dir</name> #设置datanode数据存放点
                <value>file:/opt/modules/app/hadoop-3.1.3/data</value>
        </property>
</configuration>
  1. 配置yarn-site.xml
<configuration>

<!-- Site specific YARN configuration properties -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>master</value>
    </property>
    <property>
        <name>yarn.log-aggregation-enable</name> #开启日志聚集
        <value>true</value>
    </property>
    <property>
        <name>yarn.log-aggregation.retain-seconds</name>
        <value>106800</value>
    </property>
  1. 配置mapred-site.xml
<configuration>
    <property>
        <name>mapreduce.framework.name</name> #设置mapreduce任务运行在yarn上
        <value>yarn</value>
    </property>
    <property>
        <name>mapred.job.tracker</name>
        <value>hdfs://master:8021</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.address</name> #开启历史服务
        <value>master</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.webapp.address</name> 
        <value>master:19888</value>
    </property>
</configuration>
  1. 配置workers:
    这里提醒一点,很多教程都说配置slave,在hadoop3之后把slave改成了workers,相应配置就行。
    这里是加入你搭建该集群需要的机器主机名,和前面hosts文件配置对应的。
master
slave1
slave2
slave3

到此,master的配置就是这样的了。

克隆

我是一台master三台slave所以克隆三次,操作都是一样的,选择完整克隆。克隆完成后,配置都是一样的,可以分别运行java -version和hadoop version检查。
配置:首先得到每台slave的ip地址,然后按照上面修改/etc/sysconfig/network和/etc/hosts。包括给master的hosts文件中补上slave的ip。

免密登录

所有主机都要操作:
首先在master上输入命令:ssh-keygen -t rsa一路回车,生成公钥秘钥后,输入

ssh-copy-id master
ssh-copy-id slave1
ssh-copy-id slave2
ssh-copy-id slave3

这是讲master的公钥转发给该集群上的所有主机,其他主机就可以免密登录master,同理在其他主机上执行相同的操作,使所有主机互通。

可以输入ssh 主机名 检查互通情况,能直接登录即可。

开启集群

  1. 格式NameNode:bin/hdfs namenode –format
  2. 启动HDFS:start-dfs.sh
  3. 启动YARN:start-yarn.sh
  4. 启动日志服务器:sbin/mr-jobhistory-daemon.sh start historyserver
  5. 查看HDFS WEB界面(端口说明:旧版本是50070,新版本是9870):http://主机ip:9870
  6. 查看YARN WEB界面 :http://主机ip:8088
  7. 查看历史服务器:http://主机ip:19888

测试运行

输入: bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar pi 3 100
在网页上查看结果

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值