Hadoop认识

大数据介绍

大数据技术,是指从各种类型的数据中,快速获得由价值信息的能力。适用大技术的技术,包括大规模并行处理(MPP)数据库,数据挖掘,分布式文件系统,分布式数据库,云计算平台,互联网和可扩展的存储系统。

大数据特点4V

  • 数据量大(Volume)
  • 数据类型复杂(Variety)
  • 数据处理速度快(Velocity)
  • 数据真实性高(Veracity)

当前,Hadoop已经成为了事实上的标准,Hadoop除了社区版,还有其他厂商发行的版本。

  • Cloudera:最成型的发行版本,拥有最多的部署案例
  • Hortonworks:100%开源的Apache Hadoop唯一提供商
  • MapR:
  • Amazon Elastic Map Reduce(EMR):这是一个托管的解决方案。

生态系统

Hadooop生态系统主要包括:Hive、HBase、Pig、Sqoop、Flume、Zookeeper、Mahout、Spark、Storm、Shark、Phoenix、Tex、Ambari

1 Hive[haɪv]:数据仓库系统

用于Hadoop的一个数据仓库系统,它提供了类似SQL的查询语言,通过使用该语言, 可以方便地进行数据汇总,特定查询以及分析存放在Hadoop兼容文件系统中的大数据。

hive基于hdfs构建了数据仓库系统,它以hdfs作为存储,依赖于数据库(嵌入式的数据库derby或者独立的数据mysql或oracle)存储表schema信息,并完成基于sql自动解析创建mapreduce任务(由于mapreduce计算效率比较差,目前官方推荐的是底层计算模型采用tez或者spark)。
所以hive可以理解为:hdfs原始存储+DB Schema信息存储+SQL解析引擎+底层计算框架组成的数据仓库。

2 Hbase:分布式数据库

一种分布式、可伸缩的、大数据库存储库,支持随机、实施读/写访问。

3 Pig:工作流引擎

Pig是一种编程语言,它简化了Hadoop常见的工作任务。Pig可加载数据、表达转换数据以及存储最终结果。Pig内置的操作使得半结构化数据变得有意义(如日志文件)。同时Pig可扩展使用Java中添加的自定义数据类型并支持数据转换。

4 sqoop[skup]:数据库ETL工具

为高效传输批量数据而设计的一种工具,其用于Apache Hadoop和结构化数据存储库如关系数据库 之间的数据传输。

5 Flume:日志收集

一种分布式、可靠的、可用的服务,其用于高效搜集、汇总、移动大量日志数据

6 ZooKeeper[ˈzu:ki:pə®]:协同服务管理

一种集中服务、其用于维护配置信息,命名,提供分布式同步,以及提供分组服务。

7 HDFS:分布式数据存储系统

hdfs是大数据系统的基础,它提供了基本的存储功能,由于底层数据的分布式存储,上层任务也可以利用数据的本地性进行分布式计算。hdfs思想上很简单,就是namenode负责数据存储位置的记录,datanode负责数据的存储。使用者client会先访问namenode询问数据存在哪,然后去datanode存储;写流程也基本类似,会先在namenode上询问写到哪,然后把数据存储到对应的datanode上。所以namenode作为整个系统的灵魂,一旦它挂掉了,整个系统也就无法使用了。在运维中,针对namenode的高可用变得十分关键。

8 Mahout[məˈhaʊt]:算法集

一种基于Hadoop的机器学习和数据挖掘的分布式计算框架算法集,实现了多重MapReduce模式的数据挖掘算法。

9 spark:计算模型

一种开源的数据分析集群计算框架,建立于HDFS纸上。于Hadoop一样,用于构建大规模、低延时的数据分析应用。它采用Scala语言实现,使用Scala作为应用框架。

spark是现在大数据中应用最多的计算模型,它与java8的stream编程有相同的风格。封装了很多的计算方法和模型,以延迟执行的方式,在真正需要执行的时候才进行运算。既可以有效的做计算过程的容错,也可以改善我们的编程模型。
Spark是一款很棒的执行引擎,我们可以看到大部分的Spark应用,是作为Hadoop分布式文件系统HDFS的上层应用。
( Spark 典型的取代了已经过时的MapReduce引擎,与Hadoop YARN (Yet Another Resource Negotiator,另一种资源协调者)或者分布式计算框架Mesos一起工作,有时候同时与两者一起作为一个计划进行)
但是Cutting强调:“还有许多事情Spark是做不到的。”比如:它不是一个全文本搜索引擎;是Solr在Hadoop里扮演着这个角色。它可以运行SQL查询对抗Spark,但是它没有被设计成一个交互式查询系统,对此,Cutting提出,Impala可以实现交互查询。

如果你只是要需要进行streaming 编程或者batch 编程,那么你需要一个执行引擎,Spark就是很棒的一个。但是人们想做的事情远不止于此,他们想实现交互式SQL(结构化查询语言),他们想实现搜索,他们想做各种涉及系统的实时处理,如Kafka(一种高吞吐量的分布式发布订阅消息系统)…我认为那些认为Spark就是整个堆的人是确实存在的少数情况。

10 Storm:

一个分布式、容错的实时计算系统。

11 Shark[ʃɑ:k]:SQL查询引擎

Hive on Spark,一个专门为Spark打造的大规模数据仓库系统,兼容Apache Hive。无需修改现有的数据或者查询,就可以用100倍的速度执行Hive SQL。Shark支持Hive查询语言、元存储、序列化格式及自定义函数,与现有Hive部署无缝集成,是一个更快、更强大的替代方案。

12 Phoenix:

一个构建在Apache HBase之上的一个SQL中间层,完全使用Java编写,提供了一个客户端可嵌入的JDBC驱动。

13 Tez:

一个机遇Hadoop YARN之上的DAG计算框架。它把Map/Reduce过程拆分成若干个子过程。同时可以把多个Map/Reduce任务组合成一个较大的DAG任务,减少Map/Reduce之间的文件存储。同时合理组合其子过程,减少任务的运行时间。

14 Amari:安装部署工具

一个供应、管理和监视Apache Hadoop集群的开源框架,它提供一个直观的操作工具和一个健壮的Hadoop Api,

15 MapReduce:

说穿了就是函数式编程,把所有的操作都分成两类,map与reduce,map用来将数据分成多份,分开处理,reduce将处理后的结果进行归并,得到最终的结果。

16 ChuKwa:

17 YARN[jɑ:n]:Hadoop 资源管理器

18 Hadoop HDFS

HDFS被设计成适合在通用硬件上的分布式文件系统。具有如下特点

  • 具有高度容错性的系统。设计用来部署在低廉的硬件上,提供高吞吐量,适合那些有超大数据集的应用程序,放宽了POSIX的要求这样可以实现以流的形式(streaming
    access)访问文件系统中的数据。
  • HDFS采用master/slave。一个集群由一个NameNode和多个DataNodes组成。

在这里插入图片描述

  • Active Namenode:主 Master(只有一个),管理 HDFS
    的名称空间,管理数据块映射信息;配置副本策略;处理客户端读写请求。
  • Secondary NameNode:NameNode 的热备;定期合并 fsimage 和 fsedits,推送给 NameNode;当
    Active NameNode 出现故障时,快速切换为新的 Active NameNode。
  • Datanode:Slave(有多个);存储实际的数据块;执行数据块读 / 写。
  • Client:与 NameNode 交互,获取文件位置信息;与 DataNode 交互,读取或者写入数据;管理 HDFS、访问 HDFS。

Hive

概念

Hive最初是Facebook面对海量数据和机器学习的需求而产生和发展的,是建立在Hadoop上数据仓库基础架构,它可以将结构化的数据文件映射为一张数据库表,并提供简单的SQL查询功能。
Hive作为数据仓库,提供一系列工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。
Hive定义了简单的类SQL查询语言,成为HQL,它允许熟悉SQL用户查询数据。

特点

支持索引,加快数据查询。
不同的存储类型,如纯文本文件、HBase中的文件。
将元数据保存在关系数据库中,大大减少了在查询过程中执行语义检查的时候。
可以直接使用存储在Hadoop文件系统中的数据。
内置大量用户函数UDF来操作时间、字符串和其他的数据挖掘工具,支持用户扩展UDF函数来完成内置函数无法实现的操作。
类SQL的查询方式,将SQL查询转换为MapReduce的Job在Hadoop集群上执行
Hive并不能够在大规模数据集上实现低延迟快速的查询,不能提供实时的查询和基于行级的数据更新操作。比如几百MB的数据集上执行查询一般有分钟级的时间延迟。所以它不适合低延迟的应用。最佳应用在大数据集的批处理作业,如网络日志分析。

Hive支持的数据模型

表:存在在HDFS目录底下,固定目录
外部表:跟表差不多,指定目录
分区:
桶:对指定的列计算其哈希值,根绝哈希值切分数据,目的是并行,每个桶对应一个文件。

Hbase

Hbase的应用场景、原理及架构分析
深入了解HBASE架构(转)
B-,B树,B+

概念

Hbase是一个分布式、面向列的开源数据库,利用HBASE技术可以在廉价PC服务器搭建大规模结构化存储集群。它不是关系型数据库,是一个适合非结构化的数据存储数据库。它利用Hadoop MapReduce来处理HBase中的海量数据,同时利用Zookeeper作为其协同服务。
采购LSM算法,后面继续深入研究,这个算法,实在内存中对未排序的值进行,拆分排序,比如N个数,每M个拆分一次做排序,那么每次寻找的计算量应该是N/M*log2M

特点

线性和模块化可扩展性
严格一致的读取和写入
表的自动配置和分片
支持RegionServers之间的自动故障转移
方便的基类支持Hadoop的MapReduce作业与Apache HBase的表
易于使用的Java API的客户端访问
块缓存和布鲁姆过滤器实时查询
Thrift网管和REST-FUL Web服务支持XML、protobuf和二进制的数据编码选项;
可扩展的基于JRuby(JIRB)的脚本;
支持监控信息通过Hadoop子系统导出到文件或Ganglia
Pig和Hive还未HBase提供了高层语言支持,这使得HBase上进行数据统计处理变得非常简单。Sqoop则为HBase提供了RDBMS数据导入功能,使用传统数据库向HBase迁移变得很方面。

原理

在这里插入图片描述
HBase构建在HDFS之上,其组件包括 Client、zookeeper、HDFS、Hmaster以及HRegionServer。Client包含访问HBase的接口,并维护cache来加快对HBase的访问。Zookeeper用来保证任何时候,集群中只有一个master,存贮所有Region的寻址入口以及实时监控Region server的上线和下线信息。并实时通知给Master存储HBase的schema和table元数据。HMaster负责为Region server分配region和Region server的负载均衡。如果发现失效的Region server并重新分配其上的region。同时,管理用户对table的增删改查操作。Region Server 负责维护region,处理对这些region的IO请求并且切分在运行过程中变得过大的region。

Hbase底层使用还是Hadoop的HDFS。同时包含3个重要组件,
Zookeeper:为整个HBase集群提供协助的服务(信息传输);
HMaster:监控和操作集群中所有的RegionServer;
HregionServer:服务和管理分区(regions)。

**Region:**Hbase的Table中的所有行都按照row key的字典序排列。Table 在行的方向上分割为多个Region。、Region按大小分割的,每个表开始只有一个region,随 着数据增多,region不断增大,当增大到一个阀值的时候, region就会等分会两个新的region,之后会有越来越多的 region。
在这里插入图片描述
在这里插入图片描述
Region是HBase中分布式存储和负载均衡的最小单元。 不同Region分布到不同RegionServer上。
在这里插入图片描述
Region虽然是分布式存储的最小单元,但并不是存储 的最小单元。Region由一个或者多个Store组成,每个store保存一个 columns family。每个Strore又由一个memStore和0至多个StoreFile组成。memStore存储在内存中,StoreFile存储在HDFS上。
在这里插入图片描述

HBase和RDBMS的区别

HBASE设计的初衷是针对大数据进行随机地、实时地读写操作。区别
在这里插入图片描述

HBase数据模型

传统型数据库以行的形式存储数据,每行数据包含多列,每列只有单个值。在HBase中,数据实际存储在一个“映射”中,并且“映射”的键(key)是被排序的。类似JavaScript Object(JSON)
HBase包含如下几个概念:

1 Row key

一条记录的唯一标示

2 column family

一列数据的集合的存储体,作为列簇

3 Column qualifier

在列簇中的每个列数据的限定符,用于指定数据的属性

4 Cell

实际存储的数据,包含数据和时间戳
在这里插入图片描述
推荐阅读
Hadoop大数据分析应用场景 https://blog.csdn.net/m0_37803704/article/details/80550835
Hadoop大数据案例之搜狗五百万数据分析 https://blog.csdn.net/LEoe_/article/details/80403824
基于Hadoop的数据分析平台搭建 https://blog.csdn.net/k6T9Q8XKs6iIkZPPIFq/article/details/80730012
python大数据挖掘系列之基础知识入门 https://www.cnblogs.com/liaojiafa/p/6239262.html
本文地址:https://blog.csdn.net/Frank_LJiang/article/details/88556784

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值