## 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、布隆过滤器:可以快速的排除数据不在哪个区间

hadoop生态圈学习总结相关推荐

  1. 正式进入Hadoop学习 不会再有比我还全面的大数据学习(三) Hadoop生态圈

    废寝忘食整理出来的知识梳理,希望能对大家有所帮助 一.概述 1.1 大数据概念 大数据是需要新处理模式才能具有更强的决策力 .洞察发现力和流程优化能力来适应海量.高增长率和多样化的信息资产 1.2 大 ...

  2. 大数据运维实战第一课 大话 Hadoop 生态圈

    你好,欢迎来到<大数据运维实战>专栏. 入行以来,我从事大数据运维也有十多年了,期间我做过系统运维.DBA,也做过大数据分析师,最后选择了大数据运维方向,曾设计并管理超过千台.PB 级的数 ...

  3. hadoop生态圈的理解

    hadoop部分:hadoop生态圈的理解(HDFS,MapReduce,HBASE,zookeeper,hive,sqoop,flume,kafka,yarn,spark) 一.简介         ...

  4. 大数据平台的使用(Hadoop 生态圈、CDH)

    目录一.shell自行搭建Hadoop集群(2节点以上)1.1 系统准备1.2 系统基础配置1.3 组件安装与配置1.3.1 Hadoop1.3.2 Hive1.3.3 Hbase1.3.4 Spar ...

  5. 大数据技术Hadoop入门理论系列之一----hadoop生态圈介绍

    Technorati 标记: hadoop,生态圈,ecosystem,yarn,spark,入门 1. hadoop 生态概况 Hadoop是一个由Apache基金会所开发的分布式系统基础架构. 用 ...

  6. hadoop生态圈----zookeeper

    目录 前言: 一   zookeeper概述 1.1   zookeeper的工作机制: 1.2   zookeeper的特点 1.3   zookeeper内部的数据结构 1.4   zookeep ...

  7. 大数据Hadoop教程-学习笔记01【大数据导论与Linux基础】

    视频教程:哔哩哔哩网站:黑马大数据Hadoop入门视频教程,总时长:14:22:04 教程资源:https://pan.baidu.com/s/1WYgyI3KgbzKzFD639lA-_g,提取码: ...

  8. hadoop生态圈之hive面试(一)

    hadoop生态圈之hive面试(一) 说下为什么要使用Hive?Hive的优缺点?Hive的作用是什么? 问过的一些公司:头条,字节x2,阿里参考答案: 1.为什么要使用Hive? Hive是Had ...

  9. 大数据Hadoop生态圈介绍

    大数据Hadoop生态圈-组件介绍 Hadoop是目前应用最为广泛的分布式大数据处理框架,其具备可靠.高效.可伸缩等特点. Hadoop的核心组件是HDFS.MapReduce.随着处理任务不同,各种 ...

最新文章

  1. C++ 虚函数个人理解
  2. 利用OTP为odoo增强安全访问
  3. 如何有效抵抗电脑辐射
  4. 1.2 什么是神经网络-深度学习第一课《神经网络与深度学习》-Stanford吴恩达教授
  5. 数据结构与算法(C++)– 栈(Stack)
  6. Y1066 Ble Master Client 记录
  7. 深入沟通的重要性——《大道至简》第四章读后感
  8. linux syslog日志
  9. MySQL的InnoDB和MyISAM比较
  10. 11.28 String类
  11. Android 比SwipeRefreshLayout更漂亮和强大的下拉刷新控件:Android-MaterialRefreshLayout
  12. c语言起点到目的地方法数,最短路径动态规划问题及C语言实现探讨
  13. 验票证明怎么打印_纳税人证明在哪里打印
  14. Android Studio中运行Android模拟器
  15. Openssl漏洞修复
  16. [摘]PKM:个人知识管理
  17. 股价上涨,资金流出以及内外盘的关系
  18. 【年度总结系列 2019】2019 时不我与
  19. 淘特 Flutter 流畅度优化实践
  20. 整理了一些常用的免费 API 接口,不限次数,收藏备用!(持续更新...)

热门文章

  1. 酷我音乐盒html代码,享受音乐 酷我音乐盒独家秘籍偷偷报
  2. memwatch使用
  3. 面试遇到的问题以及解决方案1.0
  4. Python:百度爬虫
  5. 使用IronOCR识别图片文字
  6. 计算机存储为什么用二进制,计算机为什么使用二进制存储数据?
  7. witchit找不到服务器,《witchit》需要什么配置 最低配置要求一览
  8. WORD中如何高效管理表格?批量调整格式?批量导出批量删除?
  9. gson生成jsonobject_GSON搞定JSON数据
  10. 【Linux】rm 命令:删除文件/文件夹