• HDFS 集群环境搭建 Binge


    HDFS 集群由一个主/从架构组成,单个运行 NameNode 进程的服务器为主节点服务器,多个运行 DataNode 进程的服务器为从节点服务器

    安装准备

    主机名 IP地址 服务器
    node-01 192.168.229.21 NameNode服务器、DataNode服务器
    node-02 192.168.229.22 DataNode服务器
    node-03 192.168.229.23 DataNode服务器

    安装步骤

    1. 上传 hadoop 安装包到虚拟机 node-01

    安装包存放路径:/root/apps

    [root@node-01 apps]# ll
    总用量 350780
    -rw-r--r--. 1 root root 359196911 11月 12 16:45 hadoop-3.2.1.tar.gz
    
    2. 解压 hadoop 安装包
    [root@node-01 apps]# tar -zxvf hadoop-3.2.1.tar.gz
    
    3. 解压完毕后删除 hadoop 安装包(太大)
    [root@node-01 apps]# rm -rf hadoop-3.2.1.tar.gz 
    
    4. 删除 hadoop 文档(太大)
    [root@node-01 hadoop]# cd /root/apps/hadoop-3.2.1/share/
    [root@node-01 share]# rm -rf doc
    
    5. 配置 hadoop

    hadoop 核心配置如下:

    • 设置 hadoop 的默认文件系统为:hdfs
    • 设置 hdfs 的 namenode 节点所在虚拟机
    • 设置 namenode 软件存储元数据的本地目录
    • 设置 datanode 软件存放文件块的本地目录
    • 修改 hadoop-env.sh 环境变量

    vim 命令打开 hadoop-env.sh 文件取消 54 行 “#JAVA_HOME” 的注释,并设置为 Java 安装路径

    [root@node-01 hadoop]# cd /root/apps/hadoop-3.2.1/etc/hadoop
    [root@node-01 hadoop]# vim hadoop-env.sh
    export JAVA_HOME=/root/apps/jdk1.8.0_141/
    
    • 修改 core-site.xml 配置文件

    vim 命令打开 core-site.xml 文件,在 之间添加配置项,配置 HDFS 的访问 URL 和端口号

    [root@node-01 hadoop]# cd /root/apps/hadoop-3.2.1/etc/hadoop
    [root@node-01 hadoop]# vim core-site.xml 
    <configuration
        <!-- 指定 hdfs 的 nameservice 为 node-01 -->          
    	<property>
    		<name>fs.defaultFS</name>
    		<value>hdfs://node-01:9000/</value>
    	</property>	
    </configuration>
    
    • 修改 hdfs-site.xml 配置文件

      vim 命令打开 hdfs-site.xml 文件,在 之间添加配置项,配置访问 NameNode 和 DataNode 的元数据存储路径,以及 SecondaryNameNode 的访问端口

      [root@node-01 hadoop]# cd /root/apps/hadoop-3.2.1/etc/hadoop
      [root@node-01 hadoop]# vi hdfs-site.xml 
      
      <configuration>
      <property>
      	<name>dfs.namenode.name.dir</name>
      	<value>/root/apps/hadoop-3.2.1/data/namenode</value>
      </property>
      
      <property>
      	<name>dfs.datanode.data.dir</name>
      	<value>/root/apps/hadoop-3.2.1/data/datanode</value>
      </property>
          
      <property>
      	<name>dfs.namenode.secondary.http-address</name>
      	<value>node-02:9868</value>
      </property>
      
      </configuration>
      
    • 修改 yarn-site.xml 配置文件

      vim 命令打开 yarn-site.xml 文件,在 之间添加配置项,配置 nodemanager 和 resourcemanager 的访问端口等信息

      [root@node-01 hadoop]# cd /root/apps/hadoop-3.2.1/etc/hadoop
      [root@node-01 hadoop]# vim yarn-site.xml
      <configuration>
           <property>
        	 	<name>yarn.nodemanager.aux-services</name> 
               <value>mapreduce_shuffle</value>
        	</property>
          
        	<property>
        		<name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
        		<value>org.apache.hadoop.mapred.ShuffleHandler</value>
        	</property>
        
          <property>
         		<name>yarn.resourcemanager.resource-tracker.address</name>
        		<value>node-01:8025</value>
          </property>
        	
          <property>
         		<name>yarn.resourcemanager.scheduler.address</name> 
              <value>node-01:8030</value>
        	</property>
        
          <property>
        		<name>yarn.resourcemanager.address</name> 
               <value>node-01:8050</value>
        	</property>
      </configuration>
      
    • 配置 hadoop 环境变量,同时将 Hadoop 各进程的用户设置为 root

      [root@node-01 hadoop-3.2.1]# cd /etc
      [root@node-01 etc]# vi profile
      
      export JAVA_HOME=/root/apps/jdk1.8.0_141/
      export HADOOP_HOME=/root/apps/hadoop-3.2.1
      export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
      
      export HDFS_NAMENODE_USER=root
      export HDFS_DATANODE_USER=root
      export HDFS_SECONDARYNAMENODE_USER=root
      export YARN_RESOURCEMANAGER_USER=root
      export YARN_NODEMANAGER_USER=root
      
    • 使配置的环境变量生效

      [root@node-01 etc]# source /etc/profile
      
    6. 将虚拟机 node-01 上 已配置好的 hadoop 安装目录拷贝给其他虚拟机
    # 拷贝hadoop目录到 node-02 和 node-03
    root@node-01 etc]# cd /root/apps/
    [root@node-01 apps]# scp -r hadoop-3.2.1 node-02:$PWD
    [root@node-01 apps]# scp -r hadoop-3.2.1 node-03:$PWD
    
    #拷贝配置到 node-02 和 node-03
    [root@node-01 hadoop-3.2.1]# cd /etc
    [root@node-01 etc]# scp profile node-02:$PWD
    [root@node-01 etc]# scp profile node-03:$PWD
    #执行配置生效
    [root@node-02 etc]# source /etc/profile
    [root@node-03 etc]# source /etc/profile
    
    7. 启动 HDFS 的 NameNode 进程
    • 格式化

      在启动 Hadoop 之前先要格式化,启动后可以通过进程查看、浏览文件以及浏览器方式验证 Hadoop 是否正常运行

    [root@node-01 etc]# hadoop namenode -format
    WARNING: Use of this script to execute namenode is deprecated.
    WARNING: Attempting to execute replacement "hdfs namenode" instead.
    
    WARNING: /root/apps/hadoop-3.2.1/logs does not exist. Creating.
    2020-11-13 02:08:39,891 INFO namenode.NameNode: STARTUP_MSG: 
    /************************************************************
    STARTUP_MSG: Starting NameNode
    STARTUP_MSG:   host = node-01/192.168.229.21
    STARTUP_MSG:   args = [-format]
    STARTUP_MSG:   version = 3.2.1
    ...
    2020-11-13 02:08:41,969 INFO common.Storage: Storage directory /root/hdpdata/name has been successfully formatted. #表示格式化成功
    

    注意:如果在使用 Hadoop 的过程中出错,或者 Hadoop 启动不了,可能需要重新格式化。重新格式化可以参考停止 Hadoop、删除 Hadoop 下的 data 和 logs 文件夹及进行格式化的步骤进行。

    • 在虚拟机 node-01 启动 namenode 进程
    [root@node-01 hadoop]# hdfs --daemon start namenode
    [root@node-01 hadoop]# jps 
    2217 NameNode
    2283 Jps
    

    jps 命令专门用于查看 Java 进程, 可以通过 jps 命令查看 namenode 进程是否存在,以确定启动 namenode 进程是否成功

    • 查看 namenode 进程监听的端口号

      注:grep 后的 2217 是之前 jps 命令查询到的当前 NameNode 进程号,每次启动 NameNode 进程号是不同的

      [root@node-01 hadoop]# netstat -nltp | grep 2217
      tcp        0      0 192.168.229.11:9000         0.0.0.0:*                   LISTEN      2217/java
      tcp        0      0 0.0.0.0:9870                0.0.0.0:*                   LISTEN      2217/java 
      
      • 9000 端口:用于客户端与 hdfs 通信端口

      • 9870 端口:用于 hdfs 内置的 web 服务器端口

    • 在 windows 浏览器访问 namenode 提供的 web UI 界面

      url地址:http://192.168.229.21:9870(IP地址为虚拟机 node-01 的地址)

    8. 启动 HDFS 的 DataNode
    • 分别在虚拟机 node-02、node-03 上启动 DataNode 进程

      第一次启动提示 WARNING: /root/apps/hadoop-3.2.1/logs does not exist. Creating.,然后再重新启动一次即可

    [root@node-02 ~]# hdfs --daemon start datanode
    [root@node-02 ~]# jps
    2341 DataNode
    2421 Jps
    
    [root@node-03 ~]# hdfs --daemon start datanode
    [root@node-03 ~]# jps
    2341 DataNode
    2421 Jps
    
    • 在 windows 浏览器访问 datanode 提供的 web UI 界面

      url地址:http://192.168.229.22:9864( IP地址为虚拟机 node-02 的地址)

    9. 脚本批量启动 HDFS

    单独启动 HDFS 集群中的每台虚拟机太过繁琐,可以通过脚本批量启动 HDFS

    • 确认已配置虚拟机 node-01 到集群中所有虚拟机(包含自己)的免密登陆
    • 修改 hadoop 安装目录中 /etc/hadoop/workers 脚本文件(把需要启动 datanode 进程的节点列入)
    [root@node-01 hadoop]# cd /root/apps/hadoop-3.2.1/etc/hadoop
    [root@node-01 hadoop]# vi workers
    node-01
    node-02
    node-03
    
    • 在虚拟机 node-01 上运行脚本 start-dfs.sh 来自动启动整个集群 hdfs 进程

      [root@node-01 hadoop]# start-dfs.sh 
      
    • 在虚拟机 node-01 上运行脚本 stop-dfs.sh 来自动停止整个集群 hdfs 进程

      [root@node-01 hadoop]# stop-dfs.sh 
      
    作者:Binge
    本文版权归作者和博客园共有,转载必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。
  • 相关阅读:
    面向对象编程技术的总结和理解(c++)
    对类的理解(c++)
    对指针和引用的理解(c++)
    3DES对称加密算法(ABAP 语言实现版)
    org.springframework.util.Base64Utils线程安全问题
    SAP传输请求自动发布
    ABAP WB01 BDC ”No batch input data for screen & &“ ”没有屏幕 & & 的批输入数据“
    SAP S/4 1610 IDES + HANA 2.0 安装
    ABAP语言实现 左移 <<、无符号右移 >>> 位移操作
    ABAP表抛FTP通用程序
  • 原文地址:https://www.cnblogs.com/binbingg/p/15587082.html
Copyright © 2020-2023  润新知