03.Hadoop集群搭建

778 阅读4分钟

前提:白熊搞了三台笔记本,并将其统一刷成了centos7.6的系统,下面是Hadoop集群的详细安装过程。

image.png

一、安装ifconfig服务

  • 三台机器都要执行以下命令
    • yum install -y net-tools.x86_64

二、将三台服务器的IP地址改为静态IP

  • 更改配置文件,添加以下内容

  • MyNode01

    # 笔记本刷linux系统,只需更改连接wifi的那个网络即可
    # 打开配置文件
    vi /etc/sysconfig/network-scripts/ifcfg-ens33
    # 修改内容
    BOOTPROTO="static"
    # 设置 
    ONBOOT = yes
    # 添加内容
    BROADCAST=192.168.2.255
    IPADDR=192.168.2.114
    NETMASK=255.255.255.0
    GATEWAY=192.168.2.1
    # 如ping不通外网,则添加本机的DNS
    DNS1=192.168.2.1
    
  • MyNode02

    # 笔记本刷linux系统,只需更改连接wifi的那个网络即可
    # 打开配置文件
    vi /etc/sysconfig/network-scripts/ifcfg-ens33
    # 修改内容
    BOOTPROTO="static"
    # 设置 
    ONBOOT = yes
    # 添加内容
    BROADCAST=192.168.2.255
    IPADDR=192.168.2.115
    NETMASK=255.255.255.0
    GATEWAY=192.168.2.1
    # 如ping不通外网,则添加本机的DNS
    DNS1=192.168.2.1
    
  • MyNode03

    # 笔记本刷linux系统,只需更改连接wifi的那个网络即可
    # 打开配置文件
    vi /etc/sysconfig/network-scripts/ifcfg-ens33
    # 修改内容
    BOOTPROTO="static"
    # 设置 
    ONBOOT = yes
    # 添加内容
    BROADCAST=192.168.2.255
    IPADDR=192.168.2.116
    NETMASK=255.255.255.0
    GATEWAY=192.168.2.1
    # 如ping不通外网,则添加本机的DNS
    DNS1=192.168.2.1
    
  • 重启网络服务

    • service network restart
  • 三台服务器的IP地址分别为:

    • 192.168.2.114
    • 192.168.2.115
    • 192.168.2.116

三、关闭防火墙

  • 三台机器都要执行
    • systemctl disable firewalld.service

四、关闭selinux

  • 三台机器都要执行
    • vim /etc/selinux/config
    • SELINUX=disabled

五、更改主机名称

  • 192.168.2.114
    • vim /etc/hostname
    • MyNode01
  • 192.168.2.115
    • vim /etc/hostname
    • MyNode02
  • 192.168.2.116
    • vim /etc/hostname
    • MyNode03

六、添加主机名与IP的映射关系

  • 三台机器都要执行
    • vim /etc/hosts
      192.168.2.114  MyNode01
      192.168.2.115  MyNode02
      192.168.2.116  MyNode03
      

七、添加普通用户

  • 三台机器都要执行
    • root和普通用户的密码都是123456(仅限测试)
    • 添加普通用户 icebear
      • useradd icebear
      • passwd 123456
    • 普通用户添加sudo权限,文件末尾添加即可
      • visudo
      • miller ALL=(ALL) ALL

八、设置免密登录

  • 最好root和icebear用户都设置一下,这里以icebear用户为例
  • 三台机器都要执行
    # 切换成icebear用户
    su icebear
    # 回到根目录
    cd 
    # 生成密钥,一路回车即可
    ssh-keygen -t rsa
    # 将公钥拷贝到MyNode01机器上的authorized_keys文件中(三台机器都要)
    cd .ssh
    ssh-copy-id  MyNode01
    
  • MyNode01机器上执行
    • 将authorized_keys文件拷贝到其他机器上
      cd /home/icebear/.ssh
      scp authorized_keys  MyNode02:$PWD
      scp authorized_keys  MyNode03:$PWD
      
  • 重启
    • 三台机器都要执行
    • reboot
  • 免密登录测试
    • 三台机器都分别连接一下,因为首次连接要进行确认
      su MyNode01
      ssh MyNode02
      ssh MyNode03
      

九、创建安装目录

  • 三台机器都要执行(root用户)
    # 软件压缩包目录
    mkdir -p /home/bgd/soft
    # 软件安装目录
    mkdir -p /home/bgd/install
    # 为icebear用户添加操作权限
    chown -R icebear:icebear /home/bgd
    

十、安装JDK

  • MyNode01机器上执行(icebear用户)
    • jdk下载
    • 将jdk软件包上传到MyNode01机器的soft文件夹中
    • 解压
      cd /home/bgd/soft
      # 解压软件包到安装目录
      tar -zxf jdk-8u181-linux-x64.tar.gz  -C /home/bgd/install/
      
    • 修改环境变量
      sudo vim /etc/profile
      #添加以下配置内容,配置jdk环境变量
      export JAVA_HOME=/home/bgd/install/jdk1.8.0_141
      export PATH=:$JAVA_HOME/bin:$PATH
      
    • 使环境变量生效
      • source /etc/profile
    • 查看java版本
      • java -version

十一、安装和配置Hadoop

  • MyNode01机器上执行(icebear用户)
    1. 安装包下载
    2. 上传hadoop安装包,并解压
      • tar -xzvf hadoop-2.6.0-cdh5.14.2.tar.gz -C /home/bgd/install
    3. 配置hadoop环境变量
      sudo vim /etc/profile
      
      # 添加如下内容
      JAVA_HOME=/home/bgd/install/jdk1.8.0_141
      HADOOP_HOME=/home/bgd/install/hadoop-2.6.0-cdh5.14.2
      PATH=$PATH:$HOME/bin:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
      
      export JAVA_HOME
      export HADOOP_HOME
      export PATH
      
    4. 使环境变量生效
      • source /etc/profile
    5. 查看Hadoop的版本信息
      • hadoop version
    6. 配置hadoop-env.sh
      • sudo vim /home/bgd/install/hadoop-2.6.0-cdh5.14.2/etc/hadoop/hadoop-env.sh
      • export JAVA_HOME=/home/bgd/install/jdk1.8.0_141
    7. 配置core-site.xml
      • sudo vim /home/bgd/install/hadoop-2.6.0-cdh5.14.2/etc/hadoop/core-site.xml
        <configuration>
           <property>
                   <name>fs.defaultFS</name>
                   <value>hdfs://MyNode01:8020</value>
           </property>
           <property>
                   <name>hadoop.tmp.dir</name>
                   <value>/home/bgd/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/tempDatas</value>
           </property>
           <!--  缓冲区大小,实际工作中根据服务器性能动态调整 -->
           <property>
                   <name>io.file.buffer.size</name>
                   <value>4096</value>
           </property>
           <property>
                <name>fs.trash.interval</name>
                <value>10080</value>
                <description>检查点被删除后的分钟数。 如果为零,垃圾桶功能将被禁用。 
                该选项可以在服务器和客户端上配置。 如果垃圾箱被禁用服务器端,则检查客户端配置。 
                如果在服务器端启用垃圾箱,则会使用服务器上配置的值,并忽略客户端配置值。</description>
           </property>
           <property>
                <name>fs.trash.checkpoint.interval</name>
                <value>0</value>
                <description>垃圾检查点之间的分钟数。 应该小于或等于fs.trash.interval。 
                如果为零,则将该值设置为fs.trash.interval的值。 每次检查指针运行时,
                它都会从当前创建一个新的检查点,并删除比fs.trash.interval更早创建的检查点。</description>
           </property>
        </configuration>
        
    8. 配置hdfs-site.xml
      • sudo vim /home/bgd/install/hadoop-2.6.0-cdh5.14.2/etc/hadoop/hdfs-site.xml
        <configuration>
           <!-- NameNode存储元数据信息的路径,实际工作中,一般先确定磁盘的挂载目录,然后多个目录用,进行分割   --> 
           <!--   集群动态上下线 
           <property>
                   <name>dfs.hosts</name>
                   <value>/home/bgd/install/hadoop-2.6.0-cdh5.14.2/etc/hadoop/accept_host</value>
           </property>
        
           <property>
                   <name>dfs.hosts.exclude</name>
                   <value>/home/bgd/install/hadoop-2.6.0-cdh5.14.2/etc/hadoop/deny_host</value>
           </property>
            -->
        
            <property>
                   <name>dfs.namenode.secondary.http-address</name>
                   <value>MyNode02:50090</value>
           </property>
        
           <property>
                   <name>dfs.namenode.http-address</name>
                   <value>MyNode01:50070</value>
           </property>
           <property>
                   <name>dfs.namenode.name.dir</name>
                   <value>file:///home/bgd/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/namenodeDatas</value>
           </property>
           <!--  定义dataNode数据存储的节点位置,实际工作中,一般先确定磁盘的挂载目录,然后多个目录用,进行分割  -->
           <property>
                   <name>dfs.datanode.data.dir</name>
                   <value>file:///home/bgd/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/datanodeDatas</value>
           </property>
        
           <property>
                   <name>dfs.namenode.edits.dir</name>
                   <value>file:///home/bgd/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/dfs/nn/edits</value>
           </property>
           <property>
                   <name>dfs.namenode.checkpoint.dir</name>
                   <value>file:///home/bgd/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/dfs/snn/name</value>
           </property>
           <property>
                   <name>dfs.namenode.checkpoint.edits.dir</name>
                   <value>file:///home/bgd/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/dfs/nn/snn/edits</value>
           </property>
           <property>
                   <name>dfs.replication</name>
                   <value>3</value>
           </property>
           <property>
                   <name>dfs.permissions</name>
                   <value>false</value>
           </property>
           <property>
                   <name>dfs.blocksize</name>
                   <value>134217728</value>
           </property>
        </configuration>
        
    9. 配置mapred-site.xml
      • cd /home/bgd/install/hadoop-2.6.0-cdh5.14.2/etc/hadoop
      • cp mapred-site.xml.template mapred-site.xml
      • sudo vim /home/bgd/install/hadoop-2.6.0-cdh5.14.2/etc/hadoop/mapred-site.xml
        <!--指定运行mapreduce的环境是yarn -->
        <configuration>
          <property>
                   <name>mapreduce.framework.name</name>
                   <value>yarn</value>
           </property>
        
           <property>
                   <name>mapreduce.job.ubertask.enable</name>
                   <value>true</value>
           </property>
        
           <property>
                   <name>mapreduce.jobhistory.address</name>
                   <value>MyNode01:10020</value>
           </property>
        
           <property>
                   <name>mapreduce.jobhistory.webapp.address</name>
                   <value>MyNode01:19888</value>
           </property>
        </configuration>
        
    10. 配置yarn-site.xml
      • sudo vim /home/bgd/install/hadoop-2.6.0-cdh5.14.2/etc/hadoop/yarn-site.xml
        <configuration>
          <property>
                  <name>yarn.resourcemanager.hostname</name>
                  <value>MyNode01</value>
          </property>
          <property>
                  <name>yarn.nodemanager.aux-services</name>
                  <value>mapreduce_shuffle</value>
          </property>
          <property>
                  <name>yarn.log-aggregation-enable</name>
                  <value>true</value>
          </property>
          <property>
                   <name>yarn.log.server.url</name>
                   <value>http://MyNode01:19888/jobhistory/logs</value>
          </property>
        
          <!--多长时间聚合删除一次日志 此处-->
          <property>
                  <name>yarn.log-aggregation.retain-seconds</name>
                  <value>2592000</value><!--30 day-->
          </property>
          <!--时间在几秒钟内保留用户日志。只适用于如果日志聚合是禁用的-->
          <property>
                  <name>yarn.nodemanager.log.retain-seconds</name>
                  <value>604800</value><!--7 day-->
          </property>
          <!--指定文件压缩类型用于压缩汇总日志-->
          <property>
                  <name>yarn.nodemanager.log-aggregation.compression-type</name>
                  <value>gz</value>
          </property>
          <!-- nodemanager本地文件存储目录-->
          <property>
                  <name>yarn.nodemanager.local-dirs</name>
                  <value>/home/bgd/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/yarn/local</value>
          </property>
          <!-- resourceManager  保存最大的任务完成个数 -->
          <property>
                  <name>yarn.resourcemanager.max-completed-applications</name>
                  <value>1000</value>
          </property>
        </configuration>
        
    11. 编辑slaves
      • sudo vim /home/bgd/install/hadoop-2.6.0-cdh5.14.2/etc/hadoop/slaves
        MyNode01
        MyNode02
        MyNode03
        
    12. 创建文件存放目录
      mkdir -p /home/bgd/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/tempDatas
      mkdir -p /home/bgd/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/namenodeDatas
      mkdir -p /home/bgd/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/datanodeDatas
      mkdir -p /home/bgd/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/dfs/nn/edits
      mkdir -p /home/bgd/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/dfs/snn/name
      mkdir -p /home/bgd/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/dfs/nn/snn/edits
      

十二、复制配置好的Hadoop到其他机器中

  • MyNode01机器执行(icebear用户)
    • 删除doc用户文档
      • cd /home/bgd/install/hadoop-2.6.0-cdh5.14.2/share/
      • rm -rf doc/
    • 复制Hadoop到其他机器上
      • cd /home/bgd/
      • sudo scp -r hadoop-2.6.0-cdh5.14.2 MyNode02:$PWD
      • sudo scp -r hadoop-2.6.0-cdh5.14.2 MyNode03:$PWD
    • 复制全局变量到其他机器上
      • sudo scp /etc/profile MyNode02:/etc/
      • sudo scp /etc/profile MyNode03:/etc/
  • 三台机器都执行(icebear用户)
    • 使环境变量生效
      • source /etc/profile
    • 查看Hadoop版本
      • hadoop version

十三、为普通用户增加目录权限

  • 三台机器都执行
    • chown -R icebear:icebear /home/bgd
    • chmod -R 755 /home/bgd

十四、格式化Hadoop

  • MyNode01机器上执行(icebear用户)
    • su icebear
    • hdfs namenode -format

十五、启动/停止Hadoop集群

  • MyNode01机器上执行(icebear用户)
    • 启动
      • start-all.sh
    • 停止
      • stop-all.sh

十六、查看web界面

本章完结