目录

  • 1 课程资料
    • 1.1 课程标准
    • 1.2 教学日历
    • 1.3 教案
  • 2 大数据时代
    • 2.1 大数据概述
    • 2.2 大数据的4V特征和关键技术
    • 2.3 大数据与云计算、物联网的关系
    • 2.4 直播录屏
    • 2.5 章节测试
  • 3 大数据处理架构Hadoop
    • 3.1 平台搭建(VM+UbuntuKylin16.04+Hadoop伪分布式+Hbase伪分布式)
    • 3.2 Hadoop简介
    • 3.3 Hadoop的版本
    • 3.4 Hadoop项目结构
    • 3.5 Hadoop安装与配置
    • 3.6 Hadoop伪分布式集群搭建
    • 3.7 章节测试
  • 4 分布式文件系统HDFS简介
    • 4.1 分布式文件系统HDFS简介
      • 4.1.1 HDFS的基本操作实验
    • 4.2 HDFS的基本概念
    • 4.3 HDFS的体系结构
    • 4.4 HDFS的存储策略
    • 4.5 HDFS的数据读写过程
      • 4.5.1 第一关:HDFS Java API编程 ——文件读写
    • 4.6 第2关:HDFS-JAVA接口之上传文件
    • 4.7 章节测试
  • 5 分布式数据HBASE
    • 5.1 HBASE简介
    • 5.2 HBASE数据模型
    • 5.3 HBASE的实现原理
    • 5.4 HBASE运行机制
    • 5.5 HBASE的应用方案。
    • 5.6 章节测试
    • 5.7 Hbase数据库的安装
  • 6 MapReduce概述
    • 6.1 分布式并行编程方式
    • 6.2 MapReduce模型
    • 6.3 MapReduce体系结构
    • 6.4 MapReduce的工作流程
    • 6.5 shuffle操作的过程原理
    • 6.6 章节测试
  • 7 Spark简介
    • 7.1 ​ Spark简介
    • 7.2 Spark与Hadoop的对比
    • 7.3 Spark运行架构基本概念和架构设计
    • 7.4 Spark运行基本流程
    • 7.5 RDD设计与运行原理
    • 7.6 Spark应用实例
    • 7.7 章节测试
  • 8 流计算
    • 8.1 流计算概念及框架
    • 8.2 流计算处理流程及应用
    • 8.3 章节测试
  • 9 大数据的应用
    • 9.1 大数据的应用领域
    • 9.2 大数据助力精准防疫
    • 9.3 章节测试
  • 10 拓展阅读
    • 10.1 区块链
    • 10.2 COVID-19疫情的数据科学实践之Python疫情数据爬取
    • 10.3 大数据技术工具
      • 10.3.1 交通大数据案例
  • 11 主题讨论
    • 11.1 主题讨论
Hadoop项目结构



2.3 Hadoop项目结构

这一节我们来详细看一下Hadoop的项目结构,Hadoop项目是由两大核心发展起来的,现在衍生出了非常多的子项目,形成了丰富的生态圈。在这个生态圈内,各个不同的产品都加入进来。有些开始是在企业内部使用,但是现在也都贡献出来,放在社区去开源,去免费了。如今Apache Hadoop已成为大数据行业发展背后的驱动力。Hive和Pig等技术也经常被提到,但是他们都有什么功能,为什么会需要奇怪的名字(如Oozie,ZooKeeper、Flume)。

在这节当中,我们重点探讨Hadoop系统的组成部分,并解释各个组成部分的功能。

Hadoop生态圈的产品越来越丰富。包括国内的华为公司,也都在为Hadoop社区的发展贡献力量,华为公司对整个Hadoop的贡献,是排在微软和谷歌之前的。华为公司可以说是做了非常多的工作。

我们从底层开始看起。

最开始Hadoop1.0版本,核心组件就有HDFS和MapReduce这两个。HDFS是负责分布式存储,怎样将数据存储在成百上千台机器上,存储起来之后也要进行相关的处理,在处理之前必须要有相关的框架去调度计算资源,底层这么多资源主要是靠Yarn框架去调度。Yarn专门负责调度内存,CPU带宽等计算资源。上面这些是完成具体的计算的,在二代以上的框架图中,MapReduce不是做分布式计算而是做离线批处理的。所以,做实时计算就不要用MapReduce。

Tez会把很多的Mapreduce作业进行分析优化之后呢,构建出一个有向无环图图,为什么要构建这个图呢?因为他可以保证你可以获得最好的处理效率。可以告诉你有些工作需要先做,哪些可以后做,哪些可以避免重复去做,它会给你构建一个有向无环图,它相当于一个流程,可以实现这么个功能

Spark是一个通用计算引擎,能对大规模数据进行快速分析,可用它来完成各种各样的运算,包括 SQL 查询、文本处理、机器学习等,而在 Spark 出现之前,我们一般需要学习各种各样的引擎来分别处理这些需求。Spark不依赖于MapReduce,它使用了自己的数据处理框架。Spark使用内存进行计算,速度更快。而MapReduce是基于磁盘的。Spark本身就是一个生态系统,除了核心API之外,Spark生态系统中还包括其他附加库,可以在大数据分析和机器学习领域提供更多的能力,如Spark SQL,Spark Streaming,Spark MLlib,Spark GraphX,BlinkDB,Tachyon等。很多企业目前会使用Spark来取代MapReduce。


数据仓库,是为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合。它是单个数据存储,出于分析性报告和决策支持目的而创建。 为需要业务智能的企业,提供指导业务流程改进、监视时间、成本、质量以及控制。 Hive是一种基于Hadoop的数据仓库,它的Logo是一只会飞的大象,身体看起来更像一只蜜蜂,辛勤采集数据的蜜蜂。Hive利用HDFS存储数据,利用MapReduce查询数据,由facebook开源,最初用于解决海量结构化的日志数据统计问题。Hive定义了一种类似SQL的查询语言(HQL),将SQL转化为MapReduce任务在Hadoop上执行。通常用于离线分析。


Hive可以用于企业数据分析,Hive是完成批量数据处理的。

在Hadoop生态系统中,有这样一个重要的架构,它对外的标志是一个可爱的小猪形象,而名称也同样是Pig,不过你可千万不要以为它就真的和小猪一样无甚本事哦!就为大家介绍这个可爱的架构,Hadoop生态系统不可或缺的一员——Pig。

Pig是什么?Pig是一种轻量级的脚本语言。

Pig最早是雅虎公司的一个基于Hadoop的并行处理架构,后来Yahoo将Pig捐献给Apache的一个项目,由Apache来负责维护。Pig是一个基于 Hadoop的大规模数据分析平台,它提供的SQL-like语言叫Pig Latin,该语言的编译器会把类SQL的数据分析请求转换为一系列经过优化处理的MapReduce运算。

Pig为复杂的海量数据并行计算提供了一个简易的操作和编程接口,这一点和FaceBook开源的Hive一样简洁,清晰,易上手! Pig可加载数据、表达转换数据以及存储最终结果。同时Pig可扩展使用Java中添加的自定义数据类型并支持数据转换。

Pig有两种运行模式:Local模式和MapReduce模式。Local模式只能访问本地系统文件,一般用于处理小规模的数据集,不需要Hadoop集群环境的支持。MapReduce模式运 行于Hadoop集群环境上,Pig将Pig Latin程序编译为MapReduce作业执行。Pig程序的运行由三种方法:脚本文件、Grunt Shell和程序嵌入式。这三种方法均适用于Local模式和MapReduce模式,在Local模式与MapReduce模式下的执行几乎一样,只需 说明采用的模式就行。Pig和Hive总是令人困惑的。Hive更适合于数据仓库的任务,Hive主要用于静态的结构以及需要经常分析的工作。Hive与SQL相似促使其成为Hadoop与其他BI工具结合的理想交集。Pig赋予开发人员在大数据集领域更多的灵活性,并允许开发简洁的脚本用于转换数据流以便嵌入到较大的应用程序。Pig相比Hive相对轻量,它主要的优势是相比于直接使用Hadoop Java APIs可大幅削减代码量。正因为如此,Pig仍然是吸引大量的软件开发人员。

再看看左侧这个Zookeeper是什么用途呢,它的中文意思是动物园管理员。它是做分布式协调一致性服务的,一些分布式锁,分布式集群管理,这些都是通过Zookeeper来做的。后面讲HBase的时候,大家会看到它的身影,HBase当中有集群,集群中有这么多的机器,选择哪个机器当管家,管理剩余的机器呢,这就是Zookeeper的工作,由Zookeeper来帮你把它选出来,但是除了这个,它做的工作还有很多,一个是做集群管理,还可以做分布式锁一致性。

随着越来越多的项目加入Hadoop大家庭并成为集群系统运作的一部分,大数据处理系统需要负责协调工作的的成员。随着计算节点的增多,集群成员需要彼此同步并了解去哪里访问服务和如何配置,ZooKeeper正是为此而生的。

而在Hadoop执行的任务有时候需要将多个Map/Reduce作业连接到一起,它们之间或许批次依赖。Oozie组件提供管理工作流程和依赖的功能,并无需开发人员编写定制的解决方案。

再看Hbase,我们知道HDFS是一个分布式文件系统,读写方式主要是顺序读写,而在实际应用中,很多是需要随机读写的,那么随机读写靠什么产品来满足呢,那就是这个面向列存储的Hbase数据库。HBase是一个分布式的、面向列的开源数据库,这项技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。它其实呢也是来源于Google。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。它可以支持上百万列的超大型数据库,它执行随机读写和实时应用,后面会专门给大家讲Hbase数据库。

Flume最早是Cloudera提供的日志收集系统,目前是Apache下的一个孵化项目。Flume是干嘛的呢,Flume是专门做日志搜集的,很多流式数据做数据分析的时候,比如用户去访问阿里巴巴,淘宝这些网站,就会实时生成很多的流数据。这些实时流你要对它进行实时分析怎么办呢,必须有一套工具把这些数据收集过来,那么这个Flume就是专门帮你做这种日志收集的。同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。

当前Flume有两个版本Flume 0.9X版本的统称Flume-og,Flume1.X版本的统称Flume-ng。由于Flume-ng经过重大重构,与Flume-og有很大不同,使用时请注意区分。美团的日志收集系统负责美团的所有业务日志的收集,并分别给Hadoop平台提供离线数据和Storm平台提供实时数据流。美团的日志收集系统基于Flume设计和搭建而成。

再看Sqoop,Sqoop是什么呢?Sqoop是用来完成数据导入导出的。很多企业内部,比如Oracle,很多企业都保存了大量的关系型数据。现在到了大数据时代,我们需要把它用到大数据平台上面的技术去分析,那怎么办呢,我们必须要把这些关系型数据库当中相关的产品导入到Hadoop平台上面来,你如果自己去编程就太慢了,所以它专门给你开发了一套工具Sqoop有了这个工具你就可以把关系型数据库中的数据直接导到Hadoop平台上来,也可以导入到HDFS当中去。也可以导入到Hbase当中去,或者也可以导入到Hive当中去。反过来,Sqoop可以把Hadoop上面的数据导出到关系型数据库当中去。这也是很需要的。Sqoop项目开始于2009年,最早是作为Hadoop的一个第三方模块存在,后来为了让使用者能够快速部署,也为了让开发人员能够更快速的迭代开发,Sqoop独立成为一个Apache项目。Sqoop和Flume可改进数据的互操作性和其余部分。Sqoop功能主要是从关系数据库导入数据到Hadoop,并可直接导入到HFDS或Hive。而Flume设计旨在直接将流数据或日志数据导入HDFS。

Hive具备的友好SQL查询是与繁多数据库的理想结合点,数据库工具通过JDBC或ODBC数据库驱动程序连接。

最上层有一个工具叫Ambari,这是一个安装部署的工具,Ambari是最新加入Hadoop的项目,Ambari项目旨在将监控和管理等核心功能加入Hadoop项目。Ambari可帮助系统管理员部署和配置Hadoop,升级集群以及监控服务。还可通过API集成与其他的系统管理工具。

它会帮你在一个集群上面非常智能化的去部署和管理,一整套Hadoop平台上的各个组件,所以说它是一个部署工具,这是Hadoop2.0以后的架构,我在这里给大家描述出来了。