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

news/2024/11/23 2:50:42/

分布式大数据处理框架

  • 可靠
  • 高效
  • 可伸缩

包含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方法

http://www.ppmy.cn/news/730971.html

相关文章

xm-select的简单使用

基于客户需求 需要一个select 多选 下拉框。 前台框架使用layUI 于是进行查找—》formSelects 4.x 这是layUI的一个第三方插件 但是看了一下发现已经停止维护了!!! 后来使用 xm-select 官网:https://maplemei.gitee.io/xm-select…

-xms -xmx无效

java内存和linux中内存的关系 -xms -xmx无效 -xms -xmx无效 在查询生产问题时发现-xmx无效,jvm这个进程所产生的内存竟然远-远超出了-xmx,怎么回事? 以下是个人的推断,没有去认真学习操作系统的进程管理。在操作系统中能控制的一…

xm-select使用

最近项目上需要加载一个问题分类下拉框,数据量不是普通的六七个,还需要有搜索功能,原生的下拉框是满足不了了, 于是使用layui的第三方组件xmSelect,功能是是非常强大的,分页,搜索,分组等等 如果需要展示更多列的数据,可以使用tableSelect layui.config({base: ./layui_exts/xmS…

xm-select动态数据分组多选

xm-select-v1.2.1 主页资源可免费下载~ 先看结果 js code <script src"../static/xmSelect/xm-select.js"></script><div id"demo" class"xm-select-demo" style"width: 300px; margin: 20px;"></div><sc…

2022-07-28 xm-select 的使用

简介(文档) 始于layui的一个多选解决方案。 前身formSelects , 由于渲染速度慢, 代码冗余, 被放弃了 xm-select使用了新的开发方式, 利用preact进行渲染, 大幅度提高渲染速度, 并且可以灵活拓展 第一步: 下载 第二步: 引入 xm-select.js 第三步: 写一个<div id"demo1…

XM验证

http://www.w3school.com.cn/xml/xml_dtd.asp 拥有正确语法的 XML 被称为“形式良好”的 XML。 通过 DTD 验证的 XML 是“合法”的 XML。 ------------------------------------------------------------------------------- 形式良好的 XML 文档 “形式良好”或“结构良好”的…

Xms Xmx含义

Xms 我猜测是EXtended Memory Size可扩展的内存大小&#xff0c;Xmx是EXtended Memory Max Size 可扩展的最大内存(就算不是,这样理解记忆也挺好的) Xms 通常为操作系统可用内存的1/64大小 Xmx 是对堆区的内存配置&#xff0c;Xms是初始化的内存大小&#xff0c;Xmx是堆的最…

Xcode配置SFML教程【MacOS M1 arm64】

苹果电脑是个非常麻烦的东西&#xff0c;兼容性不高&#xff0c;许多配置需要自己安装完成&#xff0c;我是吃尽了苦头&#xff0c;极力建议换台好的游戏本。但如果你跟我一样笨笨买了这个电脑一时又换不了&#xff0c;那么希望这个教程帮到你。 官方教程链接&#xff1a;SFML…