IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Hadoop基础组件思维导图 -> 正文阅读

[大数据]Hadoop基础组件思维导图

这篇文档主要是以前我学习Hadoop期间做的思维导图自动生成的Markdown,因为当时还在初学阶段,内容都比较基础,具体思维导图在最下面

Hadoop

Linux

环境部署

  • VMware安装 CentOS安装

  • 网络环境配置

    • BOOTPROTO、ONBOOT、IPADDR、NETWMASK、GATEWAY、DNS
    • 测试:ping外网、ping主机、主机ping虚拟机

常用命令

  • 三个最常用

    • cd,pwd,ls
  • 文件/文件夹操作

    • 文件处理命令

      • mkdir,touch,rm,mv,cp,ln
    • 文件查看命令

      • cat,head,tail,less,more,vim/vi,echo
    • 文件查找命令

      • find,which,whereis,grep(搭配管道使用)
    • 文件解压/打包命令

      • gzip(-d/gunzip),bzip2,zip,lz,tar(zxvf)
    • 其他命令

      • help,info,man date,du,df,ps,netstat,free

vi/vim(重点)

  • 一般模式

    • a,A,i,I,o,O,x,nx,dd,ndd,dG,D,yy/Y,nyy/nY,p,P,gg,G,nG,r,R,u,ctrl+r
  • 底行命令模式

    • :set nu,:set nonu,:n,:/string,:?string,:%s/lod/new/g,
      :n1,n2s/lod/new/g,:wq,:w>>a.txt,shift+zz
  • 插入模式

    • esc

用户与权限管理(重点)

  • 用户

    • 创建 useradd,删除userdel,修改usermod,密码修改 passwd
  • 用户组

    • 创建 groupadd,删除groupdel,修改groupmod,gpasswd -a/-d 附加组或从组中删除, groups
  • 权限管理

    • chmod,chown,chgrp

软件管理

  • 二进制安装(tar),rpm(ivh/u/e/qa)安装,yum在线安装,源码安装

scp

  • scp file 远程用户名@远程服务器IP:目录

免密登录(重点)

  • ssh-keygen -t rsa --> ssh-copy-id 主机名
  • 实现流程原理(7步)

定时任务(* * * * *),时间同步ntpdate

shell脚本(重点)

HDFS

hdfs概念

  • 4v特征(重点)
  • 三篇论文

hdfs安装

  • 单节点

    • 本地模式

    • 伪分布式模式

      • 是分布式的一种特殊情况,相关守护进程运行在一个节点上,程序之间都是独立的(各自独占一个JVM)
  • 多节点

    • 完全分布式

      • 相关守护进程运行在不同节点上,namenode选择性能较好的一个节点,secondarynamenode不与namenode在同一台节点上

hdfs块设计思想(重点)

  • hdfs中块的设计优势

      1. 对于较大的文件,不需要担心一个磁盘是否可以存储,hdfs会将切分成块并存储在不同节点上
      1. 更易于进行数据的备份和容错,只要将每个块复制到少数几个物理几点上即可,一个节点故障,可以直接从其他节点读取块数据。
      1. 容易进行负载均衡,不会因为单个文件过大而使某些节点负载过高
      1. 在文件的并行传输中,因为hdfs中块的大小是固定的,所有不会因为单个文件过大而造成网络瓶颈
  • hdfs的块大小多少合适

    • 文件的读写主要分为寻址和传输两个过程,一般认为寻址时间占整个时间的百分之一最优秀,而一般的磁盘寻址时间平均是10ms,所以块的大小选择为磁盘1s能传输的大小较为合适,而普通磁盘的传输速度为100m/s,因此块大小就选择为128m

hdfs体系结构

  • 主从结构 master/slaves

    • 一个Namenode,多个DataNode
  • NameNode的作用

    • 管理hdfs的命名空间,在内存中维护数据块的存储信息,并以fsimage和edit进行持久化
    • 实施副本冗余策略
    • 处理客户端的访问请求
  • DataNode的作用

    • 真正负责数据存储的进程
    • 执行数据块的读写操作
    • 心跳机制 3秒一次,超过10分30秒(5 * 2 + 10 * 3)没有进行心跳则被认为宕机
  • SecondaryNamenode

    • 帮助NameNode定期合并fsimage个edit文件
  • Clint接口

    • 提供API,与NameNode交互获取文件存储位置,与DataNode交互读写文件

hdfs其他工作机制

  • 开机流程(fsimage和edit的合并),安全模式(最小副本冗余策略)
  • 检查点机制
  • 机架感知(2.8.2前后区别)之前是前两个在一起,之后是后两个在一起,节点动态上下线

读写流程(重中之重)

  • 读流程(5步)
  • 写流程(9步)

API

  • 上传,下载,创建目录,删除目录,删除文件,重命名

Zookeeper

概念与特点

  • 是一个分布式集群,一个leader,多个follower
  • 正常服务的节点数必须过半
  • 每个几点上的数据都完全相同

数据模型

  • 类unix/linux的树形目录结构
  • 每一个节点(znode)上都可以存储数据,最大为1M,每一个znode还可以存储子znode的名称,相当于文件存储系统中的目录

应用场景(重点)

  • 集群管理节点的管理(HA)
  • 服务节点的动态上下线
  • 分布式队列
  • 分布式锁

选举机制(重点)

  • 开机过程中的选举

    • 同时开机,权重最大的成为leader
    • 依次开机,第一个过半的节点成为leader
  • 权重

    • epoch > zxid > serverid

MapReduce

概念与核心设计思想(重点)

  • 移动计算而非移动数据,分而治之,再归并处理

  • 分为Map阶段和Reduce阶段

    • 原始数据 --><k1,v1>—>map函数—><k2,v2>
    • <k2,list>—>reduce函数—><k3,v3>

入门案例: wordcount编程思想

分片机制(重点)

  • 逻辑概念,实际上只是一个对象,path指文件的逻辑路径,start指此分片要处理的数据相对于整个文件的开始偏移量,length指此分片的大小,通常为128M,Sring[] hosts指分片描述的原始数据实际存储的datanode主机名

  • 与块的区别

    • 分片是逻辑数据,只是记录了一些元数据信息,可能跨界点,因为有1.1倍的冗余,而块是实际的存储单元
    • 分片大小一般为128M,但最后一个分片通常不是128M,可能大于也可能小于
    • 分片数决定了MapTask数量

MapTask执行流程(重点)

ReduceTask执行流程(重点)

Shuffle流程(重中之重)

  • map端shuffle
  • reduce端shuffle

分区器

  • 默认为hashPartitioner,使用key.hashCode%numReduceTask
  • 可以自定义分区,必须从0开始并连续,reduceTask数又分区数决定

经典案例

  • topN,自定义输入输出guize,MapJoin,ReduceJoin

Yarn

  • 是分布式计算框架的资源调度框架

    • ResouceManger(schedule调度器)

      • 管理整个集群的资源
    • NodeManager

      • 管理单个节点的资源
    • appmaster

      • 管理单个job
    • container

      • 为job提供运行时的内存、cpu、磁盘等
  • yarn的job提交流程(重中之重)

企业级优化

Hive

概念

  • hive是一个数仓工具,可以将hdfs上具有结构化的文件映射成一张表(映射关系时元数据),然后使用类sql语言,进行数据的管理(读或写),底层使用mapreduce引擎,或者时spark、tez引擎

优缺点

  • 优点

    • 学习成本低,拓展性好,适合离线分析,良好的容错性,提供统一的元数据管理
  • 缺点

    • hive的HQL表达能力有限(迭代算法无法表达,数据挖掘方面)
    • hive效率比较低,调优计较困难

hive体系结构(重点)

  • 接口层

    • CLI,JDBC,WebUI
  • 元数据

    • 存储到关系型数据库中
  • 驱动器Drivver

    • SQLParser,Compiler,Optimizer,Executer
  • hadoop

hive工作原理(重点)

hive的安装

  • 内嵌模式

    • 使用derby作为原数据库,只支持单session,并且不能切换目录
  • 本地模式

    • hive客户端会内置开启一个metastore服务项(hive客户端与服务项在同一节点上)
  • 远程模式

    • hive客户端的连接服务需要单独手动开启,比如metastore服务项,hiveserver2服务项

表类型

  • 内部表

    • 又叫managed_table,删除时会同时删除文件和元数据,一般用于测试

      • 转为内部表 alter table tableName set tblproperties(‘EXTERNAL’=‘FALSE’)
  • 外部表

    • 创建时需要使用 external 关键字,可以使用 location 指定目录路径,删除时只会删除删除元数据,不会删除目录文件,一般用于共享使用的表,推荐使用

      • 转为外部表 alter table tableName set tblproperties(‘EXTERNAL’=‘TRUE’) TRUE必须大写

hive的库操作和表操作(HQL)

hive的常用字句(重点)

  • map-join

    • left semi join(和exists的原理一样)

分区表

  • 将数据文件分散到不同的目录下存储(粒度较粗),提高查询速度,分区字段时表外字段

分桶表

  • 将同一个目录下的文件分散成多个文件进行存储(粒度更细),分桶字段时表内字段

    • 分桶表适合进行对数据的抽样
    • join操作时可以提高MR的查询效率

函数

  • 内置函数

    • 日期函数

      • unix_timestamp(),from_nuixtime,datediff(),months_between(),last_day(),next_day(),date_add(),add_months(),date_format()
    • 数值函数

      • round(),ceil(),floor(),
    • 字符串函数

      • lower(),upper(),length(),concat(),concat_ws(),substr(),split()
    • 窗口函数

      • 聚合函数 over()

        • window字句

          • PRECEDING 往前,FOLLOWING 往后,CURRENT ROW 当前行,UNBOUNDED 起点,UNBOUNDED PRECEDING 表示从前面的起点,UNBOUNDED FOLLOWING 表示到后面的终点
    • 排名函数

      • row_number(),rank(),dense_rank()
    • 序列函数

      • lag(),lead(),ntile(),last_value(),first_value()
    • 其他函数

      • nvl(),isnull(),case when then else end, if(p1,p2,p3),coalesce(col1,…)反回第一个不为空的值
  • 自定义函数

serde类型

  • lazySimpleSerde
  • csv,tsv
  • jsonserde
  • 正则表达式regexp

视图,索引,优化

HBase

概述

  • hbase是一个开源的、分布式的、多版本的、可拓展的、非关系型数据库,又java编写,建立在hdfs基础之上,提供高可靠性,高性能的,列式存储的近实施读写的nosql数据库系统

  • 特性(相对于关系型数据库)

    • HBase的表模型与关系型数据库的表模型不同:
    • HBase的表没有固定的字段定义;
    • HBase的表中每行存储的都是一些key-value对
    • HBase的表中有列簇的划分,用户可以指定将哪些kv插入哪个列族
    • HBase的表在物理存储上,是按照列簇来分割的,不同列簇的数据一定存储在不同的文件中
    • HBase的表中的每一行都固定有一个行键,而且每一行的行键在表中不能重复
    • HBase中的数据,包含行键,包含key,包含value,都是byte[ ]类型,HBase不负责为用户维护数据类型
    • HBase对事务的支持很差
    • HBase基于hadoop : HBase的存储依赖于HDFS

HBase的体系结构

  • Client,Zookeeper,HMaster,HRegionServer,Hlog,Hregion, Store,Memstore,HStoreFile,HFile
  • 组件之间的关系

HBase的安装

  • 单机模式,伪分布式模式

  • 完全分布式模式

    • 一个HMater,多个RegionServer

HBase Shell

  • NameSpace操作

    • list_namespace,list_namespace_tables,describe_namespace,alter_namespace,drop_namespace
  • Table的DDL操作

    • create,describe(desc),list,alter(修改表,追加列族,删除列族),disable tablename–>drop tablename
  • Table的CRUD操作

    • put(增,改),scan,get,delete,exists,disable,enable,count(统计行数),truncate

HBase API

  • Namespace DDL
  • Table DDL
  • Table CRUD
  • HBase 过滤器

HBase的工作机制

  • 存储机制

  • Region的管理

    • 预分区
    • 手动管理
  • 寻址机制

    • 第 1 步:Client 请求 ZooKeeper 获取.META.所在的 RegionServer 的地址。
      第 2 步:Client 请求.META.所在的RegionServer 获取访问数据所在的 RegionServer 地址,Client会将这张表的region信息和.META.的相关信息 cache 下来,以便下一次快速访问。
      第 3 步:Client 请求数据所在的 RegionServer,获取所需要的数据。
  • 读写流程

    • 读流程

      1. 客户端先向zookeeper请求获取meta表所在regionserver的地址
      2. 再到对应的regionserver中查看meta表,找到需要写数据的region和所在的regionserver,并把这个表的region信息和meta表的位置缓存到客户端的cache中,以便加速下一次访问速度
      3. 再与需要读操作的regionserver进行通信
      4. 到blockcache中先读取,再到memstore和storefile中读取。
      5. 将需要读取的数据的所有版本merge到内存中,找到最新的一个版本
      6. 拿到最终的数据后将数据信息缓存到blockcache中
      7. 将结果返回给客户端
    • 写流程

      1. 客户端先向zookeeper请求获取meta表所在regionserver的地址
      2. 再到对应的regionserver中查看meta表,找到需要写数据的region和所在的regionserver,并把这个表的region信息和meta表的位置缓存到客户端的cache中,以便加速下一次访问速度
      3. 再与需要写操作的regionserver进行通信
      4. 将数据按顺序追加到hlog(WAL)中
      5. 把数据写入到对应store的memstore中
      6. 向客户端返回确认信号
      7. 当memstore达到flush条件后,将memstore中的数据刷写成hfile文件

HBase与其他框架的整合

  • hbase与hive整合
  • hbase与mr整合

布隆过滤器

  • ROW

    • 行键使用布隆过滤器
  • ROWCOL

    • 列键使用布隆过滤器

rowkey设计原则

HBase企业级优化

这里是具体的思维导图

在这里插入图片描述

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-07-11 16:42:24  更:2021-07-11 16:44:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/1 20:51:29-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码