找回密码
 立即注册
搜索

2020年流行的数据科学工具介绍系列1——处理大数据的工具

枕闕 2024-4-30 19:15:36 显示全部楼层 阅读模式
AI最智能 刘嵩 2020.7.2

数据科学是需要面临众多学科和领域的交叉科学,那么执行数据科学任务的最佳工具是什么? 作为数据科学的新手,你应该选择哪种工具?

数据科学和机器学习的不同领域,需要使用不同的工具。下面,我们将按其用法和优点的细分,来介绍数据科学和机器学习中得到广泛使用的工具。
1.处理大数据的工具


要真正把握大数据背后的含义,我们必须理解将数据定义为大数据的基本原则。 这些被称为大数据的3V:
    数量 Volume 多样性 Variety 速度 Velocity

整个大数据的处理流程可以定义为:在合适工具的辅助下,对广泛异构的数据源进行抽取和集成,结果按照一定的标准进行统一存储,并利用合适的数据分析技术对存储的数据进行分析, 从中提取有益的知识并利用恰当的方式将结果展现给终端用户。具体来说,可以分为数据抽取与集成、数据分析以及数据解释。
1.1 处理数量的工具


顾名思义,数量是指规模和数据量。 你要知道世界上90%以上的数据,是在过去的两年里创建的!近十年来,随着数据量的增加,计算和存储成本的降低,使得收集和存储大量数据变得更加容易。数据量定义了它是否符合大数据的资格!

当我们有从1Gb到大约10Gb的数据时,传统的数据科学工具在这些情况下往往工作得很好。 那么这些工具是什么呢??
    微软Excel—Excel是处理少量数据的最简单和最流行的工具。 它支持的行的最大数量只是100万以上的阴影,一个sheet 一次只能处理多达16,380列。当数据量比较大时,这是不够的。



    微软Access—它是微软常用的数据存储工具。 是一种基于文件的小型数据库,它能处理的数据最多达2Gb。



    SQL数据库—SQL数据库是自20世纪70年代以来最流行的数据管理系统,它是几十年来的主要数据库解决方案。 SQL仍然很受欢迎,包括著名的Orace, SQLSerer, MySQL等。但随着数据库的不断增长,它们变得难以扩展。



如果您的数据大于10Gb,一直到存储量大于1Tb,那么您需要下面的工具:
    Hadoop—Hadoop是Apache的顶级项目,是一个开源的分布式框架,用于管理大数据的数据处理和存储。Hadoop是一个可以更容易开发和运行处理大规模数据的软件平台,Hadoop已经发展成为目前最流行的大数据处理平台。

用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。Hadoop是一个开源的可运行于大规模集群上的分布式并行编程框架,借助于Hadoop,程序员可以轻松地编写分布式并行程序,将其运行于计算机集群上,完成海量数据的计算。Hadoop框架本身包括以下四个模块:

      Hadoop Common:这些是其他Hadoop模块所需的Java库和实用程序。这些库提供文件系统和操作系统级抽象,并包含启动Hadoop所需的必要Java文件和脚本。Hadoop YARN:这是作业调度和集群资源管理的框架。Hadoop分布式文件系统(HDFS):提供对应用程序数据的高吞吐量访问的分布式文件系统。Hadoop分布式文件系统(HDFS)基于Google文件系统(GFS),并提供一个分布式文件系统,旨在以可靠,容错的方式在大型计算机(数千台计算机)上运行小型计算机。HDFS使用主/从架构,其中主机由管理文件系统元数据的单个NameNode和存储实际数据的一个或多个从属数据节点组成

      Hadoop MapReduce: 这是基于YARN的大型数据集并行处理系统。MapReduce框架由单个主JobTracker和每个群集节点的一个从属TaskTracker组成。主管负责资源管理,跟踪资源消耗/可用性,并对从站上的作业组件任务进行调度,监控和重新执行故障任务。从站TaskTracker按照主机的指示执行任务,并定期向主设备提供任务状态信息。通常输入和输出都存储在文件系统中。该框架负责调度任务,监视它们并重新执行失败的任务。




Hadoop架构图

目前,围绕Hadoop,已经构建起庞大的分布式大数据软件生态圈,在国内外得到了广泛的应用。



Hadoop生态圈

HDFS和MapReduce上边在介绍Hadoop框架时已经介绍过,它们是其他Hadoop生态圈软件运行的基础。HDFS是一种分布式文件系统,运行于大型商用机集群,HDFS为HBase和Hive等提供了高可靠性的底层存储支持。MapReduce是一种分布式数据处理模式和执行环境,为HBase和Hive等提供了高性能的计算能力。下边是Hadoop生态圈其他软件的简要介绍,其中一些会在下边工具的具体分类介绍时详细介绍。

(1)Avro用于数据序列化的系统;

(2)HBase位于结构化存储层,是一个分布式的列存储数据库;

(3)Zookeeper是一个分布式的、高可用性的协调服务,提供分布式锁之类的基本服务,用于构建分布式应用,为HBase提供了稳定服务和failover机制;

(4)Hive是一个建立在Hadoop 基础之上的数据仓库,它提供了一些用于数据整理、特殊查询和分析存储在Hadoop文件中的数据集的工具;

(5)Pig是一种数据流语言和运行环境,用以检索非常大的数据集,大大简化了Hadoop常见的工作任务;

(6)Sqoop为HBase提供了方便的RDBMS数据导入功能,使得传统数据库数据向HBase中迁移变得非常方便。
    Hive—Hive是建立在 Hadoop 上的数据仓库基础构架,是Hadoop生态圈的重要成员。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。Hive 定义了简单的类 SQL 查询语言,称为 HQL,它允许熟悉 SQL 的用户查询数据。同时,这个语言也允许熟悉 MapReduce 开发者的开发自定义的 mapper 和 reducer 来处理内建的 mapper 和 reducer 无法完成的复杂的分析工作。Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。






Hive架构图

由上图可知,hadoop和mapreduce是hive架构的根基。Hive架构包括如下组件:CLI(command line interface)、JDBC/ODBC、Thrift Server、WEB GUI、metastore和Driver(Complier、Optimizer和Executor),这些组件可以分为两大类:服务端组件和客户端组件。
Apache Spark—Spark作为Apache顶级的开源项目,同样构建于Hadoop之上。Spark是基于内存计算的大数据并行计算框架。Spark基于内存计算,提高了在大数据环境下数据处理的实时性,同时保证了高容错性和高可伸缩性,允许用户将Spark部署在大量廉价硬件之上,形成集群。
Spark是一个快速、通用的大规模数据处理引擎,和Hadoop的MapReduce计算框架类似,但是相对于MapReduce,Spark凭借其可伸缩、基于内存计算等特点,以及可以直接读写Hadoop上任何格式数据的优势,进行批处理时更加高效,并有更低的延迟。相对于“one stack to rule them all”的目标,实际上,Spark已经成为轻量级大数据快速处理的统一平台,各种不同的应用,如实时流处理、机器学习、交互式查询等,都可以通过Spark建立在不同的存储和运行系统上。

Spark于2009年诞生于加州大学伯克利分校AMPLab。目前,已经成为Apache软件基金会旗下的顶级开源项目。相对于MapReduce上的批量计算、迭代型计算以及基于Hive的SQL查询,Spark可以带来上百倍的性能提升。目前Spark的生态系统日趋完善,Spark SQL的发布、Hive on Spark项目的启动以及大量大数据公司对Spark全栈的支持,让Spark的数据分析范式更加丰富。



Spark以其低延时的出色表现,正在成为继Hadoop的MapReduce之后,新的、最具影响的大数据框架之一。以Spark为核心的整个生态圈,最底层为分布式存储系统HDFS、Amazon S3、Mesos,或者其他格式的存储系统(如HBase);资源管理采用Mesos、YARN等集群资源管理模式,或者Spark自带的独立运行模式,以及本地运行模式。在Spark大数据处理框架中,Spark为上层多种应用提供服务。例如,Spark SQL提供SQL查询服务,性能比Hive快3~50倍;MLlib提供机器学习服务;GraphX提供图计算服务;Spark Streaming将流式计算分解成一系列短小的批处理计算,并且提供高可靠和吞吐量服务。值得说明的是,无论是Spark SQL、Spark Streaming、GraphX还是MLlib,都可以使用Spark核心API处理问题,它们的方法几乎是通用的,处理的数据也可以共享,不仅减少了学习成本,而且其数据无缝集成大大提高了灵活性。

下边是Spark生态圈下各类软件的简要介绍。



(1)Spark Spark是整个BDAS的核心组件,是一个大数据分布式编程框架,不仅实现了MapReduce的算子map函数和reduce函数及计算模型,还提供更为丰富的算子,如filter、join、groupByKey等.其底层采用Scala这种函数式语言书写而成,并且所提供的API深度借鉴Scala函数式的编程思想,提供与Scala类似的编程接口。 图1-2为Spark的处理流程(主要对象为RDD)。



Spark将数据在分布式环境下分区,然后将作业转化为有向无环图(DAG),并分阶段进行DAG的调度和任务的分布式并行处理。

(2)Shark Shark是构建在Spark和Hive基础之上的数据仓库。Shark底层复用Hive的解析器、优化 器以及元数据存储和序列化接口。Shark会将Hive QL编译转化为一组Spark任务,进行分布式运算。

(3)Spark SQL Spark SQL提供在大数据上的SQL查询功能,类似于Shark在整个生态系统的角色,它们可以统称为SQL on Spark。Spark SQL使用Catalyst做查询解析和优化器,并在底层使用Spark作为执行引擎实现SQL的Operator

(4)Spark Streaming Spark Streaming通过将流数据按指定时间片累积为RDD,然后将每个RDD进行批处理,进而实现大规模的流数据处理。其吞吐量能够超越现有主流流处理框架Storm,并提供丰富的API用于流数据计算。

(5)GraphX GraphX基于BSP模型,在Spark之上封装类似Pregel的接口,进行大规模同步全局的图计算,尤其是当用户进行多轮迭代时,基于Spark内存计算的优势尤为明显

(6)Tachyon Tachyon是一个分布式内存文件系统,可以理解为内存中的HDFS。为了提供更高的性能,将数据存储剥离Java Heap

(7)Mesos Mesos是一个资源管理框架,提供类似于YARN的功能。用户可以在其中插件式地运行Spark、MapReduce、Tez等计算框架的任务。Mesos会对资源和任务进行隔离,并实现高效的资源任务调度。

(8)BlinkDB BlinkDB是一个用于在海量数据上进行交互式SQL的近似查询引擎。它允许用户通过在查询准确性和查询响应时间之间做出权衡,完成近似查询。其数据的精度被控制在允许的误差范围内。为了达到这个目标,BlinkDB的核心思想是:通过一个自适应优化框架,随着时间的推移,从原始数据建立并维护一组多维样本;通过一个动态样本选择策略,选择一个适当大小的示例,然后基于查询的准确性和响应时间满足用户查询需求。

1.2处理多样性的工具

多样性是指存在的不同类型的数据。数据类型可能是结构化和非结构化数据。正如您在结构化数据的情况下所观察到的,这些数据类型有一定的顺序和结构,而在非结构化数据不遵循任何结构或模式,这些类型的数据是多种多样的。那么市场上有哪些不同的数据科学工具可以用于管理和处理这些不同的数据类型?

最常见的两种数据库类型是SQL和NoSQL。 在NoSQL出现之前,SQL一直是市场主导者。



SQL的一些例子是Oracle、My SQL、SQLite,而流行的NoSQL数据库包括HBase、MongoDB、Cassandra等。这些No SQL数据库由于能够扩展和处理大量动态的多样性数据而得到的越来越广泛的采用。
    HBase—HBase是建立在Hadoop文件系统之上的分布式面向列的数据库。它是一个开源项目,是横向扩展的。HBase是一个数据模型,类似于谷歌的大表设计,可以提供快速随机访问海量结构化数据。它利用了Hadoop的文件系统(HDFS)提供的容错能力。它是Hadoop的生态系统,提供对数据的随机实时读/写访问,是Hadoop文件系统的一部分。人们可以直接或通过HBase的存储HDFS数据。使用HBase在HDFS读取消费/随机访问数据。 HBase在Hadoop的文件系统之上,并提供了读写访问。HBase是一个面向列的数据库,在表中它由行排序。表模式定义只能列族,也就是键值对。一个表有多个列族以及每一个列族可以有任意数量的列。后续列的值连续地存储在磁盘上。表中的每个单元格值都具有时间戳。HBase是一种Hadoop数据库,经常被描述为一种稀疏的,分布式的,持久化的,多维有序映射,它基于行键、列键和时间戳建立索引,是一个可以随机访问的存储和检索数据的平台。HBase不限制存储的数据的种类,允许动态的、灵活的数据模型,不用SQL语言,也不强调数据之间的关系。HBase被设计成在一个服务器集群上运行,可以相应地横向扩展。






HBase物理架构



HBase数据模型



HBase读写流程
    MongoDB—MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统,特点是高性能、易部署、易使用,存储数据十分方便。在高负载的情况下,添加更多的节点,可以保证服务器性能。MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。MongoDB的特点包括:面向集合存储,易于存储对象类型的数据; 模式自由; 支持动态查询; 支持完全索引,包含内部对象; 支持复制和故障恢复; 使用高效的二进制数据存储,包括大型对象; 文件存储格式为BSON(一种JSON的扩展)。



关系型数据库和非关系型数据库对比

1.3处理速度的工具

第三个也是最后一个V表示速度.. 这是捕获数据的速度。 这包括实时数据和非实时数据。 我们将主要讨论实时数据。

我们周围有很多例子来捕捉和处理实时数据.. 最复杂的是自动驾驶汽车收集的传感器数据。想象一下自动驾驶汽车-汽车必须动态收集和处理有关汽车道,距离其他车辆等数据,而这都发生在同一时间!

收集实时数据的其他一些例子包括:
    视频数据流 股票交易 信用卡交易欺诈检测 网络数据-社交媒体(Facebook、Twitter等)。

那么现在常用的处理实时数据的数据科学工具有:
    Apache Kafka—Kafka是Apache的开源工具,Apache Kafka是一个快速、可扩展的、高吞吐、可容错的分布式发布订阅消息系统。Kafka具有高吞吐量、内置分区、支持数据副本和容错的特性,适合在大规模消息处理场景中使用。



    Apache Storm—Apache Storm是一个分布式实时大数据处理系统。 Storm设计用于在容错和水平可扩展方法中处理大量数据。 它是一个流数据框架,具有最高的摄取率。 虽然Storm是无状态的,它通过Apache ZooKeeper管理分布式环境和集群状态。



    亚马逊Kinesis-亚马逊的Amazon Kinesis Streams类似于Kafka,它被提供为一个开箱即用的解决方案,Kinesis 是一种在AWS 上实时处理大规模的数据流时可弹性扩展的平台,可提供托管服务,让您能够轻松地加载和分析流数据,同时还可让您根据具体需求来构建自定义流数据应用程序。



    Apache Flink—Flink是一款分布式的计算引擎,是一个Stateful Computations Over Streams,即数据流上的有状态的计算。Flink可以用来做批处理,即处理静态的数据集、历史的数据集;也可以用来做流处理,即实时地处理一些实时数据流,实时地产生数据的结果;也可以用来做一些基于事件的应用。 Flink的优点是高性能、容错和高效的内存管理。



现在我们已经掌握了用于处理大数据的不同工具。

接下来的系列第二篇里,我们将为您介绍通过先进的数据分析和机器学习的技术和算法,来分析和利用数据的工具。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

大神点评2

137237205 2024-4-30 19:16:26 显示全部楼层
收藏了
回复

使用道具 举报

hkrhtkh 2024-4-30 19:16:45 显示全部楼层
转发了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册