大数据系统的技术庞大而复杂。基础技术包括数据采集、数据预处理、分布式存储、NoSQL数据库、数据仓库、机器学习、并行计算、可视化等技术类别和不同的技术层次。首先,本文给出了一个通用的大数据处理框架,主要分为以下几个方面:数据采集与预处理、数据存储、数据清洗、数据查询分析和数据可视化。
一、数据采集和预处理
对于来自不同来源的数据,包括移动互联网数据、社交网络数据等,这些结构化和非结构化的海量数据是分散的,即所谓的数据孤岛,这些数据在此时是没有意义的。数据采集是将这些数据写入数据仓库,将分散的数据集成在一起,并对数据进行分析。数据采集包括文件日志采集、数据库日志采集、关系数据库访问和应用程序访问。当数据量较小时,可以编写常规脚本将日志写入存储系统,但随着数据量的增长,这些方法不能提供数据安全性,且操作维护困难,需要较强的解决方案。
作为实时日志收集系统,Flume NG支持日志系统中的各种类型的数据发送器来收集数据。同时,数据被简单地处理并写入各种数据接收器(例如文本,HDFS,Hbase等)。 。 Flume NG使用三层架构:代理层,收集器层和存储层,每个层都可以水平扩展。代理包含Source,Channel和Sink。源用于将数据源消费(收集)到通道组件。该通道用作中间临时存储器以保存所有源组件信息。接收器从通道读取数据并在成功读取后删除它。频道中的信息。
NDC(NeteaseDataCanal)被翻译成NetEase Data Canal Syst em,它是NetEase的实时数据迁移、同步和结构化数据库订阅的平台解决方案。它集成了NetEase过去在数据传输领域的工具和经验,通过数据链接连接独立数据库、分布式数据库、OLAP系统和下游应用程序。NDC的设计除了保证数据的高效传输外,还遵循单元化和平台化的设计思想。
logflash是一个开源的服务器端数据处理管道,可以同时从多个源收集数据,转换数据,并将数据发送到您最喜爱的“存储库”。常用的储存库是弹性研究。Logflash支持多种输入选项,可以同时从许多常用的数据源中捕获事件,并可以方便地以连续流方式从日志、度量、Web应用程序、数据存储和各种aws服务中收集数据。
Sqoop使用的一种工具,用于在关系数据库和Hadoop中的数据之间传输数据。可以将数据从关系数据库(如MySQL、Oracle)导入Hadoop(如HDFS、Hive、HBase)。还可以将Hadoop(如HDFS、Hive、HBase)中的数据导入到关系数据库(如MySQL、Oracle)中。Sqoop允许MapReduce作业(非常容错的分布式并行计算)执行任务。Sqoop的另一个优点是它传输大量结构化或半结构化数据的过程是完全自动化的。
流计算是业界的一个热门话题。流式计算能够实时清理、聚合和分析多个高通量数据源,能够快速处理和反馈社交网站、新闻等中存在的数据流。目前,有很多大型数据流分析工具,如开源Strom、火花流等。
Strom集群结构是由一个主节点(Nimbus)和多个工作节点(Supervisor)组成的主从结构。主节点是在运行时静态指定或动态选择的。Nimbus和Supervisor都是Storm提供的后台守护程序。动物园管理员之间的通信与状态更改通知和监视通知结合使用。Nimbus流程的主要职责是管理、协调和监控集群上运行的拓扑(包括拓扑发布、任务分配、在处理事件时重新分配任务等)。主管进程等待Nimbus分配任务以生成并监视工作者(JVM进程)以执行任务。主管和工作人员在不同的JVM上运行,如果由主管启动的工作进程退出(或由于错误而退出),则主管尝试重新生成新的工作进程。
当上游模块的数据用于计算、统计和分析时,可以使用消息系统,特别是分布式消息系统。Kafka是用Scala编写的,是一个基于发布/订阅的分布式消息传递系统。Kafka的设计思想之一是提供离线处理和实时处理,以及将数据实时备份到另一个数据中心。卡夫卡可以让许多生产者和消费者共享多个主题,并在主题单元中总结消息。卡夫卡发布消息的程序称为生产者,也称为生产者,订阅主题和消费消息的程序称为消费者,也称为消费者。当Kafka作为一个集群运行时,它可以由一个或多个服务组成,每个服务都称为代理,在此期间,生产者通过网络向Kafka集群发送消息,该集群向消费者提供消息。Kafka通过ZooKeeper管理集群配置,选举领导者,并在消费者组发生变化时重新平衡。生产者使用推送模式将消息发布到代理,消费者使用拉模式订阅和使用来自代理的消息。大数据技术学习交换口裙,数字515数字269数字485。卡夫卡可以和水槽一起工作。如果需要将流数据从Kafka传输到Hadoop,可以使用Flume Agent,以使用Kafka作为源。这允许您将数据从Kafka读取到Hadoop。
动物园管理员是提供数据同步服务的分布式、开源分布式应用程序协调服务。其功能包括配置管理、名称服务、分布式锁定和集群管理。配置管理是指在一个地方修改配置,这样所有对这个地方的配置感兴趣的人都可以改变,消除了繁琐的手动复制配置,同时也确保了数据的可靠性和一致性。同时可以通过名称获得资源或服务的地址等信息,并可以监视集群中机器的变化,实现类似于心跳机制的功能。
二、数据存储
Hadoop作为一个开源框架,专为离线和大规模数据分析而设计。HDFS作为其核心存储引擎,在数据存储中得到了广泛的应用。
HBase是一个分布式的、面向列的开源数据库,可以看作是HDFS的封装,HDFS本质上是一个数据存储和NoSQL数据库。HBase是一个关键/值系统,部署在HDFS上,以克服HDFS在随机读写方面的缺点。与Hadoop一样,HBase的目标主要依靠横向扩展,通过不断增加廉价的商用服务器来增加计算和存储容量。
Phoenix,相当于Java中间件,可以帮助开发工程师访问NoSQL数据库HBase,就像他们使用JDBC访问关系数据库一样。
SILE是一种Hadoop资源管理器,可以为上层应用提供统一的资源管理和调度。它的引入为集群的利用、资源的统一管理和数据共享带来了极大的好处。SILE由以下主要组件组成:全局资源管理器ResourceManager、ResourceManager的每个节点代理NodeManager、代表每个应用程序的应用程序,以及每个ApplicationMaster在NodeManager上运行的多个容器。
Mesos是一款开源集群管理软件,支持Hadoop、ElasticSearch、Spark、Storm和Kafka等应用程序架构。
REDIS是一种非常快速的非关系数据库,它可以存储键和五种不同类型的值之间的映射,将存储在内存中的键值对数据持久化到硬盘,并使用复制功能来扩展性能。您还可以使用客户端碎片来扩展写入性能。
Atlas是介于应用程序和MySQL之间的中间件。在后端数据库中,Atlas相当于与其连接的客户端,而前端应用程序则等同于DB。作为服务器,Atlas与应用程序进行通信。实现了MySQL的客户端和服务器协议,同时作为客户端与MySQL进行通信。它保护应用程序不受数据库细节的影响,并维护连接池以减少MySQL负担。启动Atlas时,将创建多个线程,其中一个线程是主线程,其余线程是辅助线程。主线程负责侦听所有客户端连接请求,辅助线程仅侦听主线程发出的命令请求。
kudu是一个围绕Hadoop生态系统构建的存储引擎。kudu与Hadoop生态系统有一个共同的设计概念。它运行在普通服务器上,可以在分布式规模上部署,并且满足业界的高可用性要求。它的设计思想是对快速数据进行快速分析。作为一个开源的存储引擎,它可以提供低延迟的随机读写和高效的数据分析功能。kudu不仅提供行级插入、更新和删除API,还提供接近实木地板性能的批扫描操作。使用相同的存储空间,不仅可以实现随机读写,而且可以满足数据分析的要求。kudu有广泛的应用场景,如实时数据分析、数据可能发生变化的时间序列数据应用程序等等。
在数据存储过程中,涉及的表有数千列,包括各种复杂的查询。建议使用列存储方法,如parquent、orc等对数据进行压缩。拼花地板可以支持灵活的压缩选项,大大减少了磁盘上的存储空间。
三、数据清洗
maprect作为hadoop的查询引擎,用于大规模数据集的并行计算。“地图”和“减少”是其主要思想。它极大地便利了程序员在不进行分布式并行编程的分布式系统中运行自己的程序。
随着业务数据量的增加,需要进行培训和清理的数据将变得越来越复杂。此时,需要任务调度系统(如Oozie或Azkaban)来调度和监视关键任务。
Oozie是面向Hadoop平台的工作流调度引擎,它提供了RESTfulAPI接口来接受用户提交请求(提交工作流作业)。当提交工作流时,工作流引擎负责工作流执行和状态转换。用户在HDFS上部署作业(MR作业),然后提交工作流,Oozie以异步方式将作业(MR作业)提交给Hadoop。这就是为什么在调用Oozie的RESTful界面提交作业后立即返回JobId,并且用户程序不必等待作业完成(因为一些大型作业可能需要很长时间(几个小时甚至几天)。Oozie在后台以异步方式将与工作流相对应的Action提交给Hadoop执行。
Azkaban也是一个工作流控制引擎,可用于解决离线计算任务(如多个hadoop或spark)之间的依赖关系。 Azkaban主要由三部分组成:关系数据库,Azkaban Web服务器和Azkaban Executor服务器。 Azkaban将大部分状态信息保存在MySQL中。 Azkaban Web Server提供Web UI,它是azkaban的主要管理者,包括项目管理,身份验证,调度和工作流执行期间的监控; Azkaban Executor Server用于计划工作流和任务,以及记录工作流或任务的日志。
作为流量计算任务的处理平台,SLOTH是NetEase第一个自主研发的流量计算平台,旨在解决公司各种产品对流量计算日益增长的需求。作为一种计算服务平台,它具有易用性、实时性、可靠性等特点,为用户节省技术投入(开发、操作和维护),帮助用户专注于解决产品本身的流程计算需求。
四、数据查询分析
蜂巢的核心工作是将sql语句转化为mr程序,将结构化数据映射到数据库表中,并提供hql(hellsql)查询功能。蜂巢本身不存储和计算数据。它完全依赖于hdfs和maprect。您可以将蜂巢理解为一个客户端工具,将sql操作转换为相应的映射减少任务,然后在hadoop上运行。蜂巢支持标准的sql语法,消除了用户编写地图程序的过程。它的出现使精通sql技能但不熟悉maprect、编程能力弱、不擅长java语言的用户可以轻松地使用sql语言查询、聚合和分析hdfs大型数据集上的数据。
蜂巢是为大数据批量处理而诞生的。Hive的出现解决了传统关系数据库(MySQL、Oracle)在大数据处理方面的瓶颈。Hive将执行计划划分为MAP->Shuffle->Reduce->MAP->Shuffle->Reduce。一个模型。如果一个查询被编译成多轮MapReduce,将会有更多的中间结果。由于MapReduce执行框架本身的特点,太多的中间进程会增加整个查询的执行时间。在运行Hive的过程中,用户只需要创建表、导入数据和编写SQL分析语句。该过程的其余部分由Hive框架自动完成。
Impala是Hive的一个补充,用于实现高效的SQL查询。利用Impala在Hadoop上实现SQL,实现对大数据的实时查询和分析。大数据是通过熟悉的传统关系数据库的SQL风格进行操作的,数据也可以存储在HDFS和HBase中。Impala不使用Slow Hive+MapReduce批处理,而是使用分布式查询引擎(由查询规划器、查询协调器和查询执行引擎组成),类似于商业并行关系数据库中的查询引擎。您可以通过SELECT、JOIN和STATISTICS函数直接从HDFS或HBASE查询数据,从而大大减少了延迟。Impala将整个查询划分为执行计划树,而不是一系列MapReduce任务,而Hive没有MapReduce启动时间。
Hive适用于长时间的批量查询分析,而Impala适用于实时交互式SQL查询。 Impala为数据工作者提供了快速实验和验证想法的重要想法。您可以使用Hive进行数据转换,然后使用Impala。对Hive的已处理数据集执行快速数据分析。总结:Impala将执行计划呈现为一个完整的执行计划树,可以更自然地将执行计划分发到每个Impalad执行查询,而无需将其组合到管道类型map-> reduce模式(如Hive)。这可确保Impala具有更好的并发性,并避免不必要的中间排序和混洗。但是,Impala不支持UDF,并且对可以处理的问题存在某些限制。
SPARK具有HadoopMapReduce的特点,它将Job中间输出保存在内存中,因此不需要读取HDFS。SPARK使内存分布数据集除了提供交互式查询外,还可以优化迭代工作负载。SPARK是用Scala语言实现的,并使用Scala作为其应用框架。与Hadoop不同,Spark和Scala可以紧密集成,Scala可以像处理本地集合对象一样轻松地操作分布式数据集。
Nutch 是一个开源Java 实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具,包括全文搜索和Web爬虫。
Solr是一个全文搜索服务器,用于用Java编写并运行在ApacheTomcat或Jetty等servlet容器中的独立企业搜索应用程序。它提供了一个类似于Web服务的API接口。用户可以向搜索引擎服务器提交特定格式的XML文件,并通过http请求生成索引。您还可以通过http GET操作发出搜索请求,并以XML格式获取返回的结果。
ElasticSearch是一个基于Lucene搜索服务器的开源全文搜索引擎,能够快速存储、搜索和分析海量数据。专为云计算而设计,可实现实时搜索,稳定可靠,速度快,安装使用方便。
它还涉及一些机器学习语言。例如,Mahout的主要目标是为开发人员创建一些可扩展的机器学习算法,以便在Apache的许可下自由使用;深度学习框架Caffe和开源软件库,用于使用数据流图进行数值计算。 TensorFlow等常用的机器学习算法,如贝叶斯,Logistic回归,决策树,神经网络,协同过滤等。
五、数据可视化
通过与一些BI平台的对接,可以可视化分析得到的数据,指导决策服务。主流的商务智能助推器,如国外的敏捷商务智能平台、Qlikview、Powrerbi、国内的smallbi和新兴的网易等。
在上述各个阶段,数据的安全是一个不容忽视的问题。
基于网络身份认证的Kerberos协议用于在非安全网络中通过安全手段对个人通信进行身份认证。它允许实体在不安全的网络环境中通信。以安全的方式向其他实体证明您的身份。
Ranger控制权限,是Hadoop群集权限框架,它为操作、监视和管理提供复杂的数据权限。它提供了一种集中管理机制来管理基于纱线的Hadoop生态系统中的所有数据权限。细粒度的数据访问控制可以在Hadoop生态系统的组件(如Hive、HBase)上执行。通过运行Ranger控制台,管理员可以轻松地配置策略,以控制用户对HDFS文件夹、HDFS文件、数据库、表和字段权限的访问。可以为不同的用户和组设置这些策略,并且可以与Hadoop无缝连接权限。
简单地说,有三种核心技术:获取数据、计算数据和销售数据。
首先,由于大数据,不能得到大量的数据都是徒劳的。现在由于机器学习的兴起,以及金油算法的兴起,导致算法的地位下降,数据的状态得到了改善。例如,由于教育的发展,个人智力的重要性降低了,教育背景变得更重要了,因为一般人都能按照标准的程序阅读一本书,这比牛顿好得多。Google说:在许多情况下,将强大的数据提供给通用算法比将愚蠢的数据提供给强大的算法要好。你知道要得到一个好的算法有多难吗?大多数人甚至不知道有什么困难。拿数据来说是很重要的,大数据技术学习交换口裙,199427210,熟练的女人没有饭就很难做饭啊!那么为什么很多公司都想烧钱抢入口,抢用户,是为了争夺数据源啊!但是操作,和产品更注重这一点,我是一个程序员,我不在乎。
二是计算数据。如果数据是直接有价值的,那么公司就没有必要。政府应该直接获利。苹果可以看到秋天,人们牛顿可以所有的重力,我只能拿起吃,差距啊…所以有数据,可以自己找出来的。计算数据需要一个计算平台。如何存储数据(hdfs,s3,hbase,卡珊德拉),如何计数(hadoop,spark)取决于程旭远……
三是,只有出售才能实现,否则就是为了公共利益,如李思和大锤中的“疑犯追踪”。预测未来,避免不利因素,是智能的最终目标和意义,对吗?每个人都应该一起考虑这件事。
事实上,我认为最后一个是“核心技术”,“星火、风暴、深度学习”是第二梯队。当然,如果没有强大的计算能力的支持,智能就不应该能够谈论它。