Hadoop分布式集群搭建

环境准备

软件版本

  • 电脑系统:macOS 10.14.6

  • 虚拟机软件:Parallels Desktop15

  • Hadoop各节点节点操作系统:CentOS-7-x86_64-Minimal-1908.iso

  • CentOS 7 JDK版本:jdk1.8.0_162

  • Hadoop版本:hadoop-2.7.7

环境配置说明

  • 电脑配置:MacBook Pro 13(8G + 256G)

  • 三台 CentOS 7 配置:内存1G、硬盘13G(与Mac完全隔离的虚拟机)

  • 三台 CentOS 7 的名字及IP:node1(10.211.55.18)、node2(10.211.55.19)、node3(10.211.55.20)

  • 三台虚拟机的用户名:lyh

操作说明

  • 下面所有的操作,都是在root权限下进行的:su root 进入root权限

  • 下面所有的操作,都是用 Mac 的终端远程连接(ssh)三台 CentOS 7 进行的,这样会比较方便快捷

  • 由于centos虚拟机网络环境没有本机好,所以这里采用的是本地下载好所需文件包,然后通过MacOS 终端上传到虚拟机,大家也可以采取直接从虚拟机上下载所需的文件包。

免密登录配置

vim 的安装

CentOS-7-Minimal 刚安装好,需要给三台主机都安装vim编辑器:

yum install vim -y

如果不确定vim是否安装成功,可以输入vim -h 查看是否有vim命令

host配置

  1. 开启虚拟机,默认是在 /home/lyh 目录下的,host配置文件在根目录下的 etc 文件夹下,给三台虚拟机均进行配置。

  2. 注意,下面的host配置,一定要根据自己的主机名和ip进行配置,三台主机的配置均一样。

  3. 根目录下,输入:vim ../../etc/hosts ,最后面添加如下内容:

    10.211.55.18 node1
    10.211.55.19 node2
    10.211.55.20 node3
    

关闭防火墙

三台主机都需要进行该配置。

  1. 查看防火墙状态

    firewall-cmd --state
    
  2. 停止防火墙

    systemctl stop firewalld.service
    
  3. 禁止防火墙开机启动

    systemctl disable firewalld.service
    
  4. 关闭selinux

    • 第一步:在 /home/lyh'目录下,输入:

      vim ../../etc/selinux/config
      
    • 注释掉 SELINUX=enforcing ,添加如下内容:

      SELINUX=disabled
      

      也可以直接将enforcing修改为disabled。

  5. 配置所有各自服务器本身公钥和免密:

    ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
    
  6. 将公钥追加到”authorized_keys”文件

    cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
    
  7. 免密登录公钥分发

    每台主机,互相分发公钥,实现各个主机之间的免密登录。

    说明:三台主机对应的IP

    node1(10.211.55.18)
    node2(10.211.55.19)
    node3(10.211.55.20)
    
    • node1 分发给:node2、node3

      ssh-copy-id -i ~/.ssh/id_dsa.pub 10.211.55.19
      
      ssh-copy-id -i ~/.ssh/id_dsa.pub 10.211.55.20
      
    • node2 分发给:node1、node3

      ssh-copy-id -i ~/.ssh/id_dsa.pub 10.211.55.18
      
      ssh-copy-id -i ~/.ssh/id_dsa.pub 10.211.55.20
      
    • node3 分发给:node1、node2

      ssh-copy-id -i ~/.ssh/id_dsa.pub 10.211.55.18
      
      ssh-copy-id -i ~/.ssh/id_dsa.pub 10.211.55.19
      
  8. 免密登录配置,已经完成,可以进行测试

    ssh node1
    
    ssh node2
    
    ssh node3
    

    三台主机之间可以实现免密登录了

下载并配置JDK

下载JDK并上传到虚拟机

大家可以去到:https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html ,选择自己需要下载的JDK版本,我这里下载的是 jdk-8u162-linux-x64.tar.gz,下载好后,通过终端,分别上传到三台虚拟机:

scp -r 本地下载好的JDK路径 虚拟机用户名@虚拟机ip:要上传到虚拟机的路径

如:下载好的JDK包在桌面,要上传到 lyh 用户的 /app 路径下,该用户的IP为 10.211.55.18

scp -r ~/Desktop/jdk-8u162-linux-x64.tar.gz lyh@10.211.55.18:/app

这里上传到虚拟机根目录的 app 文件夹下,app 文件夹是需要自己创建的。

解压JDK包并配置Linux环境变量

进入 app 文件夹(三台虚拟机都需要安装JDK)

  1. 解压JDK包

    tar -zxvf jdk-8u162-linux-x64.tar.gz
    
  2. 创建为JDK软链接

    ln -s jdk1.8.0_162 jdk
    
  3. 配置环境变量

    在根目录/ 下,输入vim /etc/profile,添加如下内容:

    # JAVA
    export JAVA_HOME=/app/jdk
    export JRE_HOME=${JAVA_HOME}/jre
    export CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:.
    export PATH=${JAVA_HOME}/bin:$PATH
    

    路径要根据自己的实际情况来更改,如我这里的是:/app/jdk

  4. 如果不能写入,说明没有前面没有进入root权限,请按下esc后,强制写入保存:

    输入:

    :w !sudo tee %
    

    回车后,需要输入用户密码,以及输入字母 O 确认。

    然后退出::!q

  5. 使刚刚的配置生效

    source /etc/profile
    
  6. 验证JDK安装是否完成

    java -version
    

    出现以下字眼说明安装成功了

    java version "1.8.0_162"
    Java(TM) SE Runtime Environment (build 1.8.0_162-b12)
    Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)
    

安装Hadoop-2.7.7

三台虚拟机都需要安装Hadoop-2.7.7

下载hadoop2.7.7并上传到虚拟机

下载地址:https://archive.apache.org/dist/hadoop/core/hadoop-2.7.7/

选择hadoop-2.7.7.tar.gz进行下载,这里默认将文件下载到 ~/Desktop,上传到虚拟机的 /app 目录下

分别上传到三台虚拟机:

src -r ~/Desktop/hadoop-2.7.7.tar.gz lyh@10.211.55.18:/app
src -r ~/Desktop/hadoop-2.7.7.tar.gz lyh@10.211.55.19:/app
src -r ~/Desktop/hadoop-2.7.7.tar.gz lyh@10.211.55.20:/app

解压安装包并配置Linux环境变量

  1. 解压Hadoop安装包

    tar -zxvf hadoop-2.7.7.tar.gz
    
  2. 为hadoop-2.7.7创建软链接

    ln -s hadoop-2.7.7 hadoop
    
  3. 配置Linux环境变量

    1. 进入根目录 /

      vim /etc/profile
      
    2. 添加如下内容

      # HADOOP
      export HADOOP_HOME=/app/hadoop
      export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin    
      
    3. 保存并退出,是写入的内容生效

      source /etc/profile
      
  4. 检查是否安装成功

    • 输入:whereis hdfs

      输出:

      hdfs: /app/hadoop-2.7.7/bin/hdfs.cmd /app/hadoop-2.7.7/bin/hdfs
      
    • 输入:whereis start-all.sh

      输出:

      start-all: /app/hadoop-2.7.7/sbin/start-all.cmd /app/hadoop-2.7.7/sbin/start-all.sh
      
  5. 这时候说明安装成功了

Hadoop 配置

时间同步配置

三台虚拟机都需要安装。

yum install -y ntp

设置NTP服务开机启动

chkconfig ntpd on

查看ntp进程是否启动

ps  aux | grep ntp

node1进行文件配置

修改目录 ${HADOOP_HOME}/etc/hadoop 目录中的文件

cd ${HADOOP_HOME}/etc/hadoop
  1. 设置 hadoop-env.sh

    • 编辑hadoop-env.sh文件,找到export JAVA_HONE,修改如下:

      export JAVA_HOMT=/app/jdk
      
  2. 修改 core-site.xml 配置文件

    <configuration>
            <property>
                    <name>fs.defaultFS</name>
                    <value>hdfs://node1:8020</value>
            </property>
            <property>
                    <name>hadoop.tmp.dir</name>
                    <value>/app/hadoop/tmp</value>
            </property>
    </configuration>
    
  3. 修改 hdfs-site.xml 配置文件

    <configuration>
            <property>
                    <name>dfs.replication</name>
                    <value>2</value>
            </property>
    </configuration>
    
  4. 将 mapred-site.xml.template 复制为文件名是 mapred-site.xml 的文件

    cp mapred-site.xml.template mapred-site.xml
    
  5. 修改 mapred-site.xml 配置文件

    <configuration>
            <property>
                    <name>mapreduce.framework.name</name>
                    <value>yarn</value>
            </property>
    </configuration>
    
  6. 修改 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>
    <!-- Site specific YARN configuration properties -->
    </configuration>
    
  7. 修改 slaves 文件,删除原有内容,修改为如下内容:

    node2
    node3
    

分发配置到 node2、node3 虚拟机

  1. hadoop/etc目录下的 hadoop 文件夹分发给另外两台虚拟机

    cd ${HADOOP_HOME}/etc
    
    scp -r hadoop lyh@node2:/app/hadoop/etc/
    
    scp -r hadoop lyh@node3:/app/hadoop/etc/
    

初始化及启动

  1. 在此之前需要先下载openjdk-devel

    yum install java-1.8.0-openjdk-devel.x86_64
    
  2. 在 node1 格式化 hdfs

    hdfs namenode -format
    
  3. 启动Hadoop服务

    • 启动HDFS:start-dfs.sh

    • 启动YARN:start-yarn.sh

    • 启动all:start-all.sh

  4. 输入 jps 可以查看进程

  5. 关闭Hadoop服务

    stop-all.sh
    

参考文献

  1. Hadoop分布式安装
  2. Mac系统下,Hadoop集群的搭建
  3. hadoop分布式集群搭建
  4. CentOS7查看和关闭防火墙
  5. Hadoop集群SSH服务和免密码登录的配置
  6. vim /etc/profile 写入时 出现 E121:无法打开并写入文件解决方案
  7. jps命令无法找到
发表评论

相关文章