1 部署HDFS

HDFS的基本操作可以分为集群管理和文件系统操作两种类型:

  • 集群管理:包括Namenodede 的格式化、集群的启动和停止、集群信息查看等。
  • 文件系统:包括对目录、文件和权限等内容的操作。

HDFS中的命令主要在sbin和bin目录下[一般要进行环境变量的设置]:

  • sbin:集群控制脚本(.sh)。
  • bin:hadoop的文件系统命令和其他管理维护工具。

1.1 hadoop安装和维护的方式

主要有2种方式:

  • 一是从开源软件的官网网站直接下载软件包。
  • 二是利用集成化软件对Hadoop集群进行部署和维护。[集成化工具:amabri、cloudera manager、华为的FusionInsight]

第一种方式缺点:

  • 配置优化难度
  • 组件整合难度

1.2 部署HDFS的核心步骤和部署原则

1.2.1 集群规划

  • hadoop系统的规模
  • 组件和角色规划
    • A.确定需要安装哪些组件:比如要实现Namenode的高可用性,就需要额外安装ZK组件。
    • B.确定组件中的不同角色分别安装在哪些节点上:比如需要几个Datanode,分别安装在哪些服务器上,Namenode是安装在独立服务器上,还是和某个Datanode共享一台服务器。
    • C.根据角色规划确定所需的服务器性能需求:比如namenode所在服务器可以适当加大内存,以适应fsimage的可能大小,并且安装多块硬盘,将元数据信息保存在多个硬盘路径上,防止单个硬盘发生故障。
    • D.节点扩增:计算和存储能力不够时,很多时候就通过节点数量解决。
  • 配置规划:Datanode和Namenode一般都可以配置多个存储路径。

    • A.Datanode实现多硬盘均匀存储。
    • B.Namenode可以实现多副本备份。

1.2.2 linux环境准备

HDFS作为hadoop的核心组件,随Hadoop一起整体部署。

安装hadoop前的环境准备:

  1. 配置java环境变量:export JAVA_HOME=/opt/java/jdk
  2. hadoop部署在多台服务器上,主从节点之间、各节点之间可以通过TCP/IP协议相互访问[通过设置DNS或hosts文件,使得主机名和IP地址绑定,实现通过主机名就能访问对方]
  3. 确保hadoop所需端口打开:hadoop以及各类配套模板需要使用大量网络端口,但是自带的防火墙软件,设置不当造成功能无法正确运行。
  4. SSH接口免密登录
  5. Hadoop以及分布式NoSQL数据库要求各个节点之间的时间同步:最常见的集群时间同步方案是部署NTP服务。
//确保hadoop所需端口打开,通过命令禁用并停止防火墙服务
systemctl mask filewalld
systemctl stop fillwalld

1.2.3 Hadoop的软件包部署

  • sbin目录:存放HDFS和Yarn组件的集群控制命令。
  • bin目录:存放HDFS的文件系统命令行工具以及Yarn等组件的命令行工具。
  • etc/hadoop目录:存放hadoop的配置文件。
  • share目录:存放hadoop的各类库包(Jar)。

PS:分布式的时候,hadoop软件包需要解压缩,并复制到所有节点上,并且在每个节点上的存储位置都是相同的,并给予足够的用户访问权限。其次,进行系统配置。

2 HDFS的基本配置

HDFS的配置文件:大多数默认是XML和TXT格式存在。配置文件默认存放在/etc/hadoop目录下。

HDFS中6个重要的配置文件:

  1. core-site.xml:Hadoop全局的配置文件,也包含一些HDFS的宏观配置。
  2. dfs-site.xml:HDFS配置文件。
  3. yarn-site.xml:YARN配置文件。
  4. mapred-sie.xml:MapReduce配置文件。
  5. slaves:从节点列表。
  6. hadoop-env.sh:与运行脚本的环境变量相关的配置文件。

2.1 core-site.xml

//core-site.xml文件
<configuration>
<property><!--指定namenode的地址-->
<name>fs.defaultFS</name>
<value>hdfs://node1:8020</value>
<description>node1节点为该集群的Namenode,对应节点的端口是8020</description>
</property>
<property><!--用来指定使用hadoop时产生文件的存放目录-->
<name>hadoop.tmp.dir</name>
<value>file:/data/hadoop/hadoop-2.6.0/tmp</value>
</property>
</configuration>

2.2 dfs-site.xml

dfs-site.xml:HDFS的重要配置文件,其Namenode节点和Datanode节点相关的配置项不同。

Namenode主要有3个配置项:dfs.namenode.name.dir、dfs.blocksize、dfs.replication。

Datanode主要有1个配置项:dfs.datanode.data.dir。

//Namenode主要有3个配置项dfs.namenode.name.dir、dfs.blocksize、dfs.replication。
//Datanode主要有1个配置项
dfs.datanode.data.dir
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>/opt/dfs/name</value>
<description>namenode的目录位置,对应的目录需要存在value里面的路径</description>
</property> <property>
<name>dfs.datanode.data.dir</name>
<value>/opt/dfs/data</value>
<description>datanode的目录位置,对应的目录需要存在value里面的路径,可以是一个或多个用逗号分隔的本地路径</description>
</property> <property>
<name>dfs.replication</name>
<value>2</value> <description>hdfs系统的副本数量
</description>
</property> <property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value>
<description>备份namenode的http地址,master是主机名</description>
</property>
</configuration>

2.3 slaves

slaves:在Namenode节点还需要建立一个名为slaves的文本文件,里面记录Datanode的子节点机名,用换行分割。

2.4 hadoop-env.sh

JAVA_HOME进行环境变量配置:export JAVA_HOME=/opt/java/jdk

2.5 配置机架感知策略

需要实现机架感知的配置内容,在core-site.xml中实现两个配置项。

net.topology.node.switch.mapping.imp:org.apache.hadoop.net.TableMapping,表示采用映射文件的方式实现机架映射。

net.topology.table.file.name:内容为映射文件的路径和名称。

3 集群的启动和停止

软件包sbin目录下的start-dfs.sh和stop-dfs.sh为HDFS的集群启动和停止命令。

单独启动或停止一个HDFS进程,或者对单独的角色进行控制命令:hadoop-daemon.sh start | stop namenode |datanode|secondarynamenode

其次可以通过查看http://namenode:50070/查看系统的状态,比如该系统的启动时间、版本、集群ID等信息。

4 使用和管理HDFS

作为文件系统,HDFS的使用主要指对文件的上传、下载和移动,以及查看内容、建立或删除目录等。

查看HDFS状态,主要指查看节点的健康状态,查看存储容量,查看分块信息等。

控制HDFS,主要指对系统进行初始化,增加或删除子节点,以及提高HDFS的可用性等。

4.1 管理和操作命令

hdfs的命令行操作用命令hdfs实现,即命令行敲入:hdfs.hdfs命令文件放在Hadoop目录下的bin子目录中,包含了HDFS绝大多数的用户命令,不带任何参数地执行hdfs,可以看到所有可用的指令。

  1. dfs:HDFS的文件系统操作指令。
  2. dfsadmin:HDFS的集群管理命令,比如:查看机架感知状态,可以执行hdfs dfsadmin-printTopology。
  3. fsck:HDFS的集群检查工具。
  4. namenode-format:主节点格式化指令。
  5. balaner:数据平衡指令。

4.2 格式化Namenode

hdfs namenode -format

4.3 Namenode的安全模式

当namenode启动时,需要将fsimage等信息读入内存,并且等待各个Datanode上报存储状态,在这个过程完成之前,叫安全模式。(safenode)

此时namenode为只读状态,只能读取不能写入,当足够数量的节点以及数据块处在健康状态时,系统会自动退出安全模式。

手动对安全模式进行管理:hdfs dfsadmin -safemode [enter | leave |get |wait]

4.4 元数据恢复

由于secondary namenode在进行元数据合并时,保存了元数据的副本信息,当Namenode发生损坏时,可以利用secondary namenode中的数据进行恢复。

  1. 利用stop-dfs.sh命令停止整个集群
  2. 清空namenode原有的元数据信息,路径可以从配置项dfs.namenode.name.dir中获得。
  3. 如果secondary namenode和namenode没有部署在同一个节点上,需要将secondary namenode存储的副本信息复制到namenode,其路径和secondary namenode中的元数据副本的路径一致,可以从配置项dfs.namenode.checkpoint.dir中获得。
  4. 执行hadoop namenode-importCheckpoint,系统将检查副本数据,并将其复制到dfs.namenode.name.dir所指示的路径当中。

4.5 子节点添加与删除

大数据业务要求数据被不断采集、不断积累,需要分布式存储和NoSQL数据库等实现方便的横向扩展(scale out)。HDFS可以很方便的进行Datanode节点添加和删除。

1.静态添加/删除Datanode的方法

  • 利用stop-dfs.sh命令停止整个集群
  • 在namenode节点上的slaves配置文件中添加新的节点,或删掉旧的节点。添加新节点时,要确保新节点和其他节点之间主机名和IP地址可以相互访问,可以实现SSH无密码访问等。
  • 利用start-dfs.sh重新启动集群,在新节点配置正确的情况下,会随命令启动Datanode角色,并和Namenode连接。
  • 可以执行hdfs balancer命令,在节点之间进行手动的数据平衡。删除节点之后,namenode会自动检查副本数量,并选择新的节点存储不足的副本。

2.动态添加Datanode的方法

  • HDFS集群保持运行状态
  • 在namenode节点上的slaves配置文件中添加新的节点。
  • 在新节点执行hadoop-daemon.sh start datanode ,启动Datanode角色
  • 在主节点执行hdfs dfsadmin -refreshNodes,刷新节点列表,Namenode会根据新列表和子节点建立联系。

3.动态删除Datanode的方法

  • HDFS集群保持运行状态
  • 提前在hdfs-site.xml中配置dfs.hosts.exclude属性,内容为一个本地文本文件的路径,该文件可以称为exclude文件,其结构和slave文件的相同,即为每行一个节点主机名的列表。  记录在exclude文件中的主机,会在刷新之后被记作禁用状态,并在界面上看到这个状态。
  • 在主节点执行hdfs dfsadmin -refreshNodes,刷新节点列表。
  • 在节点写入exclude文件,并执行hdfs dfsadmin -refreshNodes,刷新节点列表。

添加/删除Datanode完成之后,可以通过两种手段查看结果。

  • 在命令行执行hdfs dfsadmin -report 查看节点列表信息。
  • 通过web界面,切换到Datanodes标签,可以查看子节点的列表,in operation表示正在使用的节点,decommissinoning,表示目前禁用的节点。

4.6 HDFS文件系统操作

可以通过执行hdfs dfs指令来进行各类操作,包括建立、删除目录、HDFS上的文件复制、移动和改名、本地文件系统和HDFS系统之间的文件相互复制等、文件的权限操作等。

  • hdfs dfs -ls /  ----查看文件目录状态
  • hdfs dfs -lsr / ----递归查看hdfs的根目录下的内容的
  • hdfs dfs -mkdir /d1 ----在hdfs上创建文件夹d1
  • hdfs dfs -put <linux source > <hdfs destination> ----把数据从linux[本地文件]上传到hdfs的特定路径中[HDFS文件或路径]
  • hdfs dfs -get <hdfs source> <linux destination>----把数据从hdfs下载到linux的特定路径下
  • hdfs dfs -mv/-cp <hdfs source > <hdfs destination>---在HDFS系统中进行文件移动或复制,参数为HDFS的源地址和目的地址。
  • hdfs dfs -text <hdfs文件> ---将序列号文件转换成文本显示出来。
  • hdfs dfs -rm <hdfs文件> ----删除文件或空目录
  • hdfs dfs -rmr <hdfs文件> ----递归删除文件或空目录
//查看文件目录状态,-ls之后必须指明需要查看的目录
hdfs dfs -ls /hdfsdir/file1
hdfs dfs -ls hdfs://node1:8020/hdfsdir/file1
//建立新目录
hdfs dfs -mkdir /hdfsdir/dir1
//从本地文件系统向HDFS复制文件。-put、-copyFromLocal。
hdfs dfs -put localfile/hdfsdir/file1
hdfs dfs -put -f localfile1 localfile2/hadoopdir
//从HDFS向本地复制文件。-get、-copyToLocal。
hdfs dfs -get /hdfsdir/hdfsfile localfile

4.7 以web方式查看文件系统

访问http://namenode:50070/explorer.html,选择"browse the file system"选项,可以对HDFS的目录结构进行查看。

分布式文件系统HDFS-部署和配置的更多相关文章

  1. 大数据技术原理与应用——分布式文件系统HDFS

    分布式文件系统概述 相对于传统的本地文件系统而言,分布式文件系统(Distribute File System)是一种通过网络实现文件在多台主机上进行分布式存储的文件系统.分布式文件系统的设计一般采用 ...

  2. 你想了解的分布式文件系统HDFS,看这一篇就够了

    1.分布式文件系统 计算机集群结构 分布式文件系统把文件分布存储到多个节点(计算机)上,成千上万的计算机节点构成计算机集群. 分布式文件系统使用的计算机集群,其配置都是由普通硬件构成的,与用多个处理器 ...

  3. 大数据 --> 分布式文件系统HDFS的工作原理

    分布式文件系统HDFS的工作原理 Hadoop分布式文件系统(HDFS)是一种被设计成适合运行在通用硬件上的分布式文件系统.HDFS是一个高度容错性的系统,适合部署在廉价的机器上.它能提供高吞吐量的数 ...

  4. Hadoop分布式文件系统--HDFS结构分析

    转自:http://blog.csdn.net/androidlushangderen/article/details/47377543 HDFS系列:http://blog.csdn.net/And ...

  5. 【转载】Hadoop分布式文件系统HDFS的工作原理详述

    转载请注明来自36大数据(36dsj.com):36大数据 » Hadoop分布式文件系统HDFS的工作原理详述 转注:读了这篇文章以后,觉得内容比较易懂,所以分享过来支持一下. Hadoop分布式文 ...

  6. CM记录-Hadoop 分布式文件系统HDFS(登录、配置、监控)

    1.登录(浏览器输入ip地址:7180,登录用户名和登录密码即可) 2.CM主界面(各个组件,监控图表,绿色代表运行正常.黄色代表运行不良,需要关注根据实际情况调整,红色代表故障,需要排查问题) 3. ...

  7. Hadoop 分布式文件系统 - HDFS

    当数据集超过一个单独的物理计算机的存储能力时,便有必要将它分不到多个独立的计算机上.管理着跨计算机网络存储的文件系统称为分布式文件系统.Hadoop 的分布式文件系统称为 HDFS,它 是为 以流式数 ...

  8. 分布式文件系统-HDFS

    HDFS Hadoop的核心就是HDFS与MapReduce.那么HDFS又是基于GFS的设计理念搞出来的. HDFS全称是Hadoop Distributed System.HDFS是为以流的方式存 ...

  9. 大数据技术 - 分布式文件系统 HDFS 的设计

    本章内容介绍下 Hadoop 自带的分布式文件系统,HDFS 即 Hadoop Distributed Filesystem.HDFS 能够存储超大文件,可以部署在廉价的服务器上,适合一次写入多次读取 ...

  10. Hadoop 学习之路(一)—— 分布式文件系统 HDFS

    一.介绍 HDFS (Hadoop Distributed File System)是Hadoop下的分布式文件系统,具有高容错.高吞吐量等特性,可以部署在低成本的硬件上. 二.HDFS 设计原理 2 ...

随机推荐

  1. 08flask中get和post请求。

    1,get请求. 使用场景:获取信息并没有对服务器的数据或者资源进行修改,则用get. 传参:get请求传参是放在URL中,通过"?"的形式指定键值对. 2,post请求. 使用场 ...

  2. Ques1,debug模式打不开的原因

    我尝试过一下三种方法打开pycharm环境下Flask的debug模式,但是都失败了.这三种具体方法如下: 1, 2, 3, 可以说上述方法都是常规操作,可是为啥还是不能打开debug模式呢? 因为: ...

  3. 读 <The Lost Horizon> 感

    读它有两个契机.一是小组英语 pre 讲香格里拉,二是高二有个男生课前演讲讲过<消失的地平线>,彼时他一脸陶醉向我们描绘场景和人物.现在我只记得他 PPT 的风景图特别美.他好像去 thu ...

  4. Moment.js的常见用法

    Moment.js是一个轻量级的JavaScript时间库,它方便了日常开发中对时间的操作,提高了开发效率.通常是用来获取时间,设置时间,格式化时间,比较时间等操作.  1.获取时间       St ...

  5. TypeScript注意

    中文文档中,元组目前已经不能越界访问

  6. Linux上传递文件到另外一个Linux服务器

    现在的项目由于安全的需要,测试服务器被设置不能直接连接,想要连接的话,只能先登录一个服务器,然后以这个服务器为跳板,去登录另外一台真正的 服务器,即使是测试环境也只能这样操作.只能是相对来说安全一些. ...

  7. python之路《五》字符串的操作

    python的里的字符串的操作是可以说是最常见也是最实用的 我们通常使用双引号来表示字符串" "创建字符串很简单,定义一个变量就可以了 1 name = 'my name \t i ...

  8. React native路由跳转navigate、push、replace的区别

    由于没有系统的去学习RN,对路由跳转了解不多,只是跟着项目在做,抽点时间简单学习一下RN路由跳转方法区别,总结如下: 如上图,外部是一个栈容器,此时A页面在最底部,navigate到B页面,为什么此时 ...

  9. 怎么在Word上编辑数学公式?教你一招

    在日常工作中我们常常会用到word来编辑文字.但是有时候也免不了要输入一些公式,尤其是数学.物理还有化学方面等较复杂的公式.这时候用word来编辑的话会很麻烦,很难编辑出来,那该怎么办呢? 我们都知道 ...

  10. python中的unittest库

    1.unittest框架是python自动化测试的入门框架,它是python自带的一个模块 包含以下几个子模块 测试用例:TestCase 测试集:TestSuite 加载用例:TestLoader ...