• 大数据-HDFS-实操


    问题:

    为啥配置文件只需要指定主服务,无须指定从服务?

    为啥需要客户端节点?

    怎么逐一启动HDFS和统一启动HDFS?

    咋在HDFS中上传文件?

    master上部署主服务NameNode;

    slave上部署从服务DataNode;

    client上部署HDFS客户端。

     HDFS基本特性:

    1. HDFS 分布式文件系统,为大数据其他组件提供了存储功能。具有高容错、高可靠、可扩展、高吞吐率的特征。
    2. HDFS的主节点NameNode、从节点DataNode
      NameNode管理文件系统的元数据
      DataNode存储实际的数据。
    

       3. HDFS开放文件系统的命名空间以便用户以文件形式存储数据,秉承“一次写入,多次读取”的原则。

       4. 客户端通过NameNode和DataNode的交互访问文件系统,联系NameNode以获取文件的元数据,而真正的文件I/O操作是直接和DataNode进行交互的。  

     HDFS基本命令

    hdfs文件的相关操作主要使用hadoop fs、hadoop dfs、hdfs dfs 命令,以下对最常用的相关命令进行简要说明。
    hadoop fs -ls  显示当前目录结构,-ls -R 递归显示目录结构
    hadoop fs -mkdir  创建目录
    hadoop fs -rm   删除文件,-rm -R 递归删除目录和文件
    hadoop fs -put  [localsrc] [dst]  从本地加载文件到HDFS
    hadoop fs -get  [dst] [localsrc]  从HDFS导出文件到本地
    hadoop fs - copyFromLocal [localsrc] [dst]  从本地加载文件到HDFS,与put一致
    hadoop fs -copyToLocal [dst] [localsrc]  从HDFS导出文件到本地,与get一致
    hadoop fs -test -e  检测目录和文件是否存在,存在返回值$?为0,不存在返回1
    hadoop fs -text  查看文件内容
    hadoop fs -du  统计目录下各文件大小,单位字节。-du -s 汇总目录下文件大小,-du -h 显示单位
    hadoop fs -tail  显示文件末尾
    hadoop fs -cp [src] [dst] 从源目录复制文件到目标目录
    hadoop fs -mv [src] [dst] 从源目录移动文件到目标目录
    

      

    HDFS适用场景

    数据密集型并行计算:数据量极大,但是计算相对简单的并行处理,如大规模Web信息搜索。

    计算密集型并行计算:数据量相对不是很大,但是计算较为复杂的并行处理,如3D建模与渲染、气象预报和科学计算;

    数据密集与计算密集混合型的并行计算:如3D电影的渲染。

    HDFS在使用过程中有以下限制:

    (1)HDFS不适合大量小文件的存储,由于NameNode将文件系统的元数据存放在内存中,因此存储的文件数目受限于NameNode的内存大小。

    (2)HDFS适用于高吞吐量,而不适合低时间延迟的访问;

    (3)流式读取的方式,不适合多用户写入一个文件(一个文件同时只能被一个客户端写),不支持随机写。

    部署HDFS

    配置安装环境

    安装

    修改配置文件

    (1)设置JDK安装目录

    vim  [ HADOOP-DIR ] /hadoop/etc/hadoop/hadoop-env.sh
    
    export JAVA_HOME=${JAVA_HOME}
    

      

    (2)指定HDFS主节点

    vim  [ HADOOP-DIR ] /hadoop/etc/hadoop/core-site.xml

    将如下内容嵌入此文件里最后两行的<cofiguration> </configuration>标签之间。

    <property> 
      <name>
        hadoop.tmp.dir
      </name>
      <value>
        [ HADOOP-DIR ]/hadoop/cloud
      </value>
    </property> 
    
    <property> 
      <name>
        fs.defaultFS
      </name>
      <value>
        hdfs://master:8020
      </value>
    </property> 
    

      

    HDFS参数介绍

    fs.defaultFS

    默认文件系统的名称。一个URI和权威确定文件系统实现的方案。uri的计划决定配置属性(fs.SCHEME.impl)命名文件系统实现类。uri的权威是用来确定主机、端口等对于一个文件系统

    <property>
          <name>fs.defaultFS</name>
          <value>hdfs://172.18.11.2:9000</value>
    </property>
    

      

    dfs.name.dir

    这个参数用于确定将HDFS文件系统的元信息保存在什么目录下。
    如果这个参数设置为多个目录,那么这些目录下都保存着元信息的多个备份。
    如:
    <property>
        <name>dfs.name.dir</name>
        <value>/pvdata/hadoopdata/name/,/opt/hadoopdata/name/</value>
    </property>
    

       

    dfs.data.dir 

    这个参数用于确定将HDFS文件系统的数据保存在什么目录下。
    可以将这个参数设置为多个分区上的目录,即可将HDFS建立在不同分区上。
    如:
    <property>
        <name>dfs.data.dir</name>
        <value>/dev/sda3/hadoopdata/,/dev/sda1/hadoopdata/</value>
    </property>
    

      

    hadoop-env.sh里面:

    HADOOP_LOG_DIR日志存放的目录

    XML文件里主要的参数:

    core-site.xml

    fs.default.name,namenodeRPC服务运行的地址和端口,默认端口是8020,一般它的值是hdfs:开头指向namenode加端口号

    hadoop.tmp.dir,默认是放在/tmp的一个子目录,建议设置在别的目录

    手工备份namenode的办法:只要备份dfs.name.dir目录下的两个文件fsimageandedits文件

    可以通过WEb界面备份,方法是:

    curl http://master1:50070/getimage?getimage=1>$BACKUP_DIR/fsimage

    curl http://master1:50070/getimage?getedit=1>$BACKUP_DIR/edits

    恢复的时候,先停掉namenode:hadoop-deamon.shstopnamenode

    把文件拷回去,再启动:hadoop-deamon.shstartnamenode

    一般要用hadoopfsck检查完整性。

    现在新版的hadoop这个属性改为dfs.namenode.name.dir

    启动HDFS服务

    验证服务

  • 相关阅读:
    1016: 写出来吧
    从硬件工程师转到纯软件开发,回顾那些岁月
    用大白话聊聊JavaSE -- 自定义注解入门
    数组中的一些常用方法总结
    js中的隐式转换
    开源OSS.Social微信项目进阶介绍
    .Net开源oss项目进度更新(含小程序接口)
    windows下部署免费ssl证书(letsencrypt)
    完成OSS.Http底层HttpClient重构封装 支持标准库
    谈javascript变量声明
  • 原文地址:https://www.cnblogs.com/linuxws/p/14105445.html
Copyright © 2020-2023  润新知