• 从 Linux 安装到 Hadoop 环境搭建全过程


    Hadoop 环境搭建

    从 Linux 的最小化安装到 Hadoop 环境的搭建,尽可能详尽介绍每个步骤。

    环境准备

    首先需要将如下四个必要的文件下载到计算机(已经附上了下载地址,点击即可下载)。

    1. Vmware Workstation 16.x官方的下载地址
    2. CentOS-7-x86_64-Minimal-2009阿里云镜像站下载地址
    3. openjdk-8u41-b04-linux-x64-14_jan_2020开源下载地址
    4. hadoop-2.7.1官方下载地址

    安装 CentOS 7

    在安装了 Vmware Workstation 16 后,接下来就可开始安装由阿里云镜像站提供的CentOS7。步骤如下:

    1. 文件 → 新建虚拟机,进入到【新建虚拟机向导】界面,选择自定义配置,如下所示:

    新建虚拟机向导

    1. 点击下一步后,进入到【选择虚拟机硬件兼容性】界面。这里可以根据自己的情况选择是否需要向下兼容,我这里选择默认的 16.x,如下所示:

    选择虚拟机硬件兼容性

    1. 点击下一步后,进入到【安装客户机操作系统】界面。我们选择稍后安装操作系统,如下所示:

    安装客户机操作系统

    1. 点击下一步后,进入到【选择客户机操作系统】界面。我们选择 Linux,并在版本的下拉框中选择 CentOS 7 64位,如下所示:

    选择客户机操作系统

    1. 点击下一步后,进入到【命名虚拟机】界面。我这里考虑到后面要搭建两个子节点,故将其命名为 CentOS7x64-Master,如下所示:

    命名虚拟机

    1. 点击下一步后,进入到【处理器配置】界面。这里需要根据硬件的条件来为虚拟机配置合适的处理器内核总数。

    处理器配置

    1. 点击下一步后,进入到【虚拟机内存配置】界面。这里需要根据硬件的条件来为虚拟机配置合适的内存。

    虚拟机内存配置

    1. 点击下一步后,进入到【网络类型配置】界面。这里选择默认的网络地址转换即可。需要注意的是,后续需要通过远程连接工具来登录这台主机,选择这个网络连接,需要真实机的 VMware Network Adapter VMnet8 网卡处于启用状态且要开启 VMware 相应的服务。

    网络类型配置

    1. 点击下一步后,进入到【选择I/O控制器类型】界面,采用推荐配置。

    选择I/O控制器类型

    1. 点击下一步后,进入到【选择磁盘类型】界面,采用推荐配置。

    选择磁盘类型

    1. 点击下一步后,进入到【选择磁盘】界面,选择创建新虚拟磁盘。

    选择磁盘

    1. 点击下一步后,进入到【指定磁盘容量】界面。这里需要根据硬件的条件来为虚拟机配置合适的磁盘总大小,我们采用建议的 20GB 已经够用。

    指定磁盘容量

    1. 点击下一步后,进入到【指定磁盘文件】界面。默认情况,这些文件都会在【命名虚拟机】界面中指定的位置中,采用默认的即可。

    指定磁盘文件

    1. 点击下一步后,配置已经全部完成,再次点击完成即可结束向导。

    已经准备好创建虚拟机

    1. 点击完成按钮后,会出现刚刚创建的虚拟机的选项卡,点击编辑虚拟机设置。

    开启此虚拟机

    1. 将光盘的连接选择【使用ISO映像文件】,通过【浏览】按钮找到从阿里云镜像中站中下载的 CentOS-7-x86_64-Minimal-2009.iso 文件。然后点击确定按钮关闭虚拟机设置窗口。

    使用ISO映像文件

    1. 点击开启此虚拟机,快捷键 Ctrl + B。

    新建的虚拟机选项卡

    1. 开机之后,通过方向键 使得Install CentOS 7 菜单高亮选中,并按下回车键确认。

    Install CentOS 7

    1. 安装 CentOS 出现的第一个界面是欢迎页面,我们需要在整个安装期间选择一个语言。默认的语言是美式英文。

    安装期间选择一个语言
    在下方的输入框中输出 Chinese,后,就会过滤出中文语言。

    过滤中文语言

    选择【中文】->【简体中文】后,点击【继续】按钮

    选择中文语言

    1. 在安装信息摘要页面中,需要需要配置的是系统的安装位置和网络主机名。点击出现警告图标的【安装位置】

    安装位置

    1. 根据需要来配置磁盘或者分区。我这里不做任何的修改,直接点击【完成】按钮。

    安装目标位置

    1. 回到安装信息摘要界面,点击网络和主机名。在安装之初,就设置好这些,避免开机之后还要设置网络信息。

    配置网络和主机名

    1. 接下来进度网络配置,我们需要在这里配置网卡信息和主机名信息,首先,点击以太网右侧的开关,以启动网卡。

    点击以太网右侧的开关,以启动网卡

    这个时候会自动出现 IP 的相关信息,可以看到它的IP地址是192.168.12.140,不难发现它是 12 网段的。如下所示:

    自动获取 IP 信息

    如果到了这里,并没有出现 ip 信息,检查真实机中和 VMware 相关的服务是否全部启动,以及 VMware 的网卡是否被启用。

    这里的IP地址是通过DHCP自动获取的,不能保证每次开机它的IP是固定的,为了方便后面做集群的配置,这里可以对该网卡手动设置IP 。在配置网卡信息之前,记录下此时的网卡的子网掩码、默认路由和DNS信息。点击右下方的配置按钮,开始编辑网卡信息,在弹出的对话框中选择 【IPv4设置】选项卡。

    配置IPv4设置

    将方法设置为手动,并添加一个静态的IP地址,子网掩码、网关(默认路由)和DNS服务器的信息配置成和之前的一样即可。如下所示:

    在配置 IP 地址的时候,需要注意的是,需要考虑到网段要和真实机保持一致,因为前面创建虚拟机时,采用了网络地址转换的连接方式,默认情况下,真实机使用的网卡是 VMware Network Adapter VMnet8 网卡,通过命令行使用 ipconfig 查看到它的IP是 192.168.12.1,这说明它是 12 网段。当然,在配置之前,我们也发现了它是12网段的。

    设置固定的 IP 地址

    点击保存后,可以看到此时的IP地址已经修改为我们自定义的IP了,如下:

    固定IP

    接下来修改最底下的主机名处,将输入框中的主机名修改为方便好记的主机名,以便于后面通过 ssh 进行登录。因为我使用的 CentOS 7。而且是为了搭建 Hadoop 环境,结合我自定义的IP地址,我将其命名为 h150.c7。然后点击应用,就可以发现右下角的 localhost就会发生变化。最后,点击左上角的完成按钮,以完成配置。

    修改主机名

    1. 接下来回到了安装信息摘要界面,点击右下角的开始安装按钮。

    完成配置

    1. 在安装过程中,我们可以设置一下 root 账号的密码。点击用户设置下方的 【ROOT密码】处,进入到为root账号配置密码的界面。

    设置 root 密码

    因为密码过于简单,所以需要点击被要求点击两下完成按钮,以完成密码的设置。

    确认密码

    1. 回到安装界面,如果出现如下提示,点击【完成配置】按钮即可,出现这个界面可能是因为配置密码的时候,花的时间较长导致。

    完成配置

    1. 安装 CentOS的最后一个界面如下,点击重启以完成系统的安装。

    安装完成描述

    1. 重启之后,可以使用 Xshell 或者 SecureCRT 等远程工具进行登录了。

    远程登录

    配置 yum 源

    刚安装的 CentOS 要做的第一件事就是将 yum 源配置为阿里云的镜像,以方便后面安装软件的时候提升响应速度。通过 curl 下载阿里云的 yum 源配置文件:

    [root@h150 ~]# curl https://mirrors.aliyun.com/repo/Centos-7.repo >> CentOS-Base-Aliyun.repo
      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                     Dload  Upload   Total   Spent    Left  Speed
    100  2523  100  2523    0     0  15413      0 --:--:-- --:--:-- --:--:-- 15478
    [root@h150 ~]# 
    [root@h150 ~]# mv CentOS-Base-Aliyun.repo /etc/yum.repos.d/
    [root@h150 ~]# yum clean all
    已加载插件:fastestmirror
    Repository base is listed more than once in the configuration
    Repository updates is listed more than once in the configuration
    Repository extras is listed more than once in the configuration
    Repository centosplus is listed more than once in the configuration
    正在清理软件源: base extras updates
    [root@h150 ~]# 
    [root@h150 ~]# yum makecache
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    在敲 yum makecache的时候,发现 tab 键不能自动补齐命令,这是因为缺少 bash-completion工具,正好通过 yum 来安装它。

    yum -y install bash-completion
    
    • 1

    需要注意的是,这个工具安装好之后,不会立即生效,需要注销后重新登陆方可使用。

    安装 JDK

    虽然通过 yum 来安装 jdk 非常方便,但我依然选择手动安装。

    1. 下载安装包,并解压到指定位置。
    [root@h150 ~]# curl -# https://download.java.net/openjdk/jdk8u41/ri/openjdk-8u41-b04-linux-x64-14_jan_2020.tar.gz >> java-se-8u41-ri.tar.gz
    ######################################################################## 100.0%
    [root@h150 ~]# tar -zxf java-se-8u41-ri.tar.gz -C /opt/
    [root@h150 ~]# vi /etc/profile
    
    • 1
    • 2
    • 3
    • 4
    1. /etc/profile 文件的最后配置 Java的环境变量,追加如下内容:
    export JAVA_HOME=/opt/java-se-8u41-ri/
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    export PATH=$PATH:$JAVA_HOME/bin
    
    
    • 1
    • 2
    • 3
    • 4
    1. 保存退出后使用 source 命令使 /etc/profile 文件生效,自此,jdk 安装完成。
    [root@h150 ~]# source /etc/profile
    [root@h150 ~]# java -version
    openjdk version "1.8.0_41"
    OpenJDK Runtime Environment (build 1.8.0_41-b04)
    OpenJDK 64-Bit Server VM (build 25.40-b25, mixed mode)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    安装 Hadoop (伪分布模式)

    【单机模 式】:

    不能使用 HDFS,只能使用 MapReduce,所以单机模式最主要的目的是在 本机调试 mapreduce 代码

    【伪分布式模 式】:

    用多个线程模拟多台真实机器,即用一台主机模拟真实的分布式环境。

    【完全分布式模式】:

    用多台机器(或启动多个虚拟机)来完成部署集群。

    1. 下载安装包,并解压到指定位置。
    [root@h150 ~]# curl -# https://archive.apache.org/dist/hadoop/common/hadoop-2.7.1/hadoop-2.7.1.tar.gz >> hadoop-2.7.1.tar.gz
    ######################################################################## 100.0%
    [root@h150 ~]# tar -zxf hadoop-2.7.1.tar.gz -C /opt/
    
    • 1
    • 2
    • 3
    1. 通过 vi 修改 Hadoop 下 etc/hadoop/hadoop-env.sh 文件,找到 JAVA_HOMEHADOOP_CONF_DIR。此处的 JAVA_HOME 的值需要和 /etc/profile 中配置的 JAVA_HOME 的值保持一致。修改后结果如下:
    # The only required environment variable is JAVA_HOME.  All others are
    # optional.  When running a distributed configuration it is best to
    # set JAVA_HOME in this file, so that it is correctly defined on
    # remote nodes.
    
    # The java implementation to use.
    export JAVA_HOME=/opt/java-se-8u41-ri/
    
    # The jsvc implementation to use. Jsvc is required to run secure datanodes
    # that bind to privileged ports to provide authentication of data transfer
    # protocol.  Jsvc is not required if SASL is configured for authentication of
    # data transfer protocol using non-privileged ports.
    #export JSVC_HOME=${JSVC_HOME}
    
    export HADOOP_CONF_DIR=/opt/hadoop-2.7.1/etc/hadoop
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    ​ 配置完成之后,使用 source 命令使其生效:

    [root@h150 ~]# source /opt/hadoop-2.7.1/etc/hadoop/hadoop-env.sh
    [root@h150 ~]#
    
    • 1
    • 2
    1. 通过 vi 修改 Hadoop 下 etc/hadoop/core-site.xml 文件,内容如下:
    <configuration>
        <!-- 指定 NameNode 的主机名和端口号 -->
    	<property>
    		<name>fs.defaultFS</name>
    		<value>hdfs://h150.c7:9000</value>
    	</property>
        <!-- 
    	指定 Hadoop 的临时目录
    	在默认情况下,该目录会存储 NameNode,DataNode 或其他模块的数据
    	-->
    	<property>
    		<name>hadoop.tmp.dir</name>
    		<value>/opt/hadoop-2.7.1/tmp</value>
    	</property>
    	<!--  缓冲区大小,实际工作中根据服务器性能动态调整 -->
    	<property>
    		<name>io.file.buffer.size</name>
    		<value>4096</value>
    	</property>
    	<!--
    	开启hdfs的垃圾桶机制,删除掉的数据可以从垃圾桶中回收,单位分钟
    	-->
    	<!--
    	<property>
    		<name>fs.trash.interval</name>
    		<value>10080</value>
    	</property>
        -->
    </configuration>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    1. 通过 vi 修改 Hadoop 下 etc/hadoop/hdfs-site.xml 文件,内容如下:
    <configuration>
        <!-- 
    	指定 hdfs 保存数据副本的数量(包括自己),默认值是 3。
        如果是伪分布模式,此值应该是 1 
        -->
        <property>
            <name>dfs.replication</name>
            <value>1</value>
        </property>
    	<!-- 设置HDFS的文件权限-->
    	<property>
    		<name>dfs.permissions</name>
    		<value>true</value>
    	</property>
    	<!-- 设置一个文件切片的大小:128M -->
        <!--
    	<property>
    		<name>dfs.blocksize</name>
    		<value>134217728</value>
    	</property>
    	-->
    </configuration>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    1. 通过 vi 修改 Hadoop 下 etc/hadoop/mapred-site.xml 文件。但是在这个文件并不存在,可以通过 cp 将其拷贝一份进行修改:
    [root@h150 ~]# cp /opt/hadoop-2.7.1/etc/hadoop/mapred-site.xml.template /opt/hadoop-2.7.1/etc/hadoop/mapred-site.xml
    [root@h150 ~]# vi /opt/hadoop-2.7.1/etc/hadoop/mapred-site.xml
    
    • 1
    • 2

    ​ 修改后的 mapred-site.xml 文件的内容如下:

    <configuration>
        <!-- 指定 MapReduce 在 Yarn 上运行 -->
    	<property>
    		<name>mapreduce.framework.name</name>
    		<value>yarn</value>
    	</property>
    </configuration>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    1. 通过 vi 修改 Hadoop 下 etc/hadoop/yarn-site.xml 文件。
    <configuration>
        <!-- 指定 Yarn 的 ResourceManager 的主机名 -->
    	<property>
    		<name>yarn.resourcemanager.hostname</name>
    		<value>h150.c7</value>
    	</property>
        <!-- 指定 Yarn 的 NodeManager 的获取数据的方式 -->
    	<property>
    		<name>yarn.nodemanager.aux-services</name>
    		<value>mapreduce_shuffle</value>
    	</property>
    </configuration>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    1. 通过 vi 修改 Hadoop 下 etc/hadoop/slaves 文件。直接在该文件中输入集群中所有节点的主机名,每个主机名独占一行,因为采用的是伪 分布式模式,所以,只需要在当前文件中写入当前主机的名称即可。
    vi /opt/hadoop-2.7.1/etc/hadoop/slaves
    
    • 1

    ​ 修改后的 slaves 文件的内容如下:

    h150.c7
    
    • 1
    1. /etc/profile 文件的最后配置 Hadoop 的环境变量,追加如下内容:
    export HADOOP_HOME=/opt/hadoop-2.7.1
    export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    
    • 1
    • 2
    1. 保存退出后使用 source 命令使 /etc/profile 文件生效。
    source /etc/profile
    
    • 1
    1. 通过 vi 修改 Hadoop 下 /etc/hosts 文件,追加当前主机的IP地址映射主机名。如下所示:
    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    
    192.168.12.150 h150.c7
    
    • 1
    • 2
    • 3
    • 4
    1. 执行如下命令对 NameNode 进行格式化。
    hdfs namenode -format
    
    • 1

    出现如下图所示的 successfully formatted. 的提示文字,则说明格式化成功!

    格式化 NameNode

    1. 执行 start-dfs.shstart-all.sh 脚本来启动 Hadoop 的组件。启动完成后,使用 jps 命令来判断是否启动成功。
    [root@h150 ~]# start-all.sh 
    This script is Deprecated. Instead use start-dfs.sh and start-yarn.sh
    Starting namenodes on [h150.c7]
    root@h150.c7's password: 
    h150.c7: starting namenode, logging to /opt/hadoop-2.7.1/logs/hadoop-root-namenode-h150.c7.out
    root@h150.c7's password: 
    h150.c7: starting datanode, logging to /opt/hadoop-2.7.1/logs/hadoop-root-datanode-h150.c7.out
    Starting secondary namenodes [0.0.0.0]
    root@0.0.0.0's password: 
    0.0.0.0: starting secondarynamenode, logging to /opt/hadoop-2.7.1/logs/hadoop-root-secondarynamenode-h150.c7.out
    starting yarn daemons
    starting resourcemanager, logging to /opt/hadoop-2.7.1/logs/yarn-root-resourcemanager-h150.c7.out
    root@h150.c7's password: 
    h150.c7: starting nodemanager, logging to /opt/hadoop-2.7.1/logs/yarn-root-nodemanager-h150.c7.out
    [root@h150 ~]# jps
    18208 Jps
    17684 SecondaryNameNode
    17829 ResourceManager
    17526 DataNode
    17404 NameNode
    18109 NodeManager
    [root@h150 ~]# 
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    从结果看,说明启动成功!

    免密登录

    在每次使用 start-dfs.sh 的时候,会被要求输入3次密码。原因是 Hadoop 启动过 程中会先后启动 NameNode、SecondaryNameNode 和 DataNode 组件,它们会通过 ssh 来 登录到配置文件中指定的主机,而登录到目标主机就需要验证登录身份,所以需要输入三次 密码。

    为了方便 Hadoop 启动的过程中能够免密登录,我们可以使用 ssh-keygenssh-copy-id 两个命令来操作,具体如下:

    [root@h150 ~]# ssh-keygen 
    Generating public/private rsa key pair.
    Enter file in which to save the key (/root/.ssh/id_rsa): 
    Enter passphrase (empty for no passphrase): 
    Enter same passphrase again: 
    Your identification has been saved in /root/.ssh/id_rsa.
    Your public key has been saved in /root/.ssh/id_rsa.pub.
    The key fingerprint is:
    SHA256:/SjKbSI59e5S7NmM/jmk9PJd8C1a9EebX3hmpyeRTCM root@h150.c7
    The key's randomart image is:
    +---[RSA 2048]----+
    |                 |
    |                 |
    |                 |
    |         .  E o  |
    |       .S . .+.o.|
    |      . + .o ++=o|
    |     o =.O. . *+X|
    |    +.ooO.=o +.**|
    |     ooB=++.o .o.|
    +----[SHA256]-----+
    [root@h150 ~]# 
    [root@h150 ~]# ssh-copy-id root@h150.c7
    /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
    /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
    /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
    root@h150.c7's password: 
    
    Number of key(s) added: 1
    
    Now try logging into the machine, with:   "ssh 'root@h150.c7'"
    and check to make sure that only the key(s) you wanted were added.
    
    [root@h150 ~]# 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34

    完成之后,再次启动或者停止 Hadoop 组件的时候,就不会再要求输入密码了。

    开放防火墙的端口

    Hadoop 启动后,其实是可以通过真实机浏览器来访问一个 web 界面的,其端口是 50070,例如访问:http://192.168.12.150:50070/,但是,因为防火墙的缘故,这里是不允许被外部访问的。可以使用 firewall-cmd 来设置需要开放的端口,具体如下所示:

    [root@h150 ~]# firewall-cmd --add-port=50010/tcp --permanent
    success
    [root@h150 ~]# firewall-cmd --add-port=50020/tcp --permanent
    success
    [root@h150 ~]# firewall-cmd --add-port=50070/tcp --permanent
    success
    [root@h150 ~]# firewall-cmd --add-port=50075/tcp --permanent
    success
    [root@h150 ~]# firewall-cmd --add-port=50090/tcp --permanent
    success
    [root@h150 ~]# firewall-cmd --add-port=8030/tcp --permanent
    success
    [root@h150 ~]# firewall-cmd --add-port=8031/tcp --permanent
    success
    [root@h150 ~]# firewall-cmd --add-port=8082/tcp --permanent
    success
    [root@h150 ~]# firewall-cmd --add-port=8088/tcp --permanent
    success
    [root@h150 ~]# firewall-cmd --add-port=9000/tcp --permanent
    success
    [root@h150 ~]# firewall-cmd --reload
    success
    [root@h150 ~]# 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    安装 Hadoop (完全分布模式)

    在伪分布式模式的基础上,搭建 Hadoop 进行完全分布式环境。这里采用三个子节点(包括自己)。

    1. 首先将虚拟机关机后,对齐进行快照:

    关机后拍摄快照

    1. 依次点击菜单栏的【虚拟机】→【管理】→【克隆】,打开克隆虚拟机向导。

    打开克隆虚拟机向导

    1. 点击下一步后,进入到【克隆源】选择界面,这里选哪个都行。

    克隆源

    1. 点击下一步后,进入到【克隆类型】选择界面,这里选择【创建完整克隆】

    创建完整克隆

    1. 点击下一步后,进入到为新虚拟机命名的界面,因为要将它作为子节点,这里我将其命名为 Slave01,如下所示:

    为新虚拟机命名

    1. 克隆完成之后,将得到一个全新的虚拟机。因为之前有手动配置 IP,故而,这个新的主机的IP也是 192.168.12.150。为了避免启动集群的时候发生 IP 冲突,这里可以使用 sed 命令手动替换掉它的IP地址。不要将之前的虚拟机开机,把新虚拟机开机后,登录进去,使用如下命令将 IP 地址和主机名进行修改
    [root@h150 ~]# sed -i s/'IPADDR="192.168.12.150"'/'IPADDR="192.168.12.151"'/g /etc/sysconfig/network-scripts/ifcfg-ens33
    [root@h150 ~]# hostnamectl set-hostname h151.c7
    [root@h150 ~]# hostname
    h151.c7
    [root@h150 ~]# reboot
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    1. 使用相同的方法,将最初的虚拟机再克隆一份,命名为 Slave02,IP地址为 192.168.12.152,主机名为 h152.c7,于是就得到了三台主机名和IP地址不同但是配置相同的虚拟机。如下表所示
    虚拟机名称主机名IP地址
    CentOS7x64-Masterh150.c7192.168.12.150
    CentOS7x64-Slave01h151.c7192.168.12.151
    CentOS7x64-Slave02h152.c7192.168.12.152
    1. 将三台虚拟机全部开机,使用 vi 修改的 /etc/hosts 文件,均如下:
    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    
    192.168.12.150 h150.c7
    192.168.12.151 h151.c7
    192.168.12.152 h152.c7
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    1. 将三台虚拟机全部开机,为三台设备相互之间配置免密登录。
    [root@h150 ~]# ssh root@h151.c7
    [root@h151 ~]# rm -rf ~/.ssh/*
    [root@h151 ~]# logout
    Connection to h151.c7 closed.
    [root@h150 ~]# ssh-copy-id root@h151.c7
    [root@h150 ~]# 
    [root@h150 ~]# ssh root@h152.c7
    [root@h152 ~]# rm -rf ~/.ssh/*
    [root@h152 ~]# logout 
    Connection to h152.c7 closed.
    [root@h150 ~]# ssh-copy-id root@h152.c7
    [root@h150 ~]# 
    [root@h150 ~]# 
    [root@h150 ~]# scp /etc/hosts root@h151.c7:/etc/hosts
    hosts                          100%  227   200.9KB/s   00:00 
    [root@h150 ~]# scp /etc/hosts root@h152.c7:/etc/hosts
    hosts                          100%  227   233.3KB/s   00:00 
    [root@h150 ~]# 
    [root@h150 ~]# 
    [root@h150 ~]# ssh h151.c7
    Last login: Tue Apr 26 02:22:18 2022 from h150.c7
    [root@h151 ~]# ssh-keygen 
    [root@h151 ~]# ssh-copy-id root@h150.c7
    [root@h151 ~]# ssh-copy-id root@h151.c7
    [root@h151 ~]# ssh-copy-id root@h152.c7
    root@h151 ~]# ssh h152.c7
    Last login: Tue Apr 26 02:23:44 2022 from h150.c7
    [root@h152 ~]# ssh-keygen 
    [root@h152 ~]# ssh-copy-id root@h150.c7
    [root@h152 ~]# ssh-copy-id root@h151.c7
    [root@h152 ~]# ssh-copy-id root@h152.c7
    [root@h152 ~]# 
    [root@h152 ~]# logout
    Connection to h152.c7 closed.
    [root@h151 ~]# logout
    Connection to h151.c7 closed.
    [root@h150 ~]# 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    1. 通过 vi 修改 Hadoop 下 etc/hadoop/hdfs-site.xml 文件中的副本数量为 3 ,如下所示:
    <configuration>
        <!-- 
    	指定 hdfs 保存数据副本的数量(包括自己),默认值是 3。
        如果是伪分布模式,此值应该是 1 
        -->
        <property>
            <name>dfs.replication</name>
            <value>3</value>
        </property>
    	<!-- 设置HDFS的文件权限-->
    	<property>
    		<name>dfs.permissions</name>
    		<value>true</value>
    	</property>
    	<!-- 设置一个文件切片的大小:128M -->
        <!--
    	<property>
    		<name>dfs.blocksize</name>
    		<value>134217728</value>
    	</property>
    	-->
    </configuration>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    1. 通过 vi 修改 Hadoop 下 etc/hadoop/slaves 文件,内容如下:
    h150.c7
    h151.c7
    h152.c7
    
    • 1
    • 2
    • 3
    1. 然后将 Hadoop 的数据、日志和临时文件全部删除后,将配置文件全部分发给子节点,重新格式化 namenode,重启 Hadoop 的所有组件。
    [root@h150 ~]# rm -rf /opt/hadoop-2.7.1/data/
    [root@h150 ~]# rm -rf /opt/hadoop-2.7.1/logs/*
    [root@h150 ~]# rm -rf /opt/hadoop-2.7.1/tmp/*
    [root@h150 ~]# scp -r /opt/hadoop-2.7.1/ root@h151.c7:/opt/
    [root@h150 ~]# scp -r /opt/hadoop-2.7.1/ root@h152.c7:/opt/
    [root@h150 ~]# hdfs namenode -format
    [root@h150 ~]# start-all.sh
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    1. 最后打开浏览器,访问 50070 端口的 datanodes 页面,如果出现了三个节点,则说明操作成功!如下所示:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FRXtDgwV-1656651966641)(从 Linux 安装到 Hadoop 环境搭建全过程.assets/image-20220426045424164.png)]

    op/slaves` 文件,内容如下:

    h150.c7
    h151.c7
    h152.c7
    
    • 1
    • 2
    • 3
    1. 然后将 Hadoop 的数据、日志和临时文件全部删除后,将配置文件全部分发给子节点,重新格式化 namenode,重启 Hadoop 的所有组件。
    [root@h150 ~]# rm -rf /opt/hadoop-2.7.1/data/
    [root@h150 ~]# rm -rf /opt/hadoop-2.7.1/logs/*
    [root@h150 ~]# rm -rf /opt/hadoop-2.7.1/tmp/*
    [root@h150 ~]# scp -r /opt/hadoop-2.7.1/ root@h151.c7:/opt/
    [root@h150 ~]# scp -r /opt/hadoop-2.7.1/ root@h152.c7:/opt/
    [root@h150 ~]# hdfs namenode -format
    [root@h150 ~]# start-all.sh
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    1. 最后打开浏览器,访问 50070 端口的 datanodes 页面,如果出现了三个节点,则说明操作成功!如下所示:

    安装完成

  • 相关阅读:
    Scheduled定时任务
    『现学现忘』Docker基础 — 23、使用Docker安装Tomcat
    创新的Sui项目在CoinDCX的Unfold 2023黑客松中获奖
    音频基础知识
    SpringBoot中@AutoWired注解的静态变量
    (附源码)springboot苔藓植物科普网站 毕业设计 345641
    【C++】:关键字+命名空间+输入输出+缺省参数+函数重载+引用
    业务系统架构实践总结
    深入了解苹果证书及其分类,提升iOS应用开发效率
    【安全狗】Linux后渗透常见后门驻留方式分析
  • 原文地址:https://blog.csdn.net/marvelousness/article/details/125556735