03. Построение кластера Hadoop

Большие данные
03. Построение кластера Hadoop

Предпосылка: компания White Bear собрала три ноутбука и прошила их системой Centos 7.6.Ниже приведен подробный процесс установки кластера Hadoop.

image.png

1. Установите сервис ifconfig

  • Все три машины должны выполнить следующие команды
    • yum install -y net-tools.x86_64

2. Измените 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

3. Отключите брандмауэр

  • Все три машины должны выполнить
    • systemctl disable firewalld.service

В-четвертых, закрыть selinux

  • Все три машины должны выполнить
    • vim /etc/selinux/config
    • SELINUX=disabled

5. Измените имя хоста

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

6. Добавьте отношение сопоставления между именем хоста и 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
    • Скопируйте файл author_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
    

10. Установите JDK

  • Выполнить на машине MyNode01 (пользователь icebear)
    • скачать jdk
    • Загрузите пакет jdk в программную папку компьютера MyNode01.
    • распаковывать
      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

11. Установите и настройте 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. редактировать рабов
      • 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
      

12. Скопируйте настроенный 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

13. Увеличьте права доступа к каталогу для обычных пользователей.

  • Все три машины выполняют
    • chown -R icebear:icebear /home/bgd
    • chmod -R 755 /home/bgd

14. Формат Hadoop

  • Выполнить на машине MyNode01 (пользователь icebear)
    • su icebear
    • hdfs namenode -format

15. Запуск/остановка кластера Hadoop

  • Выполнить на машине MyNode01 (пользователь icebear)
    • запускать
      • start-all.sh
    • останавливаться
      • stop-all.sh

16. Просмотр веб-интерфейса

Конец этой главы