【Hadoop】Zookeeper、HBase、Sqoop

Zookeeper

概述

Zookeeper可以监视HDFS系统的name node和data node,HBase也极度依赖zookeeper,因为zookeeper维护了HBase的源数据以及监控所有region server的健康状态,如果region server宕机会通知master 。它也可以避免脑裂(只有一个master大脑)。啊不免,通过分布式锁实现数据的一致性,YARN资源管理也依赖zookeeper,它为YARNresource manager提供节点选举服务。他还管理进入的消息队列。

总的来说,它可以实现任意节点更改,每个节点生效;以及通过分布式锁实现数据的一致性;避免脑裂,保证只出现一个HBase master;并且它保存了HBase的源数据,我要查询zookeeper就能知道当前哪些HBase的region server是活着的;通过watch机制监听zookeeper上某个数据节点的变化,当被监听的节点有变化时,它会主动推送通知给所有监听的客户端。

正是因为zookeeper如此强大,才能构建起如此稳定高效的分布式数据处理平台

特征:

保证系统一致性--为客户展示统一视图

可靠性--如果消息被所有服务器接受,会被所有服务器接受

实时性--a机子写入不会立刻在b展示出来

等待无关--执行快的不等慢的

原子性--成功或失败,没有中间状态

顺序性--

每个节点都装zookeeper,每个节点都有server,运行一个quorumpeermain,每次启动选择一个server作为leader(节点是单数以应用选举机制)。

Zookeeper角色

扩展时增加server,投票延迟大,影响性能,所以增加了observer。

应用场景:

在任何节点修改配置文件,其他节点会同步

心跳检测,namenode需要知道datanode状态,jobtracker需要知道tasktracker的状态

HBase--nosql数据库(not only sql)

表的特点:

列可以动态增加

面向列存储和管理

空列不占用空间,设计可以稀疏

每个单元数据可以有多个版

数据类型都是字符串

行存储和列存储的对比

传统的关系型数据库是按行存储,比如mysql、oracle, 它的特点就是把一整行的数据放在一起,它在物理上是相邻的。这非常有利于需要频繁的增删、改查和读取整行数据的操作,比如你要查询一个用户的所有信息。那么你就只需要找到这一行的位置,效率很高。

想象一下你的表有100列,但是呢,你只需要查询所有人的年龄,这一列如果是按行存储,你必须要把每一行的所有的100列数据都从磁盘读出来,然后从中提取出年龄的列,这产生了非常大的I/O浪费,速度非常慢,但是列存储的话可以直接定位到年龄,这一列所在的物理存储块,跳过了其他99列不相关的数据,I/O效率很高

并且同一列的数据,它一般有相同的呃,这个数据类型呃,所以你对这一列保存的时候可以压缩,这样就节省了那个磁盘占用的空间。并且HBase它的数据是按列族存储的,可以在运行的时候动态的添加新的列,这样你就不用像关系型数据库那样执行alter table的命令。

逻辑存储

column family:列族

column:列

单元格:由 {RowKey, Column Family:Column Qualifier, Timestamp}唯一确定的存储单元,里面存储着具体的值(Value)

物理存储

横向切分不同的region,region太大会自动分裂,region是HBase的基本单位。

一个region被纵向切分成store,一个列族对应一个store。store中的memstore表是数据结构,通常是跳表,Hfile是实际存储文件。

HBase架构

四个基本组件:

Client:访问HBase

Zookeeper:master和regionserver启动时会向zookeeper注册。保证只有一个master(防止脑裂),监控region server的心跳并实时通知master,存储region的寻址入口(实现了随机存取),存储HBase的元数据。

Master:给region server分配region,负责负载均衡。监听region server 的心跳。

region server:处理客户端的读写请求

zookeeper保证容错性:

Master崩溃,zookeeper重新选一个master,region server崩溃,zookeeper能监听到,然后master重新分配任务。

适用场景

如果你需要处理海量数据 、需要高可扩展性 、并且数据模型相对简单 (不需要复杂的JOIN操作和事务),那么HBase是一个非常好的选择。如果你需要处理复杂的关系、需要严格的ACID(原子性、一致性、隔离性、持久性)事务和强大的SQL查询能力 ,那么关系型数据库仍然是首选。

随机存取、大数据下高读写,操作简单的查询使用HBase

Sqoop

sql- to-hadoop ,传统关系型数据库到Hadoop的桥梁。将关系型数据库数据导入到HDFS、Hive、HBase。将数据库同步问题转换为map reduce作业。

相关推荐
哈基米喜欢哈哈哈1 小时前
Kafka复制机制
笔记·分布式·后端·kafka
孫治AllenSun2 小时前
【Kafka】重点概念和架构总结
分布式·架构·kafka
沧澜sincerely3 小时前
分布式2PC理论
分布式·2pc·一致性协议
##学无止境##3 小时前
解锁Java分布式魔法:CAP与BASE的奇幻冒险
java·开发语言·分布式
小白不想白a4 小时前
【Hadoop】YARN、离线计算框架MapReduce、Hive
大数据·hive·hadoop·mapreduce·yarn
不辉放弃5 小时前
为什么hive在处理数据时,有的累加是半累加数据
数据仓库·hive·hadoop
桃酥4036 小时前
聊一聊 单体分布式 和 微服务分布式
分布式·微服务·架构
tan77º8 小时前
【项目】分布式Json-RPC框架 - 抽象层与具象层实现
linux·服务器·c++·分布式·tcp/ip·rpc·json
Lx35210 小时前
Hadoop集群资源管理:合理分配CPU和内存资源
大数据·hadoop