• hdfs shell 命令以及原理


    shell 操作 dfs

    上传
    [hadoop@namenode ~]$ /data/hadoop/bin/hadoop fs -put /opt/MegaRAID/MegaCli/MegaCli64 hdfs://ns1/MegaCli
    或者
    [hadoop@namenode ~]$ /data/hadoop/bin/hdfs dfs -put /opt/MegaRAID/MegaCli/MegaCli64 /megacli

    查看
    [hadoop@namenode ~]$ /data/hadoop/bin/hdfs dfs -ls /
    Found 7 items
    drwxr-xr-x - hadoop supergroup 0 2016-11-09 14:21 /123456
    -rw-r--r-- 3 hadoop supergroup 2247752 2016-11-10 15:49 /MegaCli
    drwxr-xr-x - hadoop supergroup 0 2016-11-04 15:20 /data
    -rw-r--r-- 3 hadoop supergroup 2247752 2016-11-10 15:50 /megacli
    drwx------ - hadoop supergroup 0 2016-11-09 12:11 /tmp
    -rw-r--r-- 3 hadoop supergroup 214092195 2016-11-08 18:50 /tools
    -rw-r--r-- 3 hadoop supergroup 53 2016-11-09 12:08 /worlds


    下载
    /data/hadoop/bin/hadoop fs -get hdfs://ns1/MegaCli ./
    或者
    /data/hadoop/bin/hdfs dfs -get /MegaCli ~/megacli


    本地文件拷贝到hdfs中
    /data/hadoop/bin/hadoop fs -copyFromLocal /data/auto_pub.sh /

    查看 hdfs 文件
    /data/hadoop/bin/hadoop fs -cat /auto_pub.sh | more


    [hadoop@namenode ~]$ /data/hadoop/bin/hadoop fs -count /
    21 17 218744425 /
    文件 文件夹 大小

    递归查询,并且显示大小
    [hadoop@namenode ~]$ /data/hadoop/bin/hadoop fs -ls -R -h /tmp

    创建目录
    [hadoop@namenode ~]$ /data/hadoop/bin/hadoop fs -mkdir /abcd

    把本地文件move到hdfs上
    [hadoop@namenode ~]$ /data/hadoop/bin/hadoop fs -moveFromLocal ~/abc.txt /

    把hdfs文件move到本地
    [hadoop@namenode ~]$ /data/hadoop/bin/hadoop fs -moveToLocal /abc.txt ~/

    把hdfs文件move到hdfs
    [hadoop@namenode ~]$ /data/hadoop/bin/hadoop fs -moveFromLocal ~/abc.txt /

    把hdfs文件删除
    [hadoop@namenode ~]$ /data/hadoop/bin/hadoop fs -rm /abc.txt

    把hdfs目录删除
    [hadoop@namenode ~]$ /data/hadoop/bin/hadoop fs -rm -r /abcd

    查看hdfs 文件最后内容
    [hadoop@namenode ~]$ /data/hadoop/bin/hadoop fs -tail -f /megacli

    创建hdfs 一个空文件
    [hadoop@namenode ~]$ /data/hadoop/bin/hadoop fs -touch /aaaa.txt

    添加执行权限
    [hadoop@namenode ~]$ /data/hadoop/bin/hadoop fs -chmod a+x /aaaa.txt


    HDFS原理
    1个client 需要读取数据,首先要和namenode联系,进行Metadata ops操作,获取元数据信息(metadata),
    数据块是依次读取,不能同时读取,读一块,然后拼接。
    机架感知: 客户端有选择,在那台机器上读取比较近,有数据就近原则。
    数据块的复制,是水平复制。

    Metadata 元数据
    内存与硬盘都保存一份
    NameNode(FileName,replicas,block-ids,id2host......)
    /test/a.log, 3,{blk_1,blk_2},[{blk_1:[h0,h1,h3]},{blk_2:[h0,h2,h4]}]
    副本复制3此, /test/a.log 分成2块, blk_1 在 h0,h1,h3上, blk_2在h0,h2,h4上


    NameNode是整个文件系统的管理节点。
    他维护着整个文件系统的文件目录树,
    文件/目录的元信息和每个文件对应的
    数据块列表,接收用户的操作请求

    文件包括
    1 fsimage 元数据镜像文件,
    2. edits 操作日志文件
    3. fstime 保存最后一次checkpoint的时间

    NameNode的工作特点
    1.NameNode始终在内存中保存metedata,用于处理 读请求。
    2.到有“写请求”到来时,namenode会首先写edits到磁盘,即向edits文件中写日志,成功返回后,才会
    修改内存,并且向客户端返回。
    3. hadoop会维护一个fsimage文件,也就是namenode中的metedata镜像,但是fsimage不会随时与namenode
    内存中的metedata保持一样,而是每隔一段时间通过合并edits文件来更新内容。
    secondarynamenode 就是用来合并 fsimages和edits文件来更新 namenode的 metedata。


    mapreduce 概述
    mapreduce 是一种分布式计算模型,由google提出, 主要用于搜索领域,解决海量数据的计算问题

    MR由两个阶段组成,map和reduce,用户只需要实现map() 和 reduce() 两个函数, 即可实现分布式计算,非常简单
    这两个函数的形参是key、value对,表示函数的输入信息。

     

    1. client 写好的worldcournt jar包提交给HDFS

    2.nodemanager每隔一段时间就像RM发送心跳,帮自己的状态汇报给resourcemanager,领取任务。

    3.resourcemanager的主要任务,是资源分配。

    4.nodemanager从hdfs读取数据,reduce完成后 又把数据写会到hdfs中。

    5.client通过RPC协议提交任务到resourcemanager,只提交任务的 描述信息。

    6. nodemanager领取 resourcemanager任务的描述信息。

    7.nodemanager到HDFS 领取jar包

    8. 领到jar包,再启动一个进程,执行程序。

  • 相关阅读:
    Windows下自动解压windows share上的文件
    Jenkins有用的插件
    windows下用时间戳创建文件名
    Jenkins Pulgin 安装
    安装在Linux下的jenkins执行windows下的bat命令
    Linux Shell下执行sqlplus
    Linux 下访问Windows共享目录
    Linux SSH 无密码登录
    Linux 文件编码问题及iconv命令
    Python抓取网页并保存为PDF
  • 原文地址:https://www.cnblogs.com/fengjian2016/p/6061989.html
Copyright © 2020-2023  润新知