hadoop生态圈-- 个人笔记学习01

分布式大数据处理框架

  • 可靠
  • 高效
  • 可伸缩

包含HDFS MapReduce等框架

分层

  1. 数据来源
  2. 数据传输
  3. 数据存储 – HDFS
  4. 数据管理
  5. 数据计算
  6. 任务调度
  7. 业务模型

HDFS 分布式文件系统

  • 高容错性
  • 低廉硬件适配
  • 高吞吐量
  • 超大数据集

client: 提交读取请求

  1. HDFS的api编写程序交互
  2. Hadoop的Datenodes

NameNode: 全局把控

DateNodes:数据存储

两个node对他们进行操作处理。client类似仓库管理员,Namenode类似存储系统,而DateNodes相当于存储的货柜。
所以,NameNode响应client请求,DataNode处理产品存取,并根据NameNode反馈数据

Block:一个文件拆分成多个Block存储

详细阐述

NameNode:client请求响应、维护文件系统的目录结构、管理文件和block之间关系,block和DataNode的关系。对HDFS目录、文件、块做类似增删改等操作。块存储于存储中只有一个active状态的NameNode,负责对HDFS管理

特点

  • NameNode是中心服务器,单一节点,管理namespcae和client对file的访问
  • NameNode负责文件元数据操作,DataNode处理文件内容的读写请求。文件相关数据流数据流不经过NameNode,只询问它与关联的DataNode
  • NameNode控制副本存放在哪个DataNode —— 全局情况决定放置块。
    • 尽量保证读取最近的副本,降低块消耗与读取时延
  • 管理data block的复制,周期性从cluster的每个DataNode接受 心跳信号(表示这个DataNode节点工作正常)与块状态报告(包含了这个DataNode所有数据块的列表)

DataNodes:数据块 ( Block ) 文件被分成多个 block 存储在磁盘上。文件有多个副本。Namenode和Client进行存储、检索block,定期向NameNode发送心跳信息、汇报本身、所有的block信息,健康状况

特点

  • 数据块在 DataNode 以文件存储在磁盘上
    • 数据本身
    • 元数据(数据块长度,校验和,时间戳)
  • DataNode启动,向NameNode注册。周期性向NameNode上报块信息
  • 心跳3seconds 一次,返回结果附带 一个命令(NameNode发送给DataNode),如复制数据块,删除数据块。若超10分钟无心跳,认为该节点不可用
  • cluster可以安全加入or 推出某些机器

Block:可靠性的基础 —— HDFS把文件分为大小一样的块(除了最后一块),通过copy实现容错。大小和副本系数针对文件配置。HDFS文件时一次写入的。限制一个时间内只能由一个用户写入

  • 文件分成块,大小默认128M,每个块多个副本存储在不同机器,副本数在文件生成的时候指定(默认3
  • NameNode是主节点,存储文件元数据(文件名,文件目录结构,文件属性,生成时间,副本数,文件权限,文件块列表和所在的DataNode)
  • DataNode在本地 File System存储文件块数据,块数据校验和
  • 创建、删除、移动、重命名文件。文件创建、写入、关闭后无法修改
    NameNode + 多个DataNode(多数情况下NN和DN在不同节点上

Hive

处理结构化、半结构化数据。SQL语句转换MapReduce任务查询,分析数据。

根据业务匹配需求 —— 多种输入输出格式存储格式、数据类型。根据具体业务配置。分区、桶的方式组织、管理数据,便于查询、分析数据 —— 还有自定义函数

扩展、易用、灵活、可定制。处理大规模数据

把sql语句转换为MapReduce任务运行。

Hive的表 == HDFS的目录、文件(按照表名把文件分开)

  • 分区表:分区的值就是子文件

系统架构

  • CLI: shell命令行
  • JDBC/ODBC 为Hive的Java
  • WebGUI 浏览器访问Hive
  • Thrift: 可扩展、跨语言的服务开发
    • 跨语言无缝衔接
  • 解释器编译器,优化查询计划的生产,查询计划存储在HDFS,后有MapReduce调用执行
  • Hive数据存在HDFS中,大部分查询由MapReduce完成(包括*的查询不会产生
  • Hive将元数据存在metastore中。元数据包括表的名字、表的列、分区、属性 —— 表的属性(是否为外部表),表数据所在目录

Hive的Metastore组件是Hive元数据存放地

  • Metastore服务
  • 后台数据存储(关系数据库

默认状况下,Metastore和Hive服务安装在一起,在同一个进程中。

Metastore独立安装于集群里(与Hive剥离),Hive远程调用Metastore服务,让他们运行在不同的进程里 —— 保证Hive的稳定性。 Hive依赖于HDFS与YARN

MapReduce

分而治之思想。拆分的前提 —— 任务可以并行计算且没有依赖关系。 Map负责分,Reduce负责合起来。

使用Map和Reduce两个函数进行高层的并行编程抽象模型。

  • Map:对一组元素重复式处理
  • Reduce,对Map结果进行进一步结果整理

处理类型 : key value键值对. .

  • 统一的计算框架,隐藏系统层面细节
  • 把what need to do 和 how to do分开,提供抽象和高层变成接口框架

分布式程序部署到hadoop集群运行,node扩展到成百上千个内容.增加机器扩展计算能力,计算数量基本和节点数增长保持线性增长。任何单一机器节点宕机了,它可以把上面的计算任务转移到另一个节点上运行,不影响整个作业任务得完成(hadoop实现

局限

  1. 实时计算差
  2. 多用于离线作业,无法实现秒级数据响应
  3. 无法进行流式计算(动态数据),该主要针对静态数据集

Hadoop MapReduce编程

需要有三类实例进程

  • MRAppMaster
    • 整个程序过程调度、状态协调
  • MapTask
    • map阶段数据处理 —— 并行
  • ReduceTask
    • reduce阶段数据处理流程 —— 依赖Map的输出结果

Mapper,Reducer,Driver(提交运行mr程序的客户端驱动)。mapper,reducer,前两者继承自己的父类。mapper在map方法中写逻辑业务,reducer在reduce()中写业务,程序需要Driver提交

工作流程

map,shuffle,reduce

  • map

数据源读取到数据,默认是得到kv键值对,处理后输出kv键值对

  • shuffle

map的数据会进行:分区、排序、分组等动作重组 —— 洗牌的逆过程

  1. 分区:key相同在一个分区,一个分区被同一个reduce处理
  2. 排序:key字典序排序
  3. 分组:key相同为一组,一组调用reduce处理一次
  • reduce
    shuffle的数据进行聚合处理,输出结果kv对

序列化机制

serialization:结构化对象转化为字节流 —— 网络传输or写入持久存储的过程

deserialization:字节流转化为结构化对象,重新创建对象

Why serializate?

  • 持久化格式
  • 通信
  • 数据拷贝,克隆机制
    java中:对象标识为二进制字节数组。实现序列化,需要实现java.io.serializable的接口。

而在hadoop中,使用writable接口实现序列化机制。但没有比较功能 —— 和java的comparable合并,提供一个接口WritableComparable

|hadoop数据类型|java||

实践如下:
https://segmentfault.com/a/1190000040852791

Map阶段执行过程

  1. 目录文件按标准切片(一般切片大小就是块大小
  2. 按切片数据解析为key value对
  3. 调用map解析出来一个kv对就是用一次map方法
  4. 对3的结果分区(默认一个区,分区数量就是reducer任务运行的数量,默认一个reducer
  5. 分区的value排序(如果key相同按value排序,
  6. 数据局部聚合 combiner处理,key相同就会进行一次reduce方法(默认没有,因为后续还有reducer

reduce阶段

  1. reducer主动从Mapper任务复制 kv对
  2. 复制到reducer的本地数据进行合并
  3. 对排序后的kv对调用reduce方法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值