AmosCloud

Library

Have a Question?

If you have any question you can ask below or enter what you are looking for!

day03_Hadoop_HDFS_MR

hdfs的安全模式

  • 查看安全模式状态
    hdfs dfsadmin -safemode get

  • 开启安全模式
    hdfs dfsadmin -safemode enter

  • 关闭安全模式
    hdfs dfsadmin -safemode leave

  • 等待安全模式关闭后执行操作
    hdfs dfsadmin -safemode wait

    • 直接在wait写需要执行的hdfs命令
    • wait是一个阻塞的命令,如果不后台启动,会随终端关闭而结束
    • 通常通过脚本后台启动进程

后台启动进程

https://blog.csdn.net/aoeace/article/details/84925482
忽略全部输出:command >/dev/null 2>&1 &

校验和

  • 校验和加密算法可以保证 只要输入不同,输出一定不同
  • 加密<->编码
  1. 当DataNode读取block的时候,它会计算checksum。
  2. 如果计算后的checksum,与block创建时值不一样,说明block已经损坏。
  3. client读取其他DataNode上的block。
  4. datanode在其文件创建后周期验证checksum。

HDFS快照管理

hdfs dfsadmin -allowSnapshot 路径
(功能描述:开启指定目录的快照功能)
hdfs dfsadmin -disallowSnapshot 路径 (功能描述:禁用指定目录的快照功能,默认是禁用)
hdfs dfs -createSnapshot 路径        (功能描述:对目录创建快照)
hdfs dfs -createSnapshot 路径 名称   (功能描述:指定名称创建快照)
hdfs dfs -renameSnapshot 路径 旧名称 新名称 (功能描述:重命名快照)
hdfs lsSnapshottableDir         (功能描述:列出当前用户所有可快照目录)
hdfs snapshotDiff <snapshotDir> <from> <to>
hdfs snapshotDiff 开启快照的目录  快照名1 快照名2 (功能描述:比较两个快照目录的不同之处)
hdfs dfs -deleteSnapshot <path> <snapshotName>  (功能描述:删除快照)
# 实例
# 开启快照功能
hdfs dfsadmin -allowSnapshot /hadoop-2.7.7
#Allowing snaphot on /hadoop-2.7.7 succeeded

#关闭快照功能
hdfs dfsadmin -disallowSnapshot
#Disallowing snaphot on /hadoop-2.7.7 succeeded

#创建快照
hdfs dfs -createSnapshot /hadoop-2.7.7 2020_7_22hadoop
#Created snapshot /hadoop-2.7.7/.snapshot/2020_7_22hadoop

#重命名快照
hdfs dfs -renameSnapshot /hadoop-2.7.7 2020_7_22hadoop 2020_7_23hadoop

#删除快照
hdfs dfs -deleteSnapshot /hadoop-2.7.7 2020_7_23hadoop
  • 保存文件

    • 副本
      两个或者多个完全独立的文件
      缺点:会占用两份相同的存储空间

    • 快照
      创建快照时开始记录状态,
      当文件发生改变时,快照只记录改变
      快照占的文件大小只有修改过的大小,
      不会占用和源数据相同的完整存储空间

数据处理的两种方式

离线计算/批处理

  • 特点:
    输入和输出都是固定的
    输入的文件是提前写好的死文件
    如果处理逻辑不变输出的文件结果也不会改变

实时计算/流式计算/流处理

  • 特点:
    随着数据的产生 不断产生-不断计算-不断存储-不断展示

初识MapReduce

  • 组成
    每个MR程序都至少要写三个类

    1. Mapper类
        setup() 用来作为mapper的初始化方法,如果有资源需要加载,可以再这个方法中实现(用的不多)
        map(k , v , context)执行业务逻辑的方法
        每条数据过来都会执行一次
        cleanup() 用来作为mapper的结束方法,释放一些资源(用的不多)
        run(){
            setup()
            while(context.nextKeyValue()){
                map(k , v , context)
            }
            cleanup()
        }
    2. Reducer类
        setup()
        reduce(k , iter<v> ,context)
        框架在Mapper结束后按照Key对数据进行排序
        reduce其实就是给程序员提供一个可以对相同Key的value进行聚合的机会
        cleanup()
        run()
    3. Driver类
    Job类是一个Hadoop任务的主体
    Driver类中会写main方法作为MR程序的入口
     main方法中我们要获取Job实例并组装Job
        mapper.class
        reducer.class
        driver.class
        map,reducer的输出类型
        输入输出路径

You must be logged in to post a comment.