2.3 初探Hadoop世界

文章目录

  • 零、学习目标
  • 一、导入新课
  • 二、新课讲解
    • (一)Hadoop的前世今生
      • 1、Google处理大数据三大技术
      • 2、Hadoop如何诞生
      • 3、Hadoop主要发展历程
    • (二)Hadoop的优势
      • 1、扩容能力强
      • 2、成本低
      • 3、高效率
      • 4、可靠性
      • 5、高容错性
    • (三)Hadoop的生态体系
      • 1、HDFS分布式文件系统
      • 2、MapReduce分布式计算框架
      • 3、Yarn资源管理框架
      • 4、Sqoop数据迁移工具
      • 5、Mahout数据挖掘算法库
      • 6、HBase分布式存储系统
      • 7、ZooKeeper分布式协作服务
      • 8、Hive数据仓库
      • 9、Flume日志收集工具
      • 10、Spark内存计算框架
      • 11、Tez计算框架
      • 12、Ambari管理工具
      • 13、Avro™序列化系统
      • 14、Cassandra数据库系统
      • 15、Chukwa数据收集系统
      • 16、Pig数据流系统
      • 17、Kafka消息系统
      • 18、Oozie作业流调度引擎
      • 19、Storm流处理框架
      • 20、Flink实时处理框架
      • 21、Apache Phoenix
      • 22、Apache Drill
      • 23、Apache Hudi
      • 24、Apache Kylin
      • 25、Apache Presto
      • 26、ClickHouse
      • 27、Apache Druid
      • 28、TensorFlow
      • 29、PyTorch
      • 30、Apache Superset
      • 31、Elasticsearch
      • 32、Jupyter Notebook
      • 33、Apache Zeppelin
    • (四)Hadoop的版本情况
      • 1、Hadoop发行版
        • (1)Apache Hadoop
        • (2)Cloudera Hadoop
        • (3)Hortonworks Hadoop
      • 2、Hadoop版本升级
        • (1)Hadoop1.x
        • (2)Hadoop2.x
        • (3)Hadoop3.x
  • 三、归纳总结
  • 四、上机操作

零、学习目标

  1. 了解Hadoop的发展历史
  2. 了解Hadoop的版本情况
  3. 掌握Hadoop的生态体系

一、导入新课

  • 上次课,主要讲解了大数据的应用场景,大数据应用在各个行业。Hadoop作为一个能够对大量数据进行分布式处理的框架,用户可以利用Hadoop开发和处理海量数据。本次课将针对Hadoop的基本概念、优势与生态体系进行详细讲解。

二、新课讲解

2.3 初探Hadoop世界_第1张图片

(一)Hadoop的前世今生

1、Google处理大数据三大技术

  • 大数据技术首先需要解决的问题是如何高效、安全地存储;其次是如何高效、及时地处理海量的数据,并返回有价值的信息;最后是如何通过机器学习算法,从海量数据中挖掘出潜在的价值,并构建模型,以用于预测预警
  • 随着数据的快速增长,数据的存储和分析都变的越来越困难。例如存储容量、读写速度、计算效率等都无法满足用户的需求。可以说,当今大数据的基石,来源于谷歌公司的三篇论文,这三篇论文主要阐述了谷歌公司对于大数据问题的解决方案。
论文 解决问题
Google File System 主要解决大数据分布式存储的问题
Google MapReduce 主要解决大数据分布式计算的问题
Google BigTable 主要解决大数据分布式查询的问题
  • 三大革命性技术的优点
编号 优点
1 成本降低、能用PC机,就不用大型机和高端存储
2 软件容错硬件故障视为常态,通过软件保证可靠性
3 简化并行分布式计算,无须控制节点同步和数据交换
  • 当前大数据工具的蓬勃发展,或多或少都受到上述论文的启发,不少社区根据论文的相关原理,实现了最早一批的开源大数据工具,如Hadoop和HBase。但值得注意的是,当前每个大数据工具都专注于解决大数据领域的特定问题,很少有一种大数据工具可以一站式解决所有的大数据问题。因此,一般来说,大数据应用需要多种大数据工具相互配合,才能解决大数据相关的业务问题。大数据工具非常多,据不完全统计,大约有一百多种,但常用的只有10多种,这些大数据工具重点解决的大数据领域各不相同。
大数据领域 常用工具
分布式存储 主要包含Hadoop HDFS和Kafka等
分布式计算 包括批处理和流计算,主要包含Hadoop MapReduce、Spark和Flink等
分布式查询 主要包括Hive、HBase、Kylin、Impala等
分布式挖掘 主要包括Spark ML和Alink等
  • 据中国信通院企业采购大数据软件调研报告来看,86.6%的企业选择基于开源软件构建自己的大数据处理业务,因此学习和掌握几种常用的开源大数据工具,对于大数据开发人员来说至关重要。

2、Hadoop如何诞生

  • 在2003至2004年,Google陆续公布了部分GFS和MapReduce思想的细节,Nutch的创始人Doug Cutting受到启发,用了若干年时间实现了DFS和MapReduce机制,使Nutch性能飙升。
    2.3 初探Hadoop世界_第2张图片
  • 2005年,Hadoop作为Lucene子项目Nutch的一部分正式被引入Apache基金会,随后又从Nutch中剥离,成为一套完整独立的软件,起名为Hadoop。据说,Hadoop这个名字来源于创始人Doug Cutting儿子的毛绒玩具大象,因此,Hadoop的Logo形象如下图。
    2.3 初探Hadoop世界_第3张图片
  • Hadoop是一个由Apache基金会开发的分布式系统基础架构,源于论文Google File System。Hadoop工具可以让用户在不了解分布式底层细节的情况下,开发分布式程序,从而大大降低大数据程序的开发难度。它可以充分利用计算机集群构建的大容量、高计算能力来对大数据进行存储和运算。
  • 在大数据刚兴起之时,Hadoop可能是最早的大数据工具,它也是早期大数据技术的代名词。时至今日,虽然大数据工具种类繁多,但是不少工具的底层分布式文件系统还是基于Hadoop的HDFS(Hadoop Distributed File System)。
  • Hadoop框架前期最核心的组件有两个,即HDFS和MapReduce。后期又加入了YARN组件,用于资源调度。其中HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了分布式计算能力。
  • HDFS有高容错性的特点,且支持在低廉的硬件上进行部署,而且Hadoop访问数据的时候,具有很高的吞吐量,适合那些有着超大数据集的应用程序。
  • 可以说,Hadoop工具是专为离线和大规模数据分析而设计的,但它并不适合对几个记录随机读写的在线事务处理模式。
  • 目前来说,Hadoop工具不支持数据的部分update操作,因此不能像关系型数据库那样,可以用SQL来更新部分数据。

3、Hadoop主要发展历程

  • 随着开源社区的不断发展,越来越多的优秀项目被开源,以处理各种大数据场景下的问题和挑战。作为目前大数据生态系统内的早期开源项目,Hadoop在廉价机器上实现了分布式数据存储和高性能分布式计算,大大降低了数据存储和计算成本。Hadoop提供的分布式存储系统HDFS、大数据集并行计算编程模型MapReduce、资源调度框架YARN已经被广泛应用,为大数据生态系统的发展奠定了坚实的基础。如今,Hadoop大数据生态圈发展已经非常全面,涉及领域众多,在大数据处理系统中常用的技术框架包括数据采集、数据存储、数据分析、数据挖掘、批处理、实时流计算、数据可视化、监控预警、信息安全等。
  • 下面我们回顾一下近10年来Hadoop的主要发展历程。
    2.3 初探Hadoop世界_第4张图片
时间 事件
2008年1月 Hadoop成为Apache顶级项目。
2008年6月 Hadoop的第一个SQL框架——Hive成为了Hadoop的子项目。
2009年7月 MapReduce 和 Hadoop Distributed File System (HDFS) 成为Hadoop项目的独立子项目。
2009年7月 Avro 和 Chukwa 成为Hadoop新的子项目。
2010年5月 Avro脱离Hadoop项目,成为Apache顶级项目。
2010年5月 HBase脱离Hadoop项目,成为Apache顶级项目。
2010年9月 Hive脱离Hadoop,成为Apache顶级项目。
2010年9月 Pig脱离Hadoop,成为Apache顶级项目。
2010年-2011年 扩大的Hadoop社区忙于建立大量的新组件(Crunch,Sqoop,Flume,Oozie等)来扩展Hadoop的使用场景和可用性。
2011年1月 ZooKeeper 脱离Hadoop,成为Apache顶级项目。
2011年12月 Hadoop1.0.0版本发布,标志着Hadoop已经初具生产规模。
2012年5月 Hadoop 2.0.0-alpha版本发布,这是Hadoop-2.x系列中第一个(alpha)版本。与之前的Hadoop-1.x系列相比,Hadoop-2.x版本中加入了YARN,YARN成为了Hadoop的子项目。
2012年10月 Impala加入Hadoop生态圈。
2013年10月 Hadoop2.0.0版本发布,标志着Hadoop正式进入MapReduce v2.0时代。
2014年2月 Spark开始代替MapReduce成为Hadoop的默认执行引擎,并成为Apache顶级项目。
2017年12月 继Hadoop3.0.0的四个Alpha版本和一个Beta版本后,第一个可用的Hadoop 3.0.0版本发布。

(二)Hadoop的优势

  • Hadoop作为大数据中常见的分布式计算平台,能够处理海量数据,并对数据进行分析。经过十几年的发展,Hadoop已经形成了以下几点优势。
    2.3 初探Hadoop世界_第5张图片

1、扩容能力强

  • Hadoop是一个高度可扩展的存储平台,它可以存储和分发跨越数百个并行操作的廉价的服务器数据集群。不同于传统的关系型数据库不能扩展到处理大量的数据,Hadoop是能给企业提供涉及成百上千TB的数据节点上运行的应用程序。

2、成本低

  • Hadoop为企业用户提供了极具缩减成本的存储解决方案。通过普通廉价的机器组成服务器集群来分发处理数据,成本比较低,普通用户也很容易在自己的PC机上搭建Hadoop运行环境。

3、高效率

  • Hadoop能够并发处理数据,并且能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理数据的速度是非常快的。

4、可靠性

  • Hadoop自动维护多份数据副本,假设计算任务失败,Hadoop能够针对失败的节点重新分布处理。

5、高容错性

  • Hadoop的一个关键优势就是容错能力强,当数据被发送到一个单独的节点,该数据也被复制到集群的其他节点上,这意味着故障发生时,存在另一个副本可供使用。

(三)Hadoop的生态体系

  • 随着Hadoop的不断发展,Hadoop生态体系越来越完善,现如今已经发展成一个庞大的生态体系。
    2.3 初探Hadoop世界_第6张图片

1、HDFS分布式文件系统

  • HDFS是Hadoop的分布式文件系统。是Hadoop体系中数据存储管理的基础。它是一个高度容错的系统,能检测和应对硬件故障,用于在低成本的通用硬件上运行。HDFS简化了文件的一致性模型,通过流式数据访问,提供高吞吐量应用程序数据访问功能,适合带有大型数据集的应用程序。

2、MapReduce分布式计算框架

  • MapReduce是一种分布式计算框架,用以进行大数据量的计算。其中Map对数据集上的独立元素进行指定的操作,生成键-值对形式中间结果。Reduce则对中间结果中相同“键”的所有“值”进行归约,以得到最终结果。MapReduce这样的功能划分,非常适合在大量计算机组成的分布式并行环境里进行数据处理。

3、Yarn资源管理框架

  • YARN(Yet Another Resource Negotiator,另一种资源协调者)是一种新的 Hadoop 资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。

4、Sqoop数据迁移工具

  • 数据同步工具Sqoop是SQL-to-Hadoop的缩写,主要用于传统数据库和Hadoop之前传输数据。数据的导入和导出本质上是Mapreduce程序,充分利用了MR的并行化和容错性。

5、Mahout数据挖掘算法库

  • 数据挖掘算法库Mahout的主要目标是创建一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。Mahout现在已经包含了聚类、分类、推荐引擎(协同过滤)和频繁集挖掘等广泛使用的数据挖掘方法。除了算法,Mahout还包含数据的输入/输出工具、与其他存储系统(如数据库、MongoDB 或Cassandra)集成等数据挖掘支持架构。

6、HBase分布式存储系统

  • HBase工具是一个分布式的、面向列的开源数据库,该技术来源于Google BigTable 的论文。它在Hadoop之上提供了类似于Google BigTable的能力。HBase不同于一般的关系数据库,它是一个适合存储非结构化数据的数据库,且采用了基于列而不是基于行的数据存储模式。
  • HBase在很多大型互联网公司得到应用,如阿里、京东、小米和Facebook等。Facebook用HBase存储在线消息,每天数据量近百亿;小米公司的米聊历史数据和消息推送等多个重要应用系统都建立在HBase之上。
场景 说明
密集型写应用 写入量巨大,而相对读数量较小的应用,比如消息系统的历史消息,游戏的日志等。
查询逻辑简单的应用 HBase只支持基于rowkey的查询,而像SQL中的join等查询语句,它并不支持。
对性能和可靠性要求非常高的应用 由于HBase本身没有单点故障,可用性非常高。它支持在线扩展节点,即使应用系统的数据在一段时间内呈井喷式增长,也可以通过横向扩展来满足功能要求。
  • HBase读取速度快得益于内部使用了LSM树型结构,而不是B或B+树。一般来说,磁盘的顺序读取速度很快,但相对而言,寻找磁道的速度就要慢很多。HBase的存储结构决定了读取任意数量的记录不会引发额外的寻道开销。
  • 目前来说,HBase不能基于SQL来查询数据,需要使用API
  • 官网地址:http://hbase.apache.org

7、ZooKeeper分布式协作服务

  • ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和HBase的重要组件。

8、Hive数据仓库

  • 对于数据的查询和操作,一般开发人员熟悉的是SQL语句,但是Hadoop不支持SQL对数据的操作,而是需要用API来进行操作,这个对于很多开发人员来说并不友好。因此,很多开发人员期盼能用SQL语句来查询Hadoop中的分布式数据。
  • Hive工具基于Hadoop组件,可以看作是一个数据仓库分析系统,Hive提供了丰富的SQL查询方式来分析存储在Hadoop分布式文件系统中的数据。
  • Hive可以将结构化的数据文件映射为一张数据表,这样就可以利用SQL来查询数据。本质上,Hive是一个翻译器,可以将SQL语句翻译为MapReduce任务运行。
  • Hive SQL使不熟悉MapReduce的开发人员可以很方便地利用SQL语言进行数据的查询、汇总和统计分析。但是Hive SQL与关系型数据库的SQL略有不同,虽然它能支持绝大多数的语句,如DDL、DML以及常见的聚合函数、连接查询和条件查询等。
  • Hive还支持UDF(User-Defined Function,用户定义函数),也可以实现对map和reduce函数的定制,为数据操作提供了良好的伸缩性和可扩展性。Hive不适合用于联机事务处理,也不适合实时查询功能。它最适合应用在基于大量不可变数据的批处理作业。
  • Hive的特点包括:可伸缩、可扩展、容错、输入格式的松散耦合。Hive最佳使用场合是大数据集的批处理作业,例如,网络日志分析。
  • 目前来说,Hive中的SQL支持度有限,只支持部分常用的SQL语句,且不适合update操作去更新部分数据,即不适合基于行级的数据更新操作。
  • 官网地址:http://hive.apache.org

9、Flume日志收集工具

  • Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。

10、Spark内存计算框架

  • Apache Spark是专为大规模数据处理而设计的快速通用的计算引擎。它是加州大学伯克利分校的AMP实验室开源的通用并行框架。它不同于Hadoop MapReduce,计算任务中间输出结果可以保存在内存中,而不再需要读写HDFS,因此Spark计算速度更快,也能更好地适用于机器学习等需要迭代的算法。
  • Apache Spark是由Scala语言开发的,可以与Java程序一起使用。它能够像操作本地集合对象一样轻松地操作分布式数据集。它具有运行速度快、易用性好、通用性强和随处运行等特点。
  • Apache Spark提供了Java、Scala、Python以及R语言的API。还支持更高级的工具,如Spark SQL、Spark Streaming、Spark MLlib和Spark GraphX等。
优点 说明
非常快的计算速度 它主要在内存中计算,因此在需要反复迭代的算法上,优势非常明显,比Hadoop快100倍。
易用性 它大概提供了80多个高级运算符,包括各种转换、聚合等操作。这相对于Hadoop组件中提供的map和reduce两大类操作来说,丰富了很多,因此可以更好地适应复杂数据的逻辑处理。
通用性 它除了自身不带数据存储外,其他大数据常见的业务需求,比如批处理、流计算、图计算和机器学习等都有对应的组件。因此,开发者通过Spark提供的各类组件,如Spark SQL、SparkStreaming、Spark MLlib和Spark GraphX等,可以在同一个应用程序中无缝组合使用这些库。
支持多种资源管理器 它支持Hadoop YARN、Apache Mesos,以及Spark自带的Standalone集群管理器。
  • Spark的官网地址:http://spark.apache.org

11、Tez计算框架

  • Tez 是 Apache 最新的支持 DAG 作业的开源计算框架。它允许开发者为最终用户构建性能更快、扩展性更好的应用程序。Hadoop传统上是一个大量数据批处理平台。但是,有很多用例需要近乎实时的查询处理性能。还有一些工作则不太适合MapReduce,例如机器学习。Tez的目的就是帮助Hadoop处理这些用例场景。

12、Ambari管理工具

  • Apache Ambari是一种基于Web的工具,支持Apache Hadoop集群的供应、管理和监控。Apache Ambari 支持HDFS、MapReduce、Hive、Pig、Hbase、Zookeepr、Sqoop和Hcatalog等的集中管理,它也是5个顶级Hadoop管理工具之一。

13、Avro™序列化系统

  • 数据序列化工具Avro是一个数据序列化系统,设计用于支持大批量数据交换的应用。它的主要特点:支持二进制序列化方式,可以便捷快速地处理大量数据;动态语言友好,Avro提供的机制使动态语言可以方便地处理Avro数据。

14、Cassandra数据库系统

  • Cassandra是一套开源分布式NoSQL数据库系统。它最初由Facebook开发,用于储存收件箱等简单格式数据,集GoogleBigTable的数据模型与Amazon Dynamo的完全分布式的架构于一身,Facebook于2008将 Cassandra 开源。

15、Chukwa数据收集系统

  • Chukwa 是一个开源的用于监控大型分布式系统的数据收集系统。这是构建在 Hadoop 的 HDFS 和MapReduce框架之上的,继承了Hadoop 的可伸缩性和健壮性。Chukwa 还包含了一个强大和灵活的工具集,可用于展示、监控和分析已收集的数据。

16、Pig数据流系统

  • Pig是基于Hadoop的数据流系统,由yahoo!开源,设计动机是提供一种基于MapReduce的ad-hoc(计算在query时发生)数据分析工具。定义了一种数据流语言—Pig Latin,将脚本转换为MapReduce任务在Hadoop上执行。通常用于进行离线分析。

17、Kafka消息系统

  • Apache Kafka是一个开源流处理平台,它的目标是为处理实时数据提供一个统一、高通量、低等待的平台。Apache Kafka最初由LinkedIn开发,并于2011年初开源。2012年10月从ApacheIncubator毕业。在非常多的实时大数据项目中,都能见到Apache Kafka的身影。
应用场景 简单说明
发布和订阅 类似一个消息系统,可以读写流式数据
流数据处理 编写可扩展的流处理应用程序,可用于实时事件响应的场景
数据存储 安全地将流式的数据存储在一个分布式、有副本备份且容错的集群
  • Kafka的一个重要特点是可以作为连接各个子系统的数据管道,从而构建实时的数据管道和流式应用。它支持水平扩展,且具有高可用、速度快的优点,已经运行在成千上万家公司的生产环境中。
  • Apache Kafka的官网地址:http://kafka.apache.org

18、Oozie作业流调度引擎

  • 作业流调度引擎Oozie是一个基于工作流引擎的服务器,可以在上面运行Hadoop的Map Reduce和Pig任务。它其实就是一个运行在Java Servlet容器(比如Tomcat)中的Javas Web应用。

19、Storm流处理框架

  • Apache Storm是开源的分布式实时计算系统,擅长处理海量数据,适用于数据实时处理而非批处理。Hadoop或者Hive是大数据中进行批处理使用较为广泛的工具,这也是Hadoop或者Hive的强项。但是Hadoop MapReduce并不擅长实时计算,这也是业界一致的共识。当前很多业务对于实时计算的需求越来越强烈,这也是Storm推出的一个重要原因。
  • Apache Storm的官网地址:http://storm.apache.org
  • 注意:随着Spark和Flink对于流数据的处理能力的增强,目前不少实时大数据处理分析都从Storm迁移到Spark和Flink上,从而降低了维护成本。

20、Flink实时处理框架

  • Apache Flink是一个计算框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算,该框架完全由Java语言开发,也是国内阿里巴巴主推的一款大数据工具。其针对数据流的分布式计算提供了数据分布、数据通信以及容错机制等功能。基于流执行引擎,Flink提供了诸多更高抽象层的API,以便用户编写分布式任务。
API 作用
DataSet API 对静态数据进行批处理操作,将静态数据抽象成分布式的数据集,用户可以方便地使用Flink提供的各种操作符,对分布式数据集进行处理。
DataStream API 对数据流进行流处理操作,将流式的数据抽象成分布式的数据流,用户可以方便地对分布式数据流进行各种操作。
Table API 对结构化数据进行查询操作,将结构化数据抽象成关系表,并通过类SQL的语句对关系表进行各种查询操作。
  • Apache Flink的官网地址:http://flink.apache.org

21、Apache Phoenix

  • Hive是构建在Hadoop之上,可以用SQL对Hadoop中的数据进行查询和统计分析。同样地,HBase原生也不支持用SQL进行数据查询,因此使用起来不方便,比较费力。
  • Apache Phoenix是构建在HBase数据库之上的一个SQL翻译层。它本身用Java语言开发,可作为HBase内嵌的JDBC驱动。Apache Phoenix引擎会将SQL语句翻译为一个或多个HBase扫描任务,并编排执行以生成标准的JDBC结果集。
  • Apache Phoenix提供了用SQL对HBase数据库进行查询操作的能力,并支持标准SQL中大部分特性,其中包括条件运算、分组、分页等语法,因此降低了开发人员操作HBase当中的数据的难度,提高了开发效率。
  • 官网地址:http://phoenix.apache.org

22、Apache Drill

  • Apache Drill是一个开源的、低延迟的分布式海量数据查询引擎,使用ANSI SQL兼容语法,支持本地文件、HDFS、HBase、MongoDB等后端存储,支持Parquet、JSON和CSV等数据格式。本质上Apache Drill是一个分布式的大规模并行处理查询层。
  • 它是Google Dremel工具的开源实现,而Dremel是Google的交互式数据分析系统,性能非常强悍,可以处理PB级别的数据。
  • Google开发的Dremel工具,在处理PB级数据时,可将处理时间缩短到秒级,从而作为MapReduce的有力补充。它作为Google BigQuery的报表引擎,获得了很大的成功。
  • Apache Drill的官网地址:https://drill.apache.org

23、Apache Hudi

  • Apache Hudi代表Hadoop Upserts and Incrementals,由Uber开发并开源。它基于HDFS数据存储系统之上,提供了两种流原语:插入更新和增量拉取。它可以很好地弥补Hadoop和Hive对部分数据更新的不足。
  • Apache Hudi工具提供两个核心功能:首先支持行级别的数据更新,这样可以迅速地更新历史数据;其次是仅对增量数据的查询。Apache Hudi提供了对Hive、Presto和Spark的支持,可以直接使用这些组件对Hudi管理的数据进行查询。
  • Hudi的主要目的是高效减少数据摄取过程中的延迟;HDFS上的分析数据集通过两种类型的表提供服务
服务 说明
读优化表(Read Optimized Table) 通过列式存储提高查询性能
近实时表(Near-Real-Time Table) 基于行的存储和列式存储的组合提供近实时查询
  • Hudi的官网地址:https://hudi.apache.org

24、Apache Kylin

  • Apache Kylin是数据平台上的一个开源OLAP引擎。它采用多维立方体预计算技术,可以将某些场景下的大数据SQL查询速度提升到亚秒级别。值得一提的是,Apache Kylin是国人主导的第一个Apache顶级开源项目,在开源社区有较大的影响力。
  • 它的查询速度如此之快,是基于预先计算尽量多的聚合结果,在查询时应该尽量利用预先计算的结果得出查询结果,从而避免直接扫描超大的原始记录。
  • 使用Apache Kylin主要分为三步
步骤 工作
1 定义数据集上的一个星形或雪花形模型
2 在定义的数据表上构建多维立方
3 使用SQL进行查询
  • Apache Kylin的官网地址:http://kylin.apache.org

25、Apache Presto

  • Apache Presto是一个开源的分布式SQL查询引擎,适用于交互式分析查询,数据量支持GB到PB字节。它的设计和编写完全是为了解决像Facebook这样规模的商业数据仓库的交互式分析和处理速度的问题。
  • Presto支持多种数据存储系统,包括Hive、Cassandra和各类关系数据库。Presto查询可以将多个数据源的数据进行合并,可以跨越整个组织进行分析。
  • 国内的京东和国外的Facebook都使用Presto进行交互式查询。
  • Apache Presto的官网地址:https://prestodb.io

26、ClickHouse

  • Yandex在2016年6月15日开源了一个用于数据分析的数据库,名字叫作ClickHouse,这个列式存储数据库的性能要超过很多流行的商业MPP数据库软件,例如Vertica。目前国内社区火热,各个大厂纷纷使用。
  • 今日头条用ClickHouse做用户行为分析,内部一共几千个ClickHouse节点,单集群最大1200节点,总数据量几十PB,日增原始数据300TB左右。腾讯用ClickHouse做游戏数据分析,并且为之建立了一整套监控运维体系。
  • 携程从2018年7月份开始接入试用,目前80%的业务都跑在ClickHouse上。每天数据增量十多亿,近百万次查询请求。快手也在使用ClickHouse,每天新增200TB,90%查询低于3秒。
  • ClickHouse的官网地址:https://clickhouse.tech

27、Apache Druid

  • Apache Druid是一个分布式的、支持实时多维OLAP分析的数据处理系统。它既支持高速的数据实时摄入处理,也支持实时且灵活的多维数据分析查询。因此它最常用的大数据场景就是灵活快速的多维OLAP分析。
  • 另外,它支持根据时间戳对数据进行预聚合摄入和聚合分析,因此也经常用于对时序数据进行处理分析。
编号 特性
1 亚秒响应的交互式查询,支持较高并发
2 支持实时导入,导入即可被查询,支持高并发导入
3 采用分布式shared-nothing的架构,可以扩展到PB级
4 数据查询支持SQL
  • Apache Druid的官网地址:http://druid.apache.org
  • 注意:目前Apache Druid不支持精确去重,不支持Join和根据主键进行单条记录更新。同时,需要与阿里开源的Druid数据库连接池区别开来。

28、TensorFlow

  • TensorFlow最初由谷歌公司开发,用于机器学习和深度神经网络方面的研究,它是一个端到端开源机器学习平台。它拥有一个全面而灵活的生态系统,包含各种工具、库和社区资源,可助力研究人员推动先进的机器学习技术的发展,并使开发者能够轻松地构建和部署由机器学习提供支持的应用。
特征 说明
轻松地构建模型 它可以使用API轻松地构建和训练机器学习模型,这使得我们能够快速迭代模型并轻松地调试模型。
随时随地进行可靠的机器学习生产 它可以在CPU和GPU上运行,可以运行在台式机、服务器和手机移动端等设备上。无论使用哪种语言,都可以在云端、本地、浏览器中或设备上轻松地训练和部署模型。
强大的研究实验 现在科学家可以用它尝试新的算法,产品团队则用它来训练和使用计算模型,并直接提供给在线用户。
  • TensorFlow的官网地址:https://tensorflow.google.cn

29、PyTorch

  • PyTorch的前身是Torch,其底层和Torch框架一样,但是使用Python重新写了很多内容,不仅更加灵活,支持动态图,而且还提供了Python接口。
  • 它是一个以Python优先的深度学习框架,能够实现强大的GPU加速,同时还支持动态神经网络,这是很多主流深度学习框架比如TensorFlow等都不支持的。
  • PyTorch是相当简洁且高效的框架,从操作上来说,非常符合我们的使用习惯,这能让用户尽可能地专注于实现自己的想法,而不是算法本身。PyTorch是基于Python的,因此入门也更加简单。
  • PyTorch的官网地址:https://pytorch.org

30、Apache Superset

  • 前面介绍的大数据工具,主要涉及大数据的存储、计算和查询,也涉及大数据的机器学习。但是这些数据的查询和挖掘结果如何直观地通过图表展现到UI上,以辅助更多的业务人员进行决策使用,这也是一个非常重要的课题。
  • 没有可视化工具,再好的数据分析也不完美,可以说,数据可视化是大数据的最后一公里,因此至关重要。
  • Apache Superset是由Airbnb开源的数据可视化工具,目前属于Apache孵化器项目,主要用于数据可视化工作。分析人员可以不用直接写SQL语句,而是通过选择指标、分组条件和过滤条件,即可绘制图表,这无疑降低了它的使用难度。它在可视化方面做得很出色,是开源领域中的佼佼者,即使与很多商用的数据分析工具相比,也毫不逊色。
  • Apache Superset的官网地址:http://superset.apache.org

31、Elasticsearch

  • Elasticsearch是一个开源的、分布式的、提供Restful API的搜索和数据分析引擎,它的底层是开源库Apache Lucene。它使用Java编写,内部采用Lucene做索引与搜索。它的目标是使全文检索变得更加简单。
  • Elasticsearch具有如下特征:一个分布式的实时文档存储;一个分布式实时分析搜索引擎;能横向扩展,支持PB级别的数据。
  • 由于Elasticsearch的功能强大和使用简单,维基百科、卫报、Stack Overflow、GitHub等都纷纷采用它来做搜索。现在,Elasticsearch已成为全文搜索领域的主流软件之一。
  • Elasticsearch的官网地址:https://www.elastic.co/cn

32、Jupyter Notebook

  • Jupyter Notebook是一个功能非常强大的Web工具,不仅仅用于大数据分析。它的前身是IPython Notebook,是一个基于Web的交互式笔记本,支持40多种编程语言。
  • 它的本质是一个Web应用程序,便于创建和共享程序文档,支持实时代码、数学方程、可视化和Markdown。它主要用于数据清理和转换、数值模拟、统计建模、机器学习等。
  • JupyterNotebook的官网地址:https://jupyter.org
    2.3 初探Hadoop世界_第7张图片

33、Apache Zeppelin

  • Apache Zeppelin和Jupyter Notebook类似,是一个提供交互式数据分析且基于Web的笔记本。它基于Web的开源框架,使交互式数据分析变得可行的。Zeppelin提供了数据分析、数据可视化等功能。
  • 借助Apache Zeppelin,开发人员可以构建数据驱动的、可交互且可协作的精美的在线文档,并且支持多种语言,包括Apache Spark、PySpark、Spark SQL、Hive、Markdown、Shell等。
  • Apache Zeppelin主要功能有:数据提取、数据挖掘、数据分析、数据可视化展示
  • Apache Zeppelin的官网地址:http://zeppelin.apache.org

  • 大数据工具发展非常快,有很多工具可能都没有听说过。就当前的行情来看,Apache Spark基本上已经成为批处理领域的佼佼者,且最新版本在流处理上也做得不错,是实现流批一体化数据处理很好的框架。
  • 需要大数据分析与处理的公司,应该根据自身的人员技能结构和业务需求,选择合适的大数据工具。虽然大数据工具非常之多,但是Hadoop、HBase、Kafka、Spark或Flink几乎是必备的大数据工具。

(四)Hadoop的版本情况

1、Hadoop发行版

  • Hadoop发行版本分为开源社区版和商业版。社区版是指由Apache软件基金会维护的版本,是官方维护的版本体系。商业版Hadoop是指由第三方商业公司在社区版Hadoop基础上进行了一些修改、整合以及各个服务组件兼容性测试而发行的版本。
    2.3 初探Hadoop世界_第8张图片
(1)Apache Hadoop
  • 官网链接:https://hadoop.apache.org
    2.3 初探Hadoop世界_第9张图片
(2)Cloudera Hadoop
  • 官网链接:https://www.cloudera.com/downloads/cdh
    2.3 初探Hadoop世界_第10张图片
(3)Hortonworks Hadoop
  • 2018年10月,均为开源平台的Cloudera与Hortonworks公司宣布他们以52亿美元的价格合并。如今就没有Hortonworks Hadoop的官网链接了。

2、Hadoop版本升级

  • Hadoop自诞生以来,主要分为Hadoop1、Hadoop2、Hadoop3三个系列的多个版本,目前市场上最主流的是Hadoop2.x版本。Hadoop2.x版本指的是第2代Hadoop,它是从Hadoop1.x发展而来的,并且相对于Hadoop1.x来说,有很多改进。Hadoop1.x内核主要由分布式存储系统HDFS和分布式计算框架MapReduce两个系统组成,而Hadoop2.x版本主要新增了资源管理框架Yarn以及其他工作机制的改变。
(1)Hadoop1.x
  • Hadoop1.x时期架构
    2.3 初探Hadoop世界_第11张图片
(2)Hadoop2.x
  • Hadoop2.x时期架构
    2.3 初探Hadoop世界_第12张图片
(3)Hadoop3.x
  • Hadoop3.x是基于JDK1.8开发的,较其他两个版本而言,在功能和优化方面发生了很大的变化,其中包括HDFS 可擦除编码、多Namenode支持、MR Native Task优化等。
  • 据Apache hadoop 的最新消息,Hadoop3.x将会调整方案架构,将Mapreduce 基于内存+IO+磁盘,共同处理数据。其中,在Hadoop3.x中改变最大的是HDFS,它通过最近Block块进行计算,根据最近计算原则,将本地Block块加入到内存,先计算,然后通过IO,共享内存计算区域,最后快速形成计算结果,其计算速度比Spark快10倍。

三、归纳总结

  • 回顾本节课所讲的内容,并通过提问的方式引导学生解答问题并给予指导。

四、上机操作

  • 形式:单独完成
  • 题目:掌握Hadoop的生态体系与版本情况
  • 要求:根据讲课笔记给出的提纲,上网收集资料,对于Hadoop的前世今生与生态体系有更深入的了解,并利用XMind绘制思维导图。

你可能感兴趣的:(数据清洗和预处理,大数据离线分析,hadoop,大数据,分布式)