HDFS基础架构以及部署

HDFS基础架构以及部署

一、HDFS基础简介
  1. 什么是HDFS
    • HDFS全称:Hadoop Distributed File System
    • 是Hadoop三大组件(HDFS,MapReduce,YARN)之一
    • 可在多台服务器上构建集群,提供分布式数据存储能力
  2. HDFS中的架构角色有哪些
    • NameNode:主角色,管理HDFS集群和DataNode角色
    • DataNode:从角色,复制数据的存储。
    • SecondaryNameNode:辅助角色,协助NameNode整理元数据
  3. HDFS的基础架构
    • 主从结构

二、HDFS集群部署

  1. 下载hadoop软件,网址:https://hadoop.apache.org(当前版本3.3.4,binary download)

  2. 解压缩安装包到:export/server/ 中

    tar -zxvf hadoop-3.3.4.tar.gz -C /export/server
    
  3. 构建软连接

    cd export/server
    ln -s /export/server/hadoop-3.3.4 hadoop
    
  4. 进入hadoop安装包内

    cd hadoop
    
    # 文件包介绍 
    # bin,存放hadoop的各类程序(命令)
    # etc,存放hadoop的配置文件
    # include,C语言的一些头文件
    # lib,存放Linux系统的动态链接库(.os文件)
    # libexec,存放配置hadoop系统的脚本文件(.sh和.cmd)
    # licenses#binary,存放许可证文件
    # sbin,管理员程序(super bin)
    # share,存放二级制源码(java jar包)
    
  5. 配置HDFS集群,主要涉及如下文件修改

    • workers:配置从节点(DataNode)有哪些

      # 进入配置文件目录
      cd etc/hadoop # Hadoop下面的etc
      # 编辑worker文件
      vim workers
      # 填入如下内容
      node1
      node2
      node3
      
    • hadoop-env.sh:配置Hadoop的相关环境

      vim hadoop-env.sh
      # 填入如下内容
      # 指明JDK环境的位置在哪儿
      export JAVA_HOME=/export/server/jdk
      # 指明Hadoop安装位置
      export HADOOP_HOME=/export/server/hadoop
      # 指明Hadoop配置文件目录位置
      export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
      # 指明Hadoop运行日志目录位置
      export HADOOP_LOG_DIR=$HADOOP_HOME/logs
      # 通过记录这些环境变量,来指明上述运行时的重要信息。
      
    • core-site.xml:Hadoop核心配置文件

      hdfs://node1:8020为整个HDFS内部的通讯地址,应用协议为hdfs://(hadoop内置协议)

      表面DataNode将和node1的8020端口通讯,node1是NameNode所在机器

      此配置固定了node1必须启动NameNode进程

      vim core-site.xml
      <configuration>
      	<property>
          	<name>fs.defaultFS</name>
              <value>hdfs://node1:8020</value>
       	</property>
          """
          key:fs.defaultFS
          含义:HDFS文件系统的网络通讯路径
          值:hdfs://node1:8020
          	- 协议为hdfs://
          	- namenode为node1
          	- namenode通讯端口为8020
          """
       	<property>
          	<name>io.file.buffer.size</name>
              <value>131072</value>
          </property>
      </configuration>
      	"""
      	含义:IO操作文件缓冲区大小
      	值:131072bit
      	"""
      
    • hdfs-site.xml:HDFS核心配置文件

      <configuration>
      	<property>
      		<name>dfs.datanode.data.dir.perm</name>
      		<value>700</value>
      	</property>
      	"""
      	key:dfs.datanade.data.dir.perm
      	含义:hdfs文件系统,默认创建的文件权限设置
      	值:700,即:rwx------
      	"""
      	<property>
      		<name>dfs.namenode.name.dir</name>
      		<value>/data/nn</value>
      	</property>
      	"""
      	key:dfs.namenode.name.dir
      	含义:Name元数据的存储位置
      	值:/data/nn,在node1节点的/data/nn目录下
      	"""	
          <property>
          	<name>dfs.namenode.hosts</name>
              <value>node1,node2,node3</value>
          </property>
          """
          key:dfs.namenode.hosts
          含义:NameNode允许那几个节点的DataNode连接(即允许加入集群)
          值:node1,node2, node3,这三台服务器被授权
      	"""
          <property>
          	<name>dfs.blocksize</name>
              <value>268435456</value>
          </property>
          """
          key:dfs.blocksize
          含义:hdfs默认块大小
          值:268435456(256MB)
          """
          <property>
          	<name>dfs.namenode.handler.count</name>
             	<value>100</value>
          </property>
          """
          key:namenode处理的并发线程数
          含义:namenode处理的并发线程数
          值:100,以100个并行度处理文件系统的管理任务
          """
          <property>
          	<name>dfs.datanode.data.dir</name>
             	<value>/data/dn</value>
          </property>
          """
          key:dfs.datanode.data.dir
          含义:从节点DataNode的数据存储目录
          值:/data/dn,即数据存放在node1,node2,node3,三台机器的/data/dn内
          """
      </configuration>
      	
      	
      	
      

    这些文件均存在 H A D O O P H O M E / e t c / h a d o o p 文件夹中, HADOOP_HOME/etc/hadoop文件夹中, HADOOPHOME/etc/hadoop文件夹中,HADOOP_HOME是后续我们要设置的环境变量,其指代Hadoop安装文件夹即L:/export/server/hadoop

    • 文件夹创建

      # namenode(主角色)数据存放node1的/data/nn
      # datanode数据存放到node1,node2,node3的/data/dn
      # 所以在node1节点创建(hadoop文件夹中):
      mkdir -p /data/nn
      mkdir /data/dn
      # 在node2和node3节点创建:
      mkdir -p /data/dn
      
    • 分发Hadoop文件夹

      目前,已经基本完成Hadoop的配置操作,可以从node1将hadoop安装文件夹远程复制到node2,node3。

      分发:

      # 在node1执行如下命令
      cd /export/server
      scp -r hadoop-3.3.4 node2:`pwd`/
      scp -r hadoop-3.3.4 node3:`pwd`/ 
      # pwd : 指代相同路径
      

      在node2执行,为hadoop配置软连接

      # 在node2执行如下命令
      ln -s /export/server/hadoop-3.3.4 /export/server/hadoop
      

      在node3执行,为hadoop配置软连接

      # 在node3执行如下命令
      ln -s /export/server/hadoop-3.3.4 /export/server/hadoop
      
    • 配置环境变量

      vim /etc/profile
      export HADOOP_HOME=/export/server/hadoop
      export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
      # 需要在node2和node3配置同样的环境变量。
      # 重新生效环境变量
      source /etc/profile
      
    • 授权为hadoop用户

      为了确保安全,hadoop系统不以root用户启动,我们以普通用户hadoop来启动整个Hadoop服务,所以,现在需要对文件权限进行授权。

      (请确保已经提前创建好了hadoop用户,并配置好了hadoop用户之间的免密登录)

      以root身份,在node1,node2,node3三台服务器上均执行如下命令

      chown -R hadoop:hadoop /data
      chown -R hadoop:hadoop /export
      # chown 更改文件夹用户操作权限
      
    • 格式化整个文件系统

      # 格式化namenode,确保以hadoop用户执行
      su hadoop
      # 格式化namenode
      hadoop namenode -format
      # 启动
      # 一键启动hdfs集群
      start-dfs.sh
      # 一键关闭hdfs集群
      stop-dfs,sh
      
      # 如果遇到命令为查找到的错误,表示环境变量未配置好,可以以绝对路径执行
      /export/server/hadoop/sbin/start-dfs.sh
      /export/server/hadoop/sbin/stop-dfs.sh
      # jps 查看当前系统运行的java类进程
      
  6. 查看HDFS WEBUI

    启动完成后,可以在浏览器打开:http://node1:9870,即可查看到hdfs文件系统的管理网页。

  7. 保护集群方法-虚拟机快照

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

草木·君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值