hadoop生态圈学习总结

## hadoop生态圈

### 1、zookeeper

​    zookeeper是一个分布式协调服务组件,具有数据存储和通知机制两大特性

​    启动命令:安装路径下   bin/zkServer.sh start

#### 1.1、组成

​    1、集群由一个leader和多个follower组成

​    2、leader负责进行投票的发起和决议,更新系统状态

​    3、follower用于接受客户端请求并向客户端返回结果,并且在选举leader中参与投票

#### 1.2、特点

​    1、集群只要由半数以上节点存活就能正常服务

​    2、全局数据一致,每个follower都会同步leader的数据。客户端无论访问哪个节点数据都是一致的

​    3、来自同一个客户端的多个请求,会按照其请求顺序依次执行

​    4、数据更新原子性,一次数据更新要么成功要么失败

​    5、实时性、在一定时间范围内,全局数据一致的特性能够保证客户端读取到的是最新的数据

#### 1.3、zookeeper节点类型

​    zookeeper的数据是存放在节点上的默认每个节点能存放1M的数据

zookeeper有两种节点类型:

​    短暂(ephemeral):临时的、客户端和服务器端断开连接后,创建的节点自己删除

​    持久(persistent):永久的,客户端和服务器端断开连接后,创建的节点不删除

zookeeper的两种节点类型,有四种形式的目录节点:

​    持久化目录节点分为:持久化目录节点和持久化顺序编号目录节点两种形式

​    临时目录节点分为:临时目录节点和临时顺序编号目录节点两种形式

#### 1.4、作用

​    1、hbase依赖于zookeeper,zookeeper维护了hbase元数据表的存放位置

​    2、hbase、hadoop、spark等集群的高可用依赖于zookeeper的选举机制

### 2、hive数仓工具

#### 2.1、数据仓库

​    概念:数据仓库是一个面向主题的、集成的、随时间变化的、信息本身相对稳定的用于支持管理决策的数据集合。

​    数仓分层:

​        一般分为:源数据层 (ODS)、数据仓库层或数据集市(DW或DM)、数据应用层(APP、一般存放在数据库)

​        数据仓库层又可细分为:. 数据明细层(DWD)、数据中间层(DWM)、 数据服务层(DWS)

#### 2.2、hive

​    Hive是基于hadoop平台的数据仓库工具,他能将结构化的文件映射成一张表,并且提供类SQL的查询功能HQL。

​    HQL的底层原理是:将HQL语句转换成MapReduce程序在hadoop平台执行。

​    hive元数据服务启动方式:hive安装目录下:nohup ./bin/hive --service metastore &

​    hive远程链接服务:   nohup bin/hive --service hiveserver2 & 

#### 2.3、hive优缺点

​    优点:

​    1、采用类SQL语法,操作简单容易上手

​    2、避免了写大量的mapreduce程序,减少了开发人员学习成本,和开发成本

​    3、基于hadoop,可以处理分析海量数据

​    4、支持用户自定义HQL函数,进行自定义开发,用法灵活

​    5、存储能力强,理论上hadoop集群能有多大,hive的存储能力就有多强

​    缺点:

​    1、底层是mapreduce,计算延迟很大,只适合离线分析,不适合用于实时性要求较高的场景

​    2、底层是mapreduce,处理中间结果存放在磁盘中,不适合做迭代式计算

​    3、hive调优比较困难,只能粗粒度调优

​    4、HQL语句表达能力有限,不擅长做数据挖掘

#### 2.4、hive元数据信息维护

​    hive自带一个小型数据库,存放hive中表的元数据,但是,这个自带的数据库不支持并发访问,很不方便,所以一般hive的元数据信息维护在mysql数据库中

#### 2.5、hive数据安全

​    hive数据仓库可以加入external关键字创建外部表,好处是删除外部表时只删除表结构,源数据不会被删除,不会因为误删而丢失数据。

#### 2.6、hive表特色

​    hive表有分区表,分桶表,用于给海量数据划分界限,提高查询效率

​    HQL提供了开窗函数over()进行分区查询,特别方便

#### 2.7、hive优化

​    1、配置fetch抓取属性为more,对于只需要map就能处理的查询可以不适用mapreduce,直接读取文件

​    2、在数据量很小的情况下可以开启本地模式,在一台机器上处理所有数据减少任务等待

​    3、开启严格模式,可以防止用户执行那些影响不好的的查询。

### 3、HBase

​    hbase是一个分布式的面向列的数据库,是一个依赖于hdfs的非关系型数据库

​    启动方式:安装路径下:bin/start-hbase.sh

​    webui端口:16010

#### 3.1、特点

​    1、海量数据存储

​    2、列式存储

​    3、极易扩展

​    4、高并发

​    5、稀疏,某个列的数据可以为空,且不占用空间

#### 3.2、组件

​    zookeeper:做HMaster的高可用、维护元数据的位置信息、监控各个regionServer状态(发现异常通知HMster)

​    HDFS:hdfs为hbase提供底层数据存储服务,数据多副本高可靠

​    client:提供访问HBase的api

​    HMaster:主节点

​        1、监控regionServer

​        2、负责regionServer的故障转移

​        3、处理元数据的变更

​        4、处理region的分配或转移

​        5、负责数据的负均衡

​        6、将元数据的位置信息上传给zookeeper

​    regionServer:数据存储节点

​        1、负责实际存储HBase数据

​        2、处理分配给他的region

​        3、将数据写入hdfs

​        4、维护预写日志Hlog

​        5、处理region拆分(自动分片)
其他组件:

​    Hlog:HBase的预写日志,每个regionServer上都有一份,Hbase读写数据时,并不是直接写入,而是先把数据保存在预写日志中,然后再写入数据,可以防止数据丢失

​    Region:表的分片,Hbase表会根据rowKey切分成多个Region放在不同的regionServer上,一个regionServer上可以有多个不同的Region

​    Store:一个region中有多个Store,一个Store对应Hbase一个列族,一个store含有多个storeFile

​    Hfile:storeFile是以Hfile的形式存放在hdfs上的

#### 3.3、原理

​    读流程:

​        1、client先访问zookeeper,拿到元数据存放位置

​        2、client访问目标节点读取元数据信息

​        3、根据命名空间、表明、rowkey在元数据中找到目标region信息

​        4、根据region信息找到对应的regionserver

​        5、访问这个regionserver查找相应的region

​        6、先从memstore缓存中拿取数据,如果没有。则到blockCache块缓存(二级缓存)中读取

​        7、如果块缓存中还没有,再到storefile上读,读取的数据并不是直接返回客户端,而是先写入块缓存,再返回给客户端

​    写流程:

​        1、client访问zookeeper获取元数据表位置信息

​        2、根据rowkey在元数据表中查找其所属regionServer位置

​        3、client访问目标RegionServer,发送写请求

​        4、RegionServer将数据写入Hlog(防止数据丢失)

​        5、Regionserver将数据写入内存(memStoge),当memStoge大小到达阈值时会将内存中的数据写入磁盘,然后删除Hlog中的历史数据

​        6、回复客户端,数据写入成功

#### 3.4、调优

​    1、高可用:防止主节点单点故障

​    2、rowkey设计:唯一原则、散列原则(最大64K,推荐8-16字节)

​        可以在一定成都上防止数据倾斜

​    3、预分区提高hbase性能(一般可以用于解决热点问题)

​    4、内存优化

#### 3.5、HBase快的原因

​    1、二级缓存,将数据缓存到内存中,以便快速读写

​    2、布隆过滤器:可以快速的排除数据不在哪个区间

​    

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值