zoukankan      html  css  js  c++  java
  • 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命令无法找到
    Good Good Write Bug, Day Day Up
  • 相关阅读:
    (拿来主义) SpringCloud | 第四篇: 断路器(Hystrix)
    (拿来主义) SpringCloud | 第三篇: 服务消费者(Feign)
    (拿来主义) SpringCloud | 第二篇: 服务消费者(rest+ribbon)
    (拿来主义) SpringCloud | 第一篇: 服务的注册与发现(Eureka)
    (拿来主义-10) Spring Boot中使用Swagger2构建强大的RESTful API文档(五)
    (拿来主义-9) Spring Boot构建RESTful API与单元测试(四)
    (拿来主义-8) Spring Boot属性配置文件详解(三)
    (拿来主义-7) Spring Boot工程结构推荐(二)
    springMVC配置文件路径问题
    实现可用的插件系统
  • 原文地址:https://www.cnblogs.com/liyihua/p/14482420.html
Copyright © 2011-2022 走看看