大数据学习-入门

Posted on By Vivian Sun

一、大数据学习-入门

本文是对大数据学习入门学习的记录和整理。

关注的设计原理更好些,特性的话倒是不太重要

二、什么是大数据 [1]

首先,大数据不是什么完完全全的新生事物,Google的搜索服务就是一个典型的大数据运用。

根据客户的需求,Google实时从全球海量的数字资产(或数字垃圾)中快速找出最可能的答案,呈现给你,就是一个最典型的大数据服务。

只不过过去这样规模的数据量处理和有商业价值的应用太少,在IT行业没有形成成型的概念。

现在随着全球数字化、网络宽带化、互联网应用于各行各业,累积的数据量越来越大,

越来越多企业、行业和国家发现,可以利用类似的技术更好地服务客户、发现新商业机会、扩大新市场以及提升效率,才逐步形成大数据这个概念。

1. 大数据概念

大数据:数据量特别大,数据类型特别复杂的数据集。这些数据集无法使用传统的数据库进行抓取、存储、管理和处理。

大数据的主要特点4V:

  • 数据量大(Volume): 一般在10TB规模左右,但在实际应用中,很多企业用户把多个数据集放在一起,已经形成了PB级的数据量
  • 数据类型特别复杂(Variety): 数据来自多种数据源,数据种类和格式日渐丰富,已冲破了以前所限定的结构化数据范畴,囊括了半结构化和非结构化数据
  • 数据处理速度快(Velocity): 在数据量非常庞大的情况下,也能够做到数据的实时处理
  • 数据真实性高(Veracity): 随着社交数据、企业内容、交易与应用数据等新数据源的兴趣,传统数据源的局限被打破,企业愈发需要有效的信息之力以确保其真实性及安全性。

2. 案例

  • PRADA收集衣服试穿信息对产品做分析和改进

  • 中国粮食统计: 采用遥感卫星,通过图像识别,把中国所有的耕地标识、计算出来,然后把中国的耕地网格化,对每个网格的耕地抽样进行跟踪、调查和统计,然后按照统计学的原理,计算(或者说估算)出中国整体的整体粮食数据。这种做法是典型采用大数据建模的方法,打破传统流程和组织,直接获得最终的结果。

  • 电影《永无止境》中炒股的故事:将世界上已经存在的海量数据(包括公司财报、电视、几十年前的报纸、互联网、小道消息等)挖掘出来,串联起来,甚至将Face Book、Twitter的海量社交数据挖掘得到普通大众对某种股票的感情倾向,通过海量信息的挖掘、分析,使一切内幕都不是内幕,使一切趋势都在眼前,结果在10天内他就赢得了200万美元

总之大数据可以理解为:海量数据的产生、获取、挖掘及整合,使之展现出巨大的商业价值

三、hadoop简介

  • Hadoop名字是虚构的,来自一个棕黄色的大象玩具。 发音是[hædu:p]
  • Hadoop是一个由Apache基金会所开发的分布式系统基础架构。
  • Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算

  • Hadoop是一个能够对大量数据进行分布式处理的软件框架。
  • Hadoop 以一种可靠、高效、可伸缩的方式进行数据处理。
    • Hadoop 是可靠的,因为它假设计算元素和存储会失败,因此它维护多个工作数据副本,确保能够针对失败的节点重新分布处理。
    • Hadoop 是高效的,因为它以并行的方式工作,通过并行处理加快处理速度。
    • Hadoop 还是可伸缩的,能够处理 PB 级数据。

Hadoop是一个能够让用户轻松架构和使用的分布式计算平台。用户可以轻松地在Hadoop上开发和运行处理海量数据的应用程序。 它主要有以下几个优点:

  • 高可靠性。Hadoop按位存储和处理数据的能力值得人们信赖。
  • 高扩展性。Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计的节点中。
  • 高效性。Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快。
  • 高容错性。Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。
  • 低成本。与一体机、商用数据仓库以及QlikView、Yonghong Z-Suite等数据集市相比,hadoop是开源的,项目的软件成本因此会大大降低。

四、Hadoop 的历史

一切起源于谷歌三篇开天辟地的论文:

  • Google FileSystem:怎么使用普通计算机存储海量的数据 (存储)
  • Google MapReduce:怎么快速的计算海量的数据 (计算)
  • Google BigTable:怎么实现海量数据的快速查询 (查询)

Doug Cutting (Hadoop之父Doug Cutting)在完成 Java 搜索引擎 Nutch(一个开源Java实现的搜索引擎) 的时候接触到了这三篇论文

根据其理论作出了 Java 的实现,就是 Hadoop 系统。随后将其开源并交与 Apache 基金会进行管理,Hadoop 就逐渐壮大起来。

Hadoop现在是Apache旗下的一套开源软件平台/架构

五、Hadoop生态圈 [2]

Hadoop 可以利用计算机集群,根据用户自定义的业务逻辑对海量数据进行分布式处理。

  • 通常我们说的 Hadoop 是指一个更广泛的概念–Hadoop 生态圈。
  • Hadoop 生态圈是指以 Hadoop 为基础发展出来的一系列技术,这些技术都是为了解决大数据处理过程中不断出现的新问题而产生的。

图中包含目前最流行的两个大数据处理框架 Hadoop 和 Spark。蓝色部分是 Hadoop 的生态圈组件,黄色部分是 Spark 生态圈组建。

1. Spark 和 Hadoop

  • Spark 提供的实时内存计算是比 Hadoop 中 MapReduce 快的多的技术
  • 但是 Spark 又依赖于 Hadoop 中的 HDFS 来存储数据。

虽然 Spark 也可以基于别的系统进行搭建,但是大家一致认为 Spark 和 Hadoop 更配。

2. 数据仓库的基本架构

底层是 HDFS,上面运行的是 MapReduce/Tez/Spark,在往上封装的是 Pig 和 Hive。

  1. HDFS(Hadoop Distributed FileSystem): 数据存储

    大数据技术首要的要求就是先把数据存下来

    HDFS的设计本质就是为了大量的数据能够横跨成千上万台机器存储,但是对于用户来说看到的是一个文件系统而不是许多文件系统。

  2. MR(MapReduce):计算模型

    能够存储数据后,接下来就要考虑怎么处理数据了

    一台计算机处理成T上P的数据可能需要几天甚至好几周,对于大部分公司都是不可接受的。例如微博的热搜,每24小时更新一次

    MapReduce/Tez/Spark 所要解决的问题:提供一种可靠的,能够运行在集群上的计算模型,解决计算机之间如何分配任务,如何通信,如何进行数据交换等问题。

  3. Hive(SQL 的方式封装MR)

    在使用了一段时间的 MapReduce 以后,程序员发现 MapReduce 的程序写起来太麻烦。于是出现了Pig 和 Hive,来封装更简单的方式去完成 MapReduce 程序。

    • Pig 是以类似脚本的方式去描述 MapReduce
    • Hive 则是以 SQL 的方式。它们会自动把脚本或者 SQL 翻译成 MapReduce 程序,然后丢给计算引擎去计算处理。

    有了 Hive 以后人们发现 SQL 的优势太大了。读[haɪv] 蜂巢

    • 一是容易写,一两行的 SQL 换成 MapReduce 可能要几十上百行。
    • 二是容易上手,即使非计算机背景的用户也可以很快的学会。
    • 三是易写易改,一看就懂,容易维护。

    自从 Hive 问世很快就成长为大数据仓库的核心技术。使用了一段时间的 Hive 后人们发现 Hive 运行在 MapReduce 上太慢了。

    于是有开发出了针对于 SQL 优化的技术 Impala,Drill 和 Presto 等。这些技术牺牲了系统的通用性和稳定性来提高 SQL 的效率,最终并没有流行起来。

3. Storm 流计算模型:更快的计算速度

如果想要更快的计算速度,比如视频网站的热博榜,要求更新延迟在一分钟内,上面的任何一种手段都无法胜任。

于是 Streaming(流)计算模型被开发出来了。Storm 是最流行的流计算平台。

  • 流处理的思路就是在数据进入系统的时候就进行处理,基本无延迟。
  • 缺点是不灵活,必须事先直到需要统计的数据,数据流过就没有了,没法进行补算。

因此它是个好东西,但还是无法代替上述体系的。

4. HBase

  • HBase 是一个构建于HDFS的分布式,面向列的存储系统。
  • 以 kv 对的方式存储数据并对存取操作做了优化,能够飞快的根据 key 获取绑定的数据。

例如从几个 P 的数据中找身份证号只需要零点几秒

5. 定制的组件

除此之外还有需要定制的组件

  • Mahout: 机器学习和推荐引擎。 读[məˈhaʊt]
  • Nutch 搜索引擎
  • Zookeeper 集群管理工具。读zookeeper,动物管理员
  • Sqoop Hadoop 和数据库之间的导入导出工具。读skup
  • Flume 日志采集工具。读[flu:m] 水槽
  • Oozie 作业流调度系统,工作流引擎服务器
    • 用于运行hadoop map/reduce和hive等任务工作流。
    • 读[‘u:zɪ] 驯象人,驭象者

6. yarn

为了使这么多工具有序的运行在同一个集群上,我们需要使用一个调度系统进行协调指挥。目前流行的是使用 yarn 来进行管理。

类似于RN的npm

小结

  • Hadoop是Doug基于Google的三篇论文:GFS(存储), MapReduce(计算), BigTable(搜索)的Java实现。
  • Hadoop是一个分布式系统基础架构,最核心的设计就是:HDFS和MR(MapReduce)
  • 数据仓库的基本架构:底层是 HDFS,上面运行的是 MapReduce/Tez/Spark,在往上封装的是 Pig 和 Hive
  • Hadoop生态相关的组件
    • Storm 最热门的流计算模型:更快的计算速度
    • HBase 基于HDFS的面向列的存储系统,从几个P的数据中找身份证号只需要零点几秒
  • Mahout: 机器学习和推荐引擎
  • Nutch 搜索引擎
  • Zookeeper 集群管理工具
  • Sqoop Hadoop 和数据库之间的导入导出工具
  • Flume 日志采集工具
  • Oozie 作业流调度系统/工作流引擎服务器
    • 用于运行hadoop map/reduce和hive等任务工作流。
    • 读[‘u:zɪ] 驯象人,驭象者
  • yarn 资源管理系统

Reference

《分布式系统概念与设计 原书第5版》

[1] 大数据文章必看(IT公司内部疯转)

[2] 什么是hadoop和大数据

一文看懂npm、yarn、pnpm之间的区别

hadoop 面试题