尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

揭秘大数据生态圈:11大核心组件全解析

揭秘大数据生态圈:11大核心组件全解析 好程序员大数据培训在分享其内容之时, 专门就其生态系统进行了梳理, 本次我对此进行了整理, 因为所谓生态系统的概念, 指的就是一种以为平台的基础, 通过各类的应用框架相互之间保持兼容状态, 进而组成了一个具有独立性质的应用体系部分之人, 此类体系同样也被称作是生态圈这个名称。咱们就通过下面这张图来看看吧。生态系统我们可以把下面这些常用的应用框架做一下总结, 其中有一些在图里没有显示出来的, 我这里也把它们列举出来了几个。第一点是, HDFS分布式文件系统它是那个体系里面, 对数据怎么去存储、又是怎么进行管理这个事情的根基部分。同时呢, 它是一个那种特别不怕出错、容错的层次非常高的系统。正因为它这样的原因, 它就具备了对硬件发生的那些故障, 既能去发现它又能应对它的能力。把文件进行切分, 去访问HDFS, 和那些系统进行交互, 从而获取文件的位置信息, 并且继续和相关组件进行交互, 来执行数据的读取操作以及写入数据的工作。那个节点, 在一个.x的系统里面, 它是唯一一个存在的, 它负责去管理HDFS这个系统的名称空间, 还有数据块映射信息, 同时也会配置副本策略, 以及处理来自客户端的请求。slave节点负责存储实际数据, 并且要将这些数据的存储信息汇报上去。作为辅助人员, 分担其工作量: 定期合并数据并且推送给指定人员在紧急情况下提供辅助以恢复系统功能, 但是它并不是该系统的热备节点。2分布式计算框架这是一种计算模型。它用于处理大数据量的计算工作。在这个模型里。map会对数据集中的独立元素进行操作。它会执行指定的操作。它的目的是生成键-值对的中间结果。则是对中间结果里面的相同键的所有值进行规约操作。通过这种规约。最终可以得到结果。这个节点只有一个, 它来管理所有的工作, 监控任务和工作的情况, 还要处理错误等方面的问题, 接着把这个大任务拆解成一连串的小任务, 然后再把这些拆分好的小任务分别派给负责的人或者系统进行办理。那个 slave 节点会去运行 map task, 它还会跟主节点进行交互操作, 并且把这个任务状态汇报上去。对于map任务这一环节来说, 它的职责是仔细解读每一条被输送过来的数据记录, 然后把这些解析后的结果交给用户自己编写好的map函数去处理并完成运算动作, 最后要把这个运算得到的输出成果保存到这台机器本地的硬盘里面去, 如果当前运行的只是一个纯粹的map-only类型作业的话, 那么就直接绕过中间环节往HDFS分布式存储系统里面写入。任务: 从 map 的深刻执行过程中, 远程把输入的原始数据给调取过来, 然后对这部分数据进行必要的排序操作, 紧接着再把排好序的数据实施分组处理的操作, 最终将每组分别交给用户自行设计好的程序代码去实际运行和计算。第三点, 指的是 Hive, 它是一种建基于数据仓库之上的技术。这个工具最初的时候, 是用来解决那些海量结构化的日志数据统计问题, 它是由开源的。Hive定义了一种类似于SQL的查询语言, 也就是我们称之为HQL的东西, 它的功能是把SQL语句转化成能够在上层执行的任务。第四, 关于HBase这样一种分布式的列式存储数据库。Hbase 这是一种针对结构化数据所设计的数据库, 它具有可伸缩、高可靠、高性能的特点, 而且它是分布式的, 同时还是一个面向列的动态模式数据库, 这跟传统的关系型数据库是完全不同的区别在于 Hbase 所采用的是这样的一种数据模型, 这种模型增强了对稀疏排序映射表的支撑, 也就是对 key 和 value 的支撑。其中, 键是由行关键字、列关键字以及时间戳共同构成的。HBase提供了针对大规模数据的随机读写访问能力, 并且这种访问是实时的。与此同时, 在HBase中保存的数据是可以被用来进行处理的。它将数据存储和并行计算这两者完美结合在了一起。5, 分布式协作服务。为了解决分布式环境下有关数据管理所存在的那些问题, 我们实现了统一命名这一措施, 实现了状态同步这一措施, 实现了集群管理这一措施, 还实现了配置同步这一措施。第6项, sqoop这个工具是用来进行数据同步的。sqoop这个词, 它是sql-to的简称, 主要的作用, 是用来在传统的这种数据库和一些东西之间进行数据的传输工作的, 至于说那个数据的导入呀以及导出, 其实它本质上来说就是一段程序而已了, 而且它还能够充分地去利用到mr这个框架里面所具备的那种并行化能力还有容错性等等的这些好处的。第七是pig, 这玩意儿是一个基于数据流搞出来的系统。咱们定义了一个数据流语言叫pig latin, 把脚本给转换成了能在上面跑的任务。这种技术一般情况下是用来做离线分析。第8点, 也就是那个专门用于数据挖掘的算法库。这个项目的核心任务之一是去搭建一些在机器学习圈子里面被当成经典的东西, 也就是那些扩展性特别强的算法的具体代码实现版本, 这样做的主要目的, 就是为了让那些搞开发的人能够更加省事、更加利索地去弄出那些带有智能特点的应用程序来。到现在为止, 这个大框架里面已经塞进去了一些大家在挖掘数据的时候用得特别广泛的办法, 比方说把东西分组聚类的做法, 还有给东西打标签做分类的做法, 再有就是通过大伙儿一起投票那种思路来做推荐引擎的办法, 以及找出一堆经常同时出现的那些组合的频繁集挖掘做法。除了这些拿出来的算法本身之外, 还配上了专门用来把数据送进去或者从里面拿出来的各种工具, 同时也搭好了一些能让数据挖掘这事儿支持起来的基础架构, 这些东西可以和其他管数据的系统对接上, 比如那些数据库, 又或者是其他类型的存储服务系统, 总之都是为了把整个数据挖掘的过程变得更加顺畅和容易操作这一点来服务的。第九项, 使用Flume这一款日志收集工具。有一个开源的日志收集系统。这个系统具有分布式的特点。它具有高可靠性的特点。它具有高容错性的特点。它易于定制和扩展。它将数据的整个过程抽象为数据流。这个过程包括数据产生、传输、处理, 以及写入目标节点。在具体的数据流里面, 数据源可以得到支持。用户可以定制数据发送方, 这样的方式是在flume当中进行的。这样做的结果是支持收集各种不同协议的数据。第十点是要对资源管理器进行一个简单的介绍, 这个资源管理器的范畴里面包含了YARN和mesos这些内容。互联网的发展速度那是很快, 基于数据密集应用的计算框架, 一个接着一个地冒出来, 从支持处理离线数据的开始, 到支持在线处理的storm, 再到迭代式计算框架和s4流式处理框架, 在很多互联网公司里, 这几种不同的框架, 往往都会用得上, 以搜索类的公司为例, 可能的技术使用方法会是这个样子, 建立网页索引的时候采用特定的框架, 进行自然语言处理和挖掘数据的工作则采用spark, 对于那些对性能要求非常高的数据挖掘算法, 则会使用mpi。公司通常会把所有的这些框架都部署在同一个公共集群里。这样做是为了让这些框架共享集群的资源。同时公司还会对资源进行统一的使用和管理。由于有这样的做法, 所以诞生了用于管理和调度资源的平台。这种平台的典型代表有mesos和yarn。11, 其余的一些开源组件:1 这是一个用来进行查询操作的开源引擎, 它的元数据、SQL语法、ODBC驱动程序以及用户接口, 都是和Hive一模一样的, 能够直接在HDFS上提供快速的交互式SQL查询服务, 完全不需要再使用运行缓慢的以批处理为主要特征的Hive了, 而是采用了一种类似于商用并行关系分布式的查询引擎方式, 可以从HDFS或者Hbase中直接使用各种操作, 比如说可以执行join操作, 或者是使用统计函数来直接对数据进行查询, 这样一来就可以将延迟的情况大幅度地降低下去。2sparkspark是一个开源的数据分析集群计算框架, 这个框架最初是由加州大学伯克尔分校进行建立的, 它是建立在HDFS之上的。就像之前提到的那样, spark也被用到了构建那些大规模且延迟较低的数据分析应用中去。此外, 需要强调的是, spark是采用Scala这种语言来进行实现的, 同时在实际操作过程中, 开发者是使用Scala作为一个应用的基础框架来工作的。因为spark使用了那个存放在内存里面的分布式的集合数据类型, 所以对那种需要反复计算的工作负载以及那些可以随时问问题的交互式查询场景, 起到了优化的作用。和之前讨论的那个东西不同的是, Spark 和 Scala 集成得非常紧密, Scala 能够像管理本地的对象那样去管理那些分布在多个地方的数据集。Spark 支持在分布式数据集上执行反复进行的迭代式任务。实际上, 它的运行方式是和文件系统配合在一起的, 这个功能是通过 YARN、MESOS 这样的工具来实现的。3stormStorm是分布式架构的, 具备容错能力的计算系统。它归入到流处理平台之列。通常用于执行实时计算, 接着更新数据库。Storm还能用来支持所谓的连续计算模式。这种模式下会对数据流做出连续查询的操作。在计算完成之后, 以数据流的形式把结果输出给用户对象。此外, 它也适用于分布式的远程过程调用场景。在这种用法中, 它能够并行执行那些耗费大量资源的运算任务。4)kafkaKafka这个开源的流处理平台, 它是被软件基金会进行开发的, 代码是由Scala以及Java来编写的, 它是一种具有高吞吐量的分布式发布订阅消息系统, 该系统能够去处理所有由消费者规模的网站所产生的动作流数据, 这类动作包括网页浏览、搜索以及其他用户的行动这些内容都是现代网络中的许多社会功能的一个关键所在因素。这些数据的传输, 往往是因为对数据吞吐量的要求太高了所以就通过处理日志以及把日志进行聚合的方法来解决这个问题。对于那些拥有大量日志数据并且需要离线进行分析的场合来说, 如果还要加上必须能够实时处理的限制条件, 那么这个方案算是比较可行的一个解决办法。Kafka这个工具存在的一个目的, 就是通过它的并行加载机制, 来把线上的消息处理和离线的消息处理统一起来, 另外也是为了通过集群的方式, 去提供实时的消息功能。
返回列表