美文网首页
HDFS详解-02

HDFS详解-02

作者: 苏木logwood | 来源:发表于2017-12-21 14:25 被阅读37次

    HDFS详解-02

    1.机架 rack
    机柜,每个机柜分别有各自的IP段
    
    问题:
    1.企业里为什么要机架?
        1.rack1挂了 rack2还能提供服务
    
    2.管理的机器有机架我没有,当成一个笼统的虚拟的机架
        刀片服务器:192.169.138.xxx
        五台刀片服务器
    
    130M文件 实际存储 130M * 3  block:6个
    
    2.副本放置策略
        开发为主 + 大数据运营 ---> 架构
    
    3.文件读流程 --> FSDataInputStream (面试题)
    hadoop]$ bin/hdfs/dfs -cat /test.log
    
    3.1 client通过FileSystem.open(filePath)方法,去与NN进行RPC通信,返回该文件的部分或者全部的block块(也包含该列表各block的分布在DataNode地址的列表),也就是返回FSDataInputStream对象
    
    3.2 Client调用FSDataInputStream对象的read()方法。
        a.去与第一个块的最近的datanode进行read,读取完后会check,假如successful会关闭与当前DataNode通信;(假如check fail会记录失败的块+DataNode信息,下次就不会读取,那么会去该块的第二个DataNode地址读取)
        b.然后第二个块的遜的DataNode上的进行读取,check后会关闭与DataNode的通信。
        c.假如block列表读取完了,文件还未结束,那么FileSystem会从NameNode获取下一批的block的列表。(当然读操作对于client端是透明的,感觉就是连续的数据流)
    
    3.3 Client调用FSDataInputStream.close()方法,关闭输入流。
    
    要求:
          1.流程要清楚
          2.文件读流程 --> FSDataInputStream
    
    4.文件写流程 --> FSDataOutputStream (面试题)
    4.1 Client调用FileSystem.create(filePath)方法,去NameNode进行rpc通信,check该路径的文件是否存在以及有没有权限创建该文件。假如ok,就创建一个新文件,但是并不关联任何block,返回一个FSDataOutputStream对象;(假如not ok,就返回错误信息,所以写代码要try-catch)
    
    4.2 Client调用FSDataOutputStream对象的write()方法,会将第一个块写入第一个DataNode,第一个DataNode写完传给第二个节点,第二个写完传给第三节点,当第三个节点写完返回一个ack packet给第二个节点,第二个返回一个ack packet给第一个节点,第一个节点返回ack packet给FSDataOutputStream对象,意思标识第一个块写完,副本数为3;然后剩余的块依次这样写。(当然写操作对于Client端也是透明的)
    
    4.3 当向文件写入数据完成后,Client调用FSDataOutputStream.close()方法,关闭输出流,flush缓存区的数据包;
    
    4.4 再调用FileSystem.complete()方法,告诉NameNode节点写入成功。
    
    hadoop]$ bin/hdfs -dfs -put rzdata.log /xxx001/
    put: `/xxx01/': No such file or directory: `hdfs://192.168.137.201:9000/xxx01'
    找不到此文件
    
    要求:
        1、流程要清楚
        2、文件写流程 --> FSDataOutputStream
        3、校验文件是否存在和权限问题
        4、最后一步DFS.complete()方法,告诉NN节点写入成功
    https://wenku.baidu.com/view/fabe57b004a1b0717fd5dda5.html
    
    5.命令
    查看进程:
        ]$ jps 
    查看全部信息:
        ]$ jps -l
    查看jps是哪个软件里面的:
        ]$ which jps
        /usr/java/jdk1.8.0_45/bin/jps
    查看:
        ]# cd /tmp/hsperfdata_hadoop/
        hsperfdata_hadoop]# ll
    
    5.1正常流程:
    ]# jps
    找到该进程的使用用户名称:
        ]# ps -ef | greo pid
        ]# su - 用户
        ]$ jps
    
    5.2异常流程
    假如进程被停止:
        rundeck]# jps
        rundeck]# kill  -9 pid
    发现进程还有残留:
         rundeck]# ps -ef|grep pid
         pid信息残留,去/tmp/hsperfdata_hadoop文件夹删除该pid文件
        hsperfdata_hadoop]# rm -rf pid文件
    切到hadoop用户,查看进程是否存在:
        ]# su - root
        ]$ jps
    登录一台机器,jps命令+ps命令,残留信息删除
    参考: http://blog.itpub.net/30089851/viewspace-1994344/
    
    6.hadoop和hdfs 文件系统命令
    hadoop]bin/hadoop fs 等价于 hdfs dfs
    
    对文件的操作命令:
    查看文件夹:
        hadoop]$ bin/hdfs dfs -ls /
    创建文件夹:
        hadoop]$ bin/hdfs dfs -mkdir -p /rzdatadir001/001
    查看文件内容:
        hadoop]$ bin/hdfs dfs -cat /test.log
    
    上传和下载:
        上传本地文件到HDFS:
            hadoop]$ bin/hdfs dfs -put rzdata.log1 /rzdatadir001/001
        下载HDFS文件到本地:
            hadoop]$ bin/hdfs dfs -get /rzdatadir001/001/rzdata.log1 /tmp/  
        下载并重命名:
            hadoop]$ bin/hdfs dfs -get /rzdatadir001/001/rzdata.log1 /tmp/rzdata.log123   重命名
    移动:
        从本地移动到HDFS:
            [-moveFromLocal <localsrc> ... <dst>]
        从HDFS移动到本地:
            [-moveToLocal <src> <localdst>]
    删除:
        1.配置回收站
            core-site.xml
                fs.trash.interval : 10080
    
        2.命令:
            [-rm [-f] [-r|-R] [-skipTrash] [-safely] <src> ...]
                skipTrash:回收站
            
        hadoop]$ bin/hdfs dfs -rm -r -f /xxx --> 进入回收站,是可以恢复的
        hadoop]$ bin/hdfs dfs -rm -r -f -skipTrash /xxx --> 进入回收站,是不可以恢复的
        
    修改权限:
        [-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...]
        [-chown [-R] [OWNER][:[GROUP]] PATH...]
    
    问题点:
    hadoop]$ bin/hdfs -dfs -put rzdata.log /xxx
    将rzdata.log重命名
    
    作业:
    1.副本放置策略、文件读写流程整理
    2.文件系统命令测试
    3.配置QQ邮件,rundeck能够调度发送邮件
    4.jps命令测试
    

    【来自@若泽大数据】

    相关文章

      网友评论

          本文标题:HDFS详解-02

          本文链接:https://www.haomeiwen.com/subject/kakawxtx.html