zoukankan      html  css  js  c++  java
  • Hadoop分布式集群搭建

    Hadoop分布式集群搭建

    1. 基础环境配置

    1.1 机器分配

    机器名 ip 用途 进程
    bigdata01 192.168.28.100 主节点 NameNode
    SecondaryNameNode
    ResourceManager
    bigdata02 192.168.28.101 从节点 DataNode
    NodeManager
    bigdata03 192.168.28.102 从节点 DataNode
    NodeManager
    bigdata04 192.168.28.103 客户端节点 -

    1.2 主机名配置

    为了方便使用配置主机名,也可跳过,后面的内容全部使用IP代替

    • 登录192.168.28.100机器

    • 打开/etc/hostname文件,写入bigdata01

    • 打开/etc/hosts文件,写入下面内容

      192.168.28.100 bigdata01
      192.168.28.101 bigdata02
      192.168.28.102 bigdata03
      192.168.28.103 bigdata04
      
    • 其他的三台机器进行相同的操作

    • 配置完成后,可以通过ssh 机器名,输入密码后进行登录

    1.3 SSH免密码登录

    分布式集群启动时只需要在一台机器上启动,Hadoop会通过SSH连到其他机器,把其他机器上对应的程序也启动起来,因此需要配置免密码登录

    • 登录bigdata01机器,执行下面的命令

      ssh-keygen -t rsa
      
    • 执行命令后,连续按4次回车,执行以后会在~/.ssh目录下生成两个文件

      id_rsa - 私钥文件

      id_rsa.pub - 公钥文件

    • 将公钥文件内容写入~/.ssh/authorized_keys文件中

      cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
      
    • 将公钥文件id_rsa.pub文件拷贝到bigdata02bigdata03

      bigdata04不是Hadoop集群中的机器,无需配置

      scp ~/.id_rsa.pub bigdata02:~/
      scp ~/.id_rsa.pub bigdata03:~/
      
    • 登录bigdata02,将公钥文件内容写入authorized_keys文件中

      cat ~/authorized_keys >> ~/.ssh/authorized_keys
      
    • 登录bigdata03,将公钥文件内容写入authorized_keys文件中

      cat ~/authorized_keys >> ~/.ssh/authorized_keys
      
    • 配置完成后在bigdata01上可以使用ssh远程连接连个从节点,且不需要输入密码

      启动Hadoop集群的时候只有主节点需要远程其他节点,所以只需配置主节点可以免密登录其他节点即可。

      其他节点无需配置免密登录,若想配置,按照上述步骤来即可

      ssh bigdata02
      ssh bigdata03
      

    1.4 集群节点时间同步

    集群只要涉及多个节点就需要对这些节点做时间同步,如果节点之间时间不同步相差太多,会影响集群的稳定性,甚至导致集群出现问题

    • 选取NTP服务器,此处使用上海交通大学网络中心NTP服务器(ntp.sjtu.edu.cn)

    • 登录bigdata01,测试是否可以成功同步

      ntpdate -u ntp.sjtu.edu.cn
      

      若提示ntpdate: command not found,说明服务器未安装该命令,使用yum install -y ntpdate即可

      [root@bigdata01 ~]# ntpdate -u ntp.sjtu.edu.cn
       3 Sep 10:58:10 ntpdate[110270]: adjust time server 94.237.64.20 offset 0.071237 sec
      

      出现上述类似内容,表明同步成功

    • 添加定时任务,每分钟进行一次时间同步

      echo "* * * * * root /usr/sbin/ntpdate -u ntp.sjtu.edu.cn" >> /etc/crontab
      
    • bigdata02bigdata03上执行上述步骤,进行时间同步

    2. Hadoop安装

    Hadoop版本: hadoop-3.2.0

    2.1 bigdata01

    • 上传hadoop-3.2.0.tar.gz到/data/soft目录下

    • 解压

      tar xzvf hadoop-3.2.0.tar.gz
      
    • 进入配置文件所在目录

      cd /data/soft/hadoop-3.2.0/etc/hadoop
      
    • 修改hadoop-env.sh文件,在文件末尾添加环境变量信息

      export JAVA_HOME=/opt/jdk1.8.0_291
      export HADOOP_LOG_DIR=/data/hadoop_repo/logs/hadoop
      
    • 修改core-site.xml文件

      注意:fs.defaultFS属性中的主机名需要和主节点的主机名保持一致

      <configuration>
          <!-- hdfs操作端口 -->
          <property>
              <name>fs.defaultFS</name>
              <value>hdfs://bigdata01:9000</value>
          </property>
          <!-- 本地临时目录 -->
          <property>
              <name>hadoop.tmp.dir</name>
              <value>/data/hadoop_repo</value>
          </property>
      </configuration>
      
    • 修改hdfs-site.xml文件

      <configuration>
          <!-- 副本数量,因为集群只有两个从节点,所以最多为2 -->
          <property>
              <name>dfs.replication</name>
              <value>2</value>
          </property>
          <!-- SecondaryNameNode进程监听端口 -->
          <property>
              <name>dfs.namenode.secondary.http-address</name>
              <value>bigdata01:50090</value>
          </property>
      </configuration>
      
    • 修改mapred-site.xml文件

      <configuration>
          <!-- 设置MapReduce使用的资源调度框架 -->
          <property>
              <name>mapreduce.framework.name</name>
              <value>yarn</value>
          </property>
      </configuration>
      
    • 修改yarn-site.xml

      <configuration>
          <!-- NodeManager上运行的附属服务 -->
          <property>
              <name>yarn.nodemanager.aux-services</name>
              <value>mapreduce_shuffle</value>
          </property>
          <!-- 环境变量白名单 -->
          <property>
              <name>yarn.nodemanager.env-whitelist</name>
              <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
          </property>
          <!-- ResourceManager运行的主机 -->
          <property>
              <name>yarn.resourcemanager.hostname</name>
              <value>bigdata01</value>
          </property>
      </configuration>
      
    • 修改workers文件,增加所有从节点的主机名,一个一行

      bigdata02
      bigdata03
      
    • 进入sbin目录

      cd /data/soft/hadoop-3.2.0/sbin
      
    • 修改start-dfs.shstop-dfs.sh脚本文件,在文件前面增加如下内容

      需放在#!/usr/bin/env bash下面

      HDFS_DATANODE_USER=root
      HDFS_DATANODE_SECURE_USER=hdfs
      HDFS_NAMENODE_USER=root
      HDFS_SECONDARYNAMENODE_USER=root
      
    • 修改start-yarn.shstop-yarn.sh脚本文件,在文件前面增加如下内容

      需放在#!/usr/bin/env bash下面

      YARN_RESOURCEMANAGER_USER=root
      HADOOP_SECURE_DN_USER=yarn
      YARN_NODEMANAGER_USER=root
      
    • bigdata01节点上配置后的安装包拷贝到其他两个从节点

      scp -rq /data/soft/hadoop-3.2.0 bigdata02:/data/soft
      scp -rq /data/soft/hadoop-3.2.0 bigdata03:/data/soft
      
    • bigdata01上格式化HDFS

      cd /data/soft/hadoop-3.2.0/bin
      hdfs namenode -format
      

      若在后面的日志信息中能看到下面的内容,则说明namenode格式化成功

      common.Storage: Storage directory /data/hadoop_repo/dfs/name has been successfully formatted.
      
    • 启动集群,在bigdata01节点上执行下面命令

      cd /data/soft/hadoop-3.2.0/sbin
      start-all.sh
      

    2.2 验证

    • 在各个机器上执行jps命令

    • bigdata01上存在NameNodeResourceManagerSecondaryNameNode进程

    • bigdata02bigdata03上存在NodeManagerDataNode进程

    • 在任一机器上执行hdfs dfs -ls /都可以正常访问

    • 在浏览器访问http://bigdata01:9870可以正常显示

      需在本机配置hosts文件,指定bigdata01对应的ip。或直接使用IP访问

    2.3 建议

    为了使用方便,可以将Hadoop配置到环境变量中,防止每次使用都需要切换到sbin目录下

    echo "export HADOOP_HOME=/data/soft/hadoop-3.2.0" >> /etc/profile
    echo "export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH" >> /etc/profile
    source /etc/profile
    

    3. 客户端搭建

    在实际工作中不建议直接连接Hadoop集群中的节点来操作集群,直接把集群中的节点暴露给普通开发人员是不安全的

    建议直接在业务机器上安装Hadoop,只需要保证业务机器上的Hadoop的配置和集群中的配置保持一致即可,这样就可以直接在业务机器上操作Hadoop集群了,此机器就称为Hadoop的客户端节点

    3.1 Linux机器

    • 直接将配置好的软件拷贝到业务机器上即可

      注意:仅拷贝,不能启动

      scp -rq /data/soft/hadoop-3.2.0 bigdata04:/data/soft
      
    • 配置环境变量

    3.2 Windows机器

    • 将配置好的软件下载到指定路径

      示例:F:hadoop-3.2.0

    • 配置环境变量

      此电脑 --右键--> 属性 --> 高级系统设置 --> 高级 --> 环境变量

    • 下载winutils.exehadoop.dll点击跳转到下载界面

    • 将下载好的文件放到Hadoop的bin目录下

    • 若执行hdfs命令时提示用户无权限,配置HADOOP_USER_HOME环境变量,值为Hadoop集群的安装账户

    • 最好将etc/hadoop目录下配置的路径修改为本地路径,Linux路径和Windows路径格式不一致,可能会出现问题

    © 版权声明:本文为博主原创文章,转载请注明出处
  • 相关阅读:
    随笔2
    随笔
    关于updateElement接口
    随笔1
    本地访问正常,服务器访问乱码 记录
    Redis (error) NOAUTH Authentication required.解决方法
    tomcat启动很慢 停留在 At least one JAR was scanned for TLDs yet contained no TLDs.
    微信公众号消息回复
    微信公众号 报token验证失败
    idea中web.xml报错 Servlet should have a mapping
  • 原文地址:https://www.cnblogs.com/jinjiyese153/p/15223038.html
Copyright © 2011-2022 走看看