Hadoop

254 阅读4分钟
原文链接: www.cnblogs.com

基础学习:

  1. Hadoop是一个开源的大数据框架
    Hadoop是一个分布式计算的解决方案
    Hadoop = HDFS(分布式文件系统)+MapReduce(分布式计算)
  2. HDFS分布式文件系统:存储是大数据技术的基础
    MapReduce编程模型:分布式计算是大数据应用的解决方案。

HDFS总结:

  1. 普通的成百上千的机器
  2. 按TB甚至PB为单位的大量数据
  3. 简单便捷的文件获取
  4. HDFS概念 i. 数据块:数据块是抽象块而非整个文件作为存储单元,默认大小为64MB,一般设置为128M,备份*3。比如:10MB独占数据块,300MB占128M ii. NameNode:【主】
    管理文件系统的命名空间,存放文件元数据
    维护着文件系统的所有文件和目录,文件与数据块的映射
    记录每个文件中各个块所在数据节点的信息 iii. DataNode:【从】
    存储并检索数据块
    向NameNode更新所存储块的列表
    datanode定期向namenode发送心跳,如果namenode没收到则认为挂掉了,会分配到其他节点 iv. HDFS优点
    适合大文件存储,支持TB、PB级别的数据存储,并有副本策略
    可以构建在脸颊的机器上,并有一定的容错和恢复机制
    支持流式数据访问,一次写入,多次读取最高效

    v. HDFS缺点
    不适合大量小文件存储
    不适合并发写入,不支持文件随机修改
    不支持随机读等低延时的访问方式
    思考:(1)NameNode的容错机制,挂掉了怎么办?
    HA(高可用)
    (2)数据块大小多少合适?
    一般为128M,太小查找耗费性能。

    1. HDFS的写流程:
      Data|client <-->NameNode --> DataNode-1|DataNode-2|DataNode-3
    • 客户端向NameNode发起写数据请求
    • 分块写入DataNode节点,DataNode自动完成副本备份
    • dataNode向NameNode汇报存储完成,NameNode通知客户端
    1. HDFS的读流程:
    • 客户端向NameNode发起读数据的请求
    • NameNode找出距离最近的DataNode节点信息
    • 客户端从DataNode分块下载文件

常用HDFS Shell命令

  1. 类Linux系统:
    ls,cat,mkdir,rm,chmod,chown等
  2. HDFS文件交互:
    copyFromLocal,copyToLocal,get,put

Hadoop基础架构

  1. MapReduce简介
    MapReduce是一种编程模型,是一种编程方法,是抽象的理论。
  2. YARN概念
    资源管理:i. ResourceManager: 分配和调度资源 启动并监控ApplicationMaster 监控NodeManager
    ii. ApplicationMaster:为MR类型的程序申请资源,并分配给内部任务。 负责数据的切分。 监控任务的执行及容错。
    iii. NodeManager: 管理单个节点的的资源。处理来自ResourceManager的命令。处理来自ApplicatonMaster的命令。
  3. MapReduce编程模型
    输入一个大文件,通过split之后,将其氛围多个分片
    每个文件分片由单独的机器去处理,就是Map方法
    将各个机器计算的结果进行汇总并得到最终的结果,这就是Reduce方法。 -----spark
  • split阶段
  • Map阶段(需要编码)
  • Shuffle阶段
  • Reduce阶段(需要编码)

Hadoop总结

  1. 存储(HDFS)与计算(MapReduce模型)
  2. 利用shell命令及Python程序操作HDFS

思考:

  1. 如何通过Hadoop存储小文件?
  2. 当有节点故障的时候,集群是如何继续提供服务的,如何读?如何写?
  3. 哪些是影响MapReduce性能的因素?

Hadoop生态圈

Hive --数据仓库 HBase --海量小文件(二次开发) spark --

HBase

高可靠,高性能,面向列,可伸缩,实时读写的分布式数据库
利用HDFS作为其文件存储系统,支持MR程序读取数据
存储非结构化和半结构化数据
RowKey:数据的唯一标识,按字典排序 (如何设计)
Column Family:列族,多个列的集合,最多不要超过3个
TimeStamp时间戳:支持多版本数据同时存在

Spark 大数据计算框架

基于内存的大数据并行计算框架 Spark是MapReduce的替代方案,兼容HDFS,Hive等数据源

  1. spark优势:
    基于内存计算的分布式计算框架
    抽象出分布式内存存储数据结构 弹性分布式数据急RDD
    基于事件驱动,通过线程池复用线程提高性能