大数据基础

基本概念

面向行的数据存储与面向列的数据存储

面向行的数据存储

面向行的数据存储.png

面向列的数据存储

面向列的数据存储.png

对比

数据库类型 优点 缺点 适用场景
面向行的数据库 写入效率高,提供数据完整性保证 数据读取有冗余现象,影响计算速度 1. 联机事务处理过程(OLTP),如传统的基于增删改查操作的应用
2. 对数据完整性要求较高联机事务处理过程(OLTP)
3. 少量数据读取
面向列的数据库 读取过程没有数据冗余,适合数据定长的大数据计算 缺乏数据完整性保证,写入效率低 1. 联机分析处理OLAP(OLAP),如数据仓库领域、数据分析、海量存储、商业智能、不经常更新的数据
2. 对数据完整性要求不高
3. 海量数据读取

HBase与RDBMS对比

对比项 HBase RDBMS
schema 无schema
只定义列族
有schema
伸缩性 宽表、水平伸缩 瘦表,很难伸缩
事务 非事务 事务性
规范性 非规范 规范化
结构化 结构化、半结构化 结构化

Ambari

Ambari是一款用于部署、管理、监控Hadoop集群的开源工具,通过Ambari用户可以更方便地管理大规模Hadoop集群。

Apache Flume

背景

Flume是由cloudera软件公司产出的可分布式日志收集系统,后与2009年被捐赠了apache软件基金会,为hadoop相关组件之一。尤其近几年随着flume的不断被完善以及升级版本的逐一推出,特别是flume-ng;同时flume内部的各种组件不断丰富,用户在开发的过程中使用的便利性得到很大的改善,现已成为apache top项目之一。

介绍

Apache Flume 是一个从可以收集例如日志,事件等数据资源,并将这些数量庞大的数据从各项数据资源中集中起来存储的工具/服务,或者数集中机制。flume具有高可用,分布式,配置工具,其设计的原理也是基于将数据流,如日志数据从各种网站服务器上汇集起来存储到HDFS,HBase等集中存储器中。其结构如下图所示:
flume.png

应用场景

比如我们在做一个电子商务网站,然后我们想从消费用户中访问点特定的节点区域来分析消费者的行为或者购买意图. 这样我们就可以更加快速的将他想要的推送到界面上,实现这一点,我们需要将获取到的她访问的页面以及点击的产品数据等日志数据信息收集并移交给Hadoop平台上去分析.而Flume正是帮我们做到这一点。现在流行的内容推送,比如广告定点投放以及新闻私人定制也是基于次,不过不一定是使用FLume,毕竟优秀的产品很多,比如facebook的Scribe,还有Apache新出的另一个明星项目chukwa,还有淘宝Time Tunnel。

Apache Phoenix

Phoenix最早是saleforce的一个开源项目,后来成为Apache基金的顶级项目。

Phoenix是构建在HBase上的一个SQL层,能让我们用标准的JDBC APIs而不是HBase客户端APIs来创建表,插入数据和对HBase数据进行查询。

put the SQL back in NoSQL
Phoenix完全使用Java编写,作为HBase内嵌的JDBC驱动。Phoenix查询引擎会将SQL查询转换为一个或多个HBase扫描,并编排执行以生成标准的JDBC结果集。直接使用HBase API、协同处理器与自定义过滤器,对于简单查询来说,其性能量级是毫秒,对于百万级别的行数来说,其性能量级是秒。

HBase的查询工具有很多,如:Hive、Tez、Impala、Spark SQL、Phoenix等。

Phoenix通过以下方式使我们可以少写代码,并且性能比我们自己写代码更好:

  • 将SQL编译成原生的HBase scans。
  • 确定scan关键字的最佳开始和结束
  • 让scan并行执行

Apache Pig

Apache Pig是MapReduce的一个抽象。它是一个工具/平台,用于分析较大的数据集,并将它们表示为数据流。Pig通常与 Hadoop 一起使用;我们可以使用Apache Pig在Hadoop中执行所有的数据处理操作。
要编写数据分析程序,Pig提供了一种称为 Pig Latin 的高级语言。该语言提供了各种操作符,程序员可以利用它们开发自己的用于读取,写入和处理数据的功能。

要使用 Apache Pig 分析数据,程序员需要使用Pig Latin语言编写脚本。所有这些脚本都在内部转换为Map和Reduce任务。Apache Pig有一个名为 Pig Engine 的组件,它接受Pig Latin脚本作为输入,并将这些脚本转换为MapReduce作业。

Apache Kylin

在数据平台的部分业务中,存在一种需求:用户通常需要关联查询,多个表的多个维度的汇总数据,这是一种典型的OLAP场景。Hive和Impala,固然能解决这种问题,然而Hive 的时延太高;impala对于单表查询或者少量维度的连接查询,性能尚可,但对于多个维度、大体量的表上显得心余力绌。然而,Apache Kylin正是解决这种问题的利刃。

Apache Kylin是一个实时(real-time)的OLAP on Hadoop的应用。它可以通过ANSI-SQL,ODBC, JDBC,RESTful API等接口,提供基于hadoop的超大数据集(TB-PB级)的多维实时分析(OLAP)功能。

Apache Kylin以Hive数据仓库为数据源,针对一个星型拓扑结构的数据立方体,预计算多个维度组合的度量,然后将结果保存在Hbase中,对外提供查询分析功能。
Apache Kylin.jpg

Azkaban

Azkaban是由Linkedin开源的一个批量工作流任务调度器。用于在一个工作流内以一个特定的顺序运行一组工作和流程。Azkaban定义了一种KV文件格式来建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。简而言之就是一个工作流调度系统。

Cloudera

Cloudera 提供一个可扩展、灵活、集成的平台,可用来方便地管理您的企业中快速增长的多种多样的数据。业界领先的 Cloudera 产品和解决方案使您能够部署并管理 Apache Hadoop 及其相关项目、操作和分析您的数据以及保护数据的安全。
Cloudera 提供下列产品和工具 :

  • CDH — Cloudera 分发的 Apache Hadoop 和其他相关开放源代码项目,包括 Impala 和 Cloudera Search。CDH 还提供安全保护以及与许多硬件和软件解决方案的集成。
  • Cloudera Impala — 一种 MPP(大规模并行处理) SQL 引擎,用于交互式分析和商业智能。其高度优化的体系结构使它非常适合用于具有联接、聚合和子查询的传统 BI 样式的查询。它可以查询来自各种源的 Hadoop 数据文件,包括由 MapReduce 作业生成的数据文件或加载到 Hive 表中的数据文件。YARN 资源管理组件让 Impala 能够共存于使用 Impala SQL 查询并发运行批处理工作负载的群集上。您可以通过 Cloudera Manager 用户界面管理 Impala 及其他 Hadoop 组件,并通过 Sentry 授权框架保护其数据。
  • Cloudera Search — 提供近实时访问已存储的数据或者摄取数据到 Hadoop 以及 HBase 中去。Search 提供了近实时的索引,批量索引,全文检索和 Drill-Down(下钻) 的导航,以及一个简单的,全文检索的接口,需要一些 NoSQL 或者编程基础(技能)。完全集成的数据处理平台,Search 使用了在 CDH 中灵活的,可扩展的以及可靠的存储系统。这样不再需要在基础设施层或者业务层移动大量的数据了,也不需要产生新的任务。
  • Cloudera Manager — 一个复杂的应用程序,用于部署、管理、监控您的 CDH 部署并诊断问题。Cloudera Manager 提供 Admin Console,这是一种基于 Web 的用户界面,使您的企业数据管理简单而直接。它还包括 Cloudera Manager API,可用来获取群集运行状况信息和度量以及配置 Cloudera Manager。
  • Cloudera Navigator — CDH 平台的一种端到端数据管理工具。Cloudera Navigator 使管理员、数据经理和分析师能够了解 Hadoop 中的大量数据,以及简化了存储和密钥的管理。Cloudera Navigator 中强大的审核、数据管理、沿袭管理、生命周期管理和密钥管理使企业能够遵守严格的法规遵从性和法规要求。

Hadoop

Hadoop是一个使用java编写的Apache开放源代码框架,它允许使用简单的编程模型跨大型计算机的大型数据集进行分布式处理。Hadoop框架工作的应用程序可以在跨计算机群集提供分布式存储和计算的环境中工作。Hadoop旨在从单一服务器扩展到数千台机器,每台机器都提供本地计算和存储。

Hbase

Hbase是一个分布式的、面向列的开源数据库。其设计理念源自谷歌的BigTable。在实时业务中,数据被送到Storm实时流引擎计算后,暂存于Redis集群;由于这些数据体量较大,指标通常较多(表宽,列多),结构也具有不确定性,所以常常用Hbase来存储,用于实时读写。

Hive

Hive是一个典型的SQL on Hadoop的应用,Hive可以用传统的SQL 读写和管理一个大规模的数据仓库。由于其构建在HDFS之上,所以它继承了HDFS的高可扩展性、高可用性和安全性。Hive将SQL转化成一系列的MapReduce任务,执行后得到结果,大大减轻了数据分析人员的负担,但也是由于其使用MapReduce作为计算引擎,所以数据访问延迟较大,依然只适用离线分析的应用场景。在Hive即将发行的版本中,将集成Spark、Tez等计算引擎。这将大大降低在超大规模的数据仓库上的数据分析时延。
Hive.jpg

Impala

Impala是另一个SQL on Hadoop的应用。它的引入就是为了弥补Hive的不足,与Hive不同的是,它是一个可用于实时应用场景的系统。它避开了MapReduce计算引擎,采用了类似于商业的关系型数据库中的并行计算引擎。因为查询效率是Hive的多个数量级(order-of-magnitude)。与Hive类似,它同时支持一些面向行或者列的文件存储格式,如:Text,RCFile, Parquet, ORCFile等。
Impala.jpg

Jstorm

JStorm 是一个分布式实时计算引擎,类似Hadoop MapReduce的系统, 用户按照规定的编程规范实现一个任务,然后将这个任务递交给JStorm系统,Jstorm将这个任务跑起来,并且按7 * 24小时运行起来,一旦中间一个worker 发生意外故障, 调度器立即分配一个新的worker替换这个失效的worker。因此,从应用的角度,JStorm 应用是一种遵守某种编程规范的分布式应用。从系统角度,JStorm一套类似MapReduce的调度系统。从数据的角度,是一套基于流水线的消息处理机制。实时计算现在是大数据领域中最火爆的一个方向,因为人们对数据的要求越来越高,实时性要求也越来越快,传统的 Hadoop Map Reduce,逐渐满足不了需求,因此在这个领域需求不断。

Sqoop

Apache Sqoop 被设计用于在一个 Hadoop 生态系统与 MySQL、Oracle、MS SQL、Postgre SQL 和 DB2® 等关系型数据库管理系统 (RDBMS) 中的结构化数据存储之间传输数据。作为 Hadoop 生态系统不可或缺的一部分,Sqoop 启用了一个 MapReduce 作业(极其容错的分布式并行计算)来执行任务。Sqoop 的另一大优势是其传输大量结构化或半结构化数据的过程是完全自动化的。
Sqoop数据流架构.png

TITAN

TITAN是一个分布式的图数据库,它可以存储具有上千亿级别顶点(vertice )和边(edge)的图结构在分布式集群中。另外TITAN是一个事务性的数据库,可支持数千个用户并发、实时地遍历图结构。

各种大数据处理技术存在能力互补,按照大数据处理技术能力互补原则,兼顾高效与低成本,结合当前技术发展状态,业务应用场景等,采用多技术混搭方式实现大数据平台的存储。

Yarn

Apache Hadoop 2.0 包含 YARN,它将资源管理和处理组件分开。基于 YARN 的架构不受 MapReduce 约束。
YARN 是下一代 Hadoop 计算平台。
适用于离线计算平台。

坚持原创技术分享,您的支持将鼓励我继续创作!
0%