米乐6|米乐电竞|米乐官网
米乐6
米乐6
电话:0851-85824918
传真:0851-85824918转8018
E-mail: gyjlykj888@163.com
地址:贵阳市花果园中央商务区2号楼1单元44层
  您当前位置:首页 > 新闻中心 > 公司新闻
通俗介绍大数据技术

来源:米乐6    发布时间:2023-12-03 23:22:56

  如今,大家都在说大数据,比如AI算法、智慧城市、精准营销、推荐系统...

  但其实,大家可能仅仅是对“大数据”这三个词比较熟悉,至于大数据究竟是个啥,底层的技术结构、技术概念是什么,则完全不懂。

  麦肯锡全球研究所给出的定义是:一种规模大到在获取、存储、管理、分析方面大大超出了传统数据库软件工具能力范围的数据集合,具有海量的数据规模、快速的数据流转、多样的数据类型和价值密度低四大特征。

  大数据最大的特征,自然就是数据量巨大,大到传统的数据处理软件如Excel、Mysql等都无法很好的支持分析。这也代表着大数据阶段,无论是数据的存储还是加工计算等等过程,用到的处理技术也会完全不同,例如Hadoop、Spark等等。

  在企业内部,数据从生产、存储,到分析、应用,会经历各个处理流程。它们相互关联,形成了整体的大数据架构。

  通常来说,在我们最终查看数据报表,或者使用数据来进行算法预测之前,数据都会经历以下这么几个处理环节:

  数据处理:原始数据需要经过层层过滤、拼接、转换才能最终应用,数据处理就是这些过程的统称。一般来说,有两种类型的数据处理,一种是离线的批量处理,另一种是实时在线分析。

  数据应用:经过处理的数据可以对外提供服务,比如生成可视化的报表、作为互动式分析的素材、提供给推荐系统训练模型等等。

  我们现在常用的大数据技术,其实都是基于Hadoop生态的。Hadoop是一个分布式系统基础架构,换言之,它的数据存储和工艺流程都是分布式的,由多个机器共同完成。通过这样的并行处理,提高安全性和数据处理规模。

  Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算。我们大家可以把HDFS(Hadoop Distributed File System)理解为一套分布式的文件系统,大数据架构里的海量数据就是存储在这些文件里,我们每次分析,也都是从这些文件里取数。

  而MapReduce则是一种分布式计算过程,它包括Map(映射)和Reduce(归约)。当你向MapReduce框架提交一个计算作业时,它会首先把计算作业拆分成若干个Map任务,然后分配到不同的节点上去执行,每一个Map任务处理输入数据中的一部分,当Map任务完成后,Reduce会把前面若干个Map的输出汇总到一起并输出。相当于利用了分布式的机器,完成了大规模的计算任务。

  理解了大数据技术的基础——Hadoop,我们再来看看每个数据环节具体的技术。

  数据并不是天然就从Hadoop里生长出来,它往往存在于业务系统、外部文件里。当我们应该收集这些不同场景下的数据时,就要使用到各种不同的数据采集技术。这这中间还包括用于数据库同步的Sqoop,用于采集业务日志的Flume,还有用于数据传输的Kafka等等。

  数据迁移:Sqoop是一个在结构化数据和Hadoop之间进行批量数据迁移的工具,结构化数据可以是MySQL、Oracle等RDBMS。用户都能够在 Sqoop 的帮助下,轻松地把关系型数据库的数据导入到 Hadoop 与其相关的系统 (如HBase和Hive)中;同时也可以把数据从 Hadoop 系统里抽取并导出到关系型数据库里。

  日志采集:Flume是一个分布式的海量日志采集系统。支持在日志系统中定制各类数据发送方,并写到各种数据接受方的能力。它的基本结构如下,包含三个部分:数据收集组件Source,缓存Channel,保存Sink。多个Agent也能组合使用。

  数据传输:Kafka是一个著名的分布式消息队列。通过它,数据的发送方和接收方可以准确、稳定的传输数据。它以可水平扩展,并支持高吞吐率。kafka的结构如下图所示:

  采集下来的数据需要保存到Hadoop里,从物理的角度看,它们保存为一个一个的HDFS文件。当然,除了HDFS以外,Hadoop还提供了一些配套工具,如便于实时处理数据的列族数据库Hbase,以及一个类似SQL的查询工具Hive,方便对HDFS数据来进行查询。

  HDFS:在Hadoop里,底层的数据文件都存储在HDFS里,它是大数据的底层基础。HDFS容错率很高,即便是在系统崩溃的情况下,也能够在节点之间快速传输数据。

  Hbase:是一个高可靠性、高性能、面向列、可伸缩的分布式列族数据库,可以对大数据进行随机性的实时读取/写入访问。基于HDFS而建。

  Hive:是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,能够最终靠类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。Hive通过元数据来描述Hdfs上的结构化文本数据,通俗点来说,就是定义一张表来描述HDFS上的结构化文本,包括各列数据名称,数据类型是什么等,方便我们处理数据,当前很多SQL ON Hadoop的计算引擎均用的是hive的元数据,如Spark SQL、Impala等。

  批数据处理:批处理是指一次批量的数据处理,它存在明确的开始和结束节点。常见的技术包括Hadoop自带的MapReduce,以及Spark。

  MapReduce:如前文所说,通过Hadoop的MapReduce功能,可以将大的数据处理任务,拆分为分布式的计算任务,交给大量的机器处理,最终等处理完后拼接成我们应该的结果。这是一张批量处理的逻辑。

  Spark:Spark是一个高速、通用大数据计算处理引擎。拥有Hadoop MapReduce所具有的优点,但不同的是Job的中间输出结果能保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。

  流数据处理:对于一些需要实时不间断处理的数据而言,等待MapReduce一次次缓慢加工,将文件反复保存到HDFS里并读取,显然太费时间了。一些新的流式数据处理工具被研发出来,它们的处理流程和批处理完全不同:

  Spark Streaming:基于 Spark,另辟蹊径提出了 D-Stream(Discretized Streams)方案:将流数据切成很小的批(micro-batch),用一系列的短暂、无状态、确定性的批处理实现流处理。

  Storm:是Twitter开源的分布式实时大数据处理框架,被业界称为实时版Hadoop。

  Flink:能够理解为Storm的下一代解决方案,与HDFS完全兼容。Flink提供了基于Java和Scala的API,是一个高效、分布式的通用大数据分析引擎。更主要的是,Flink支持增量迭代计算,使得系统能快速地处理数据密集型、迭代的任务。

  在完成大数据处理任务的过程中,难免会涉及到多个任务、服务之间协调。这里面既包括资源的协调,也包括任务的协调。

  ZooKeeper:是一个分布式的,开放源码的分布式应用程序协调服务。假设我们的程序是分布式部署在多台机器上,如果我们要改变程序的配置文件,需要逐台机器去修改,非常麻烦,现在把这些配置全部放到zookeeper上去,保存在 zookeeper 的某个目录节点中,然后所有相关应用程序对这个目录节点进行监听,一旦配置信息发生明显的变化,每个应用程序就会收到 zookeeper 的通知,然后从 zookeeper 获取新的配置信息应用到系统中,以此保证各个程序的配置信息同步。

  Yarn:是一个分布式资源调度器组件。这个组件的最大的作用是在每次接收到请求后,会查看当下的各个子节点的状况,统筹出运算资源的调度方案来保证任务可以顺利执行。通常来说,Yarn所调度的资源常常包括磁盘空间的资源,内存的资源和通讯带宽的资源等。

  Kettle:这是一个ETL工具集,它允许你管理来自不同数据库的数据,通过提供一个图形化的界面来描述任务过程和彼此的依赖关系,以此来设定任务流程。

  Azkaban:是一款基于Java编写的任务调度系统任务调度,来自LinkedIn公司,用于管理他们的Hadoop批处理工作流。Azkaban根据工作的依赖性进行排序,提供友好的Web用户界面来维护和跟踪用户的工作流程。

  数据处理完后,最终要想发挥价值,很重要的环节是做多元化的分析和展示。很多工具都能提供分析支持,例如Kylin和Zeppelin。

  Kylin:是一个开源的分布式分析引擎,提供了基于Hadoop的超大型数据集(TB/PB级别)的SQL接口以及多维度的OLAP分布式联机分析。通过预先定义cube的方式,使得它能在亚秒内查询巨大的Hive表。

  Zeppelin:是一个提供交互数据分析且基于Web的笔记本。方便你做出可数据驱动的、可交互且可协作的精美文档,并且支持多种语言,包括 Scala(使用 Apache Spark)、Python(Apache Spark)、SparkSQL、 Hive、 Markdown、Shell等。

  除了分析外,大数据很重要的一个应用场景就是AI,借助于一些机器学习工具,大数据可以灵活的完成AI相关工作。

  Tensorflow:是Google开源的一款深度学习工具,它是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。在这个图中,节点(Nodes)表示数学操作,线(edges)表示在节点间相互联系的多维数据数组,即张量(tensor)。它配备了大量的机器学习相关API,能大幅度的提高机器学习的工作效率。它灵活的架构让你可以在多种平台上展开计算,例如台式计算机中的一个或多个CPU(或GPU),服务器,移动电子设备等等。

  Mahout:是一个算法库,集成了很多算法。旨在帮助研发人员更便利快捷地创建智能应用程序。Mahout包括许多实现,包括聚类、分类、推荐引擎、频繁子项挖掘等等。

上一篇:什么是大数据技术?
下一篇:普及一下什么是大数据技术?
米乐6
米乐电竞
新闻中心
公司新闻
产品中心
软件产品
米乐官网
解决方案
网站地图

微信二维码扫描
联系电话:0851-85824918  手机:0851-85824918转8018  邮箱:gyjlykj888@163.com
Copyright 2020   米乐6|米乐电竞|米乐官网  版权所有.  地址:贵阳市花果园中央商务区2号楼1单元44层   
免责声明:本网站部分资料来自互联网,如果涉及到版权问题,请及时通知本站,我们尽快删除或更改。    米乐6