三大发行版本

Hadoop三大发行版本:Apache、Cloudera、Hortonworks。

  • Apache版本最原始(最基础)的版本,对于入门学习最好。2006
  • Cloudera内部集成了很多大数据框架,对应产品CDH。2008
  • Hortonworks文档较好,对应产品HDP。2011

Hortonworks现在已经被Cloudera公司收购,推出新的品牌CDP

1.x,2.x,3.x区别

image.png

hdfs架构

  1. namenode(nn): 存储文件的元数据, 比如文件名, 目录结构, 文件属性(生成时间, 副本数, 文件权限),以及每个文件的块列表和块所在的DataNode等
  2. DataNode(dn): 在本地文件系统中存储文件块数据, 以及块数据的校验和
  3. Secondary NameNode(2nn): 每隔一段时间对namenode进行备份

    Yarn架构

    image.png

    MapReduce架构

    MapReduce将计算过程分为两个阶段:Map和Reduce
    1)Map阶段并行处理输入数据
    2)Reduce阶段对Map结果进行汇总

    hdfs, yarn, mapreduce关系

    image.png

    HDFS模拟实现

image.png

yarn模拟实现思路

image.png

三大组件

解决海量数据的存储问题

分布式文件系统(HDFS)

  1. 具有分布式的集群结构 我们把这样实际存储数据的节点叫做 datanode
  2. 具有一个统一对外提供查询 存储 搜索 机器节点
    对外跟客户端统一打交道
    对内跟实际存储数据的节点打交道
  3. 具有备份的机制 解决了机器挂掉时候数据丢失的问题
  4. 具有统一的API 对客户端来说不用操心你集群内部的事情 只要我调用你的API,
    我就可以进行文件的读取 存储 甚至是搜索
    甚至我们希望可以提供一个分布式文件系统的引用 fs= new FileSystem()
    fs.add .copy .rm

与其他文件系统不同的是,HDFS一个典型的数据块大小是128M(HDFS在2.7版本默认的64M升到128M),HDFS中的每个文件都会按照128MB切分成不同的数据块,每个数据块会按照设置的副本策略分布到不同的Datanode.

HDFS数据块远大于其他文件系统,这主要针对大规模的流式数据访问而做的优化.更大的数据块意味着更多文件顺序读写和更小的数据块管理开销

解决分布式数据计算(处理)问题

分布式的编程模型 (MapReduce)
思想 分而治之:先局部 再总体
map(映射) reduce(聚合)
整天上作为一个编程模型:需要给用户提供一个友好 便捷的使用规范
比如:你要继承什么东西 配置什么 怎么去调用 怎么去执行

  1. 继承我们的一个mapper 实现自己的业务逻辑
  2. 继承我们的一个reduce 实现自己的业务逻辑
  3. 最好可以提供可供用户进行相关配置的类 或者配置文件

作为一个分布式计算框架 最好我们还提供一个程序的总管(MrAppmater) 用来管理这种分布式计算框架的内部问题:启动 衔接 等等

解决了分布式系统的资源管理问题

分布式资源管理(yarn)
为了更好的管理我们集群的资源 最好设计成分布式的架构

  1. 需要一个统一对外提供服务的节点(某一机器 或者机器上的一个进程 一个服务)
    叫做资源管理者 ResourceManager
  2. 需要在集群中的每台机器上有一个角色 用来进行每台机器资源的管理 汇报
    叫做节点管理者 nodemanager

    hadoop生态圈以及各组成部分的简介

    各组件简介
    重点组件:
  • HDFS:分布式文件系统
  • MAPREDUCE:分布式运算程序开发框架
  • HIVE:基于大数据技术(文件系统+运算框架)的SQL数据仓库工具
  • HBASE:基于HADOOP的分布式海量数据库
  • ZOOKEEPER:分布式协调服务基础组件
  • Mahout:基于mapreduce/spark/flink等分布式运算框架的机器学习算法库
  • Oozie:工作流调度框架
  • Sqoop:数据导入导出工具
  • Flume:日志数据采集框架

    项目架构

image.png

目录介绍

  • bin目录:存放对Hadoop相关服务(HDFS,YARN)进行操作的脚本
  • etc目录:Hadoop的配置文件目录,存放Hadoop的配置文件
  • lib目录:存放Hadoop的本地库(对数据进行压缩解压缩功能)
  • sbin目录:存放启动或停止Hadoop相关服务的脚本
  • share目录:存放Hadoop的依赖jar包、文档、和官方案例