Hadoop集群配置部署

Hadoop集群配置部署

Hadoop框架配置

image-20230908155222586

  1. 上传hadoop压缩包到node1

  2. 解压到 /export/servers

  3. 创建软连接

    1
    2
    3
    cp -r hadoop-3.3.6 /export/server
    cd /export/server
    ln -s /export/seervers/hadoop-3.3.x
  4. 进入hadoop安装包内

    1
    cd /hadoop
  5. Hadoop文件结构

    1
    2
    3
    4
    5
    6
    7
    8
    bin:存放Hadoop的各类程序(命令)
    etc:存放Hadoop的配置文件
    include:C语言的一些头文件
    lib:存放Linux的动态链接库(.so文件)
    libexec:存放Hadoop系统的脚本文件(.sh和.cmd)
    licenses-binary:存放许可证文件
    sbin:管理员程序(super bin)
    share:存放二进制编码(Java jar包)
  6. 配置HDFS集群需要修改的文件(hadoop/etc/hadoop文件中)

    1. workers:配置从节点(DataNode)

      1
      2
      3
      hadoop
      node1
      node2
    2. hadoop-env.sh:配置Hadoop的相关环境变量

      1
      2
      3
      4
      export JAVA_HOME=/export/server/jdk      # java环境的位置
      export HADOOP_HOME=/export/server/hadoop # Hadoop的安装位置
      export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop # Hadoop配置文件目录位置
      export HADOOP_LOG_DIR=$HADOOP_HOME/logs # 运行日志的位置
    3. core-site.xml:Hadoop核心配置文件

      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
      <configuration>
      <!--
      key:fs.defaultFS
      含义:HDFS文件系统的网络通讯路径
      值:hdfs://node1:8020
      协议为:hdfs://
      namenode为node1
      namenode通讯端口为8020
      -->
      <property>
      <name>fs.defaultFS</name>
      <value>hdfs://node1:8020</value>
      </property>
      <!--
      key:io.file.buffer.size
      含义:io操作文件的缓冲区大小
      值:131072 bit
      -->
      <property>
      <name>io.file.buffer.size</name>
      <value>131072</value>
      </property>
      </configuration >

      node1必须启动NameNode进程
    4. hdfs-site.xml:HDFS核心配置文件

      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
      <configuration>
      <!-- 默认创建的文件权限设置 -->
      <property>
      <name>dfs.datanode.data.dir.perm</name>
      <value>700</value>
      </property>
      <!-- NameNode元数据存储位置 node1结点下的/data/nn 目录-->
      <property>
      <name>dfs.namenode.name.dir</name>
      <value>/data/nn</value>
      </property>
      <!-- 允许哪些结点的DataNode连接 -->
      <property>
      <name>dfs.namenode.hosts</name>
      <value>node1,node2,node3</value>
      </property>
      <!-- 默认块大小 -->
      <property>
      <name>dfs.blocksize</name>
      <value>168435456</value>
      </property>
      <!-- 并发线程数 -->
      <property>
      <name>dfs.namenode.handler.count</name>
      <value>100</value>
      </property>
      <!-- 从节点DataNode的数据存储目录 -->
      <property>
      <name>dfs.datanode.data.dir</name>
      <value>/data/dn</value>
      </property>
      </configuration >
  7. 配置namenode和datanode的目录

    1
    2
    3
    4
    5
    6
    cd /export/server/
    node1
    mkdir -p /data/nn
    mkdir -p /data/dn
    node2 node3
    mkdir -p /dtat/dn
  8. 分发Hadoop文件夹

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    cd /export/server
    scp -r hadoop-3.3.6 node2:`pwd`/
    scp -r hadoop-3.3.6 node3:`pwd`/

    # 配置软链接
    # 在node2上执行
    ln -s /export/server/hadoop-3.3.6 /export/server/hadoop

    #在node3上执行
    ln -s /export/server/hadoop-3.3.6 /export/server/hadoop
  9. 配置环境变量

    1
    2
    3
    4
    5
    sudo vim /etc/profile
    export HADOOP_HOME=/export/server/hadoop
    export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

    # node2\node3 同样配置
  10. 为Hadoop用户授权

    1
    2
    3
    # node1,node2,node3
    chown -R node1:node1 /data
    chown -R node1:node1 /export
  11. 格式化HDFS

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    # 确保Hadoop用户执行
    su hadoop
    # 格式化namenode
    hadoop namenode -format

    # 启动Hadoop
    # 一键启动Hadoop集群
    start-all.sh
    # 一键关闭Hadoop集群
    stop-all.sh

    # 如果提示未找到命令,请确保环境变量配置好了,或用绝对路径执行
    sh /export/server/hadoop/sbin/start-all.sh
    sh /export/server/hadoop/sbin/stop-all.sh
  12. SSH无密钥登录

    1
    2
    3
    4
    5
    6
    7
    $ cd ~/.ssh/          # 若没有该目录,请先执行一次ssh localhost命令
    $ ssh-keygen -t rsa # 生成密钥文件,会有提示输入加密信息,都按回车键即可
    # 02 分别在三个节点中执行以下命令,将公钥信息复制并追加到对方节点的授权文件authorized_keys中:
    $ ssh-copy-id hadoop
    $ ssh-copy-id node1
    $ ssh-copy-id node2