大数据平台技术栈 下面自底向上介绍各个层的主要项目。 1采集层和传输层 采集层Sqoop 在hadoop和关系型数据库之间转换数据。Flume Flume是一个分布式的高可用的数据收集、聚集和移动的工具。通常用于从其他系统搜集数据,如web服务器产生的日志,通过Flume将日志写入到Hadoop的HDFS中。 FlumeCanal 数据抽取是ETL流程的第一步。我们会将数据从RDBMS或日志服务器等外部系统抽取至数据仓库,进行清洗、转换、聚合等操作。在现代网站技术栈中,MySQL是最常见的数据库管理系统,我们会从多个不同的MySQL实例中抽取数据,存入一个中心节点,或直接进入Hive。市面上已有多种成熟的、基于SQL查询的抽取软件,如著名的开源项目ApacheSqoop,然而这些工具并不支持实时的数据抽取。MySQLBinlog则是一种实时的数据流,用于主从节点之间的数据复制,我们可以利用它来进行数据抽取。借助阿里巴巴开源的Canal项目,我们能够非常便捷地将MySQL中的数据抽取到任意目标存储中。 CanalLogstash Logstash是开源的服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到您最喜欢的存储库中。Kafka 消息队列,一个分布式流平台。RocketMQ 阿里巴巴开源的消息队列。 2存储层 存储层HBase HBaseistheHadoopdatabase,adistributed,scalable,bigdatastore。AlluxioRedisIgnite Alluxio以内存为中心分布式存储系统,从下图可以看出,Alluxio主要有两大功能,第一提供一个文件系统层的抽象,统一文件系统接口,桥接储存系统和计算框架;第二通过内存实现对远程数据的加速访问。详情参考Alluxiodocument。 Alluxio Redis是一个开源的内存键值数据库,相比于Memcache,支持丰富的数据结构。 Ignit是一个以内存为中心的分布式数据库,缓存和处理平台,用于事务,分析和流式工作负载,在PB级别的数据上提供接近内存速度访问数据。 从上述分析可知,AlluxioRedisIgnite主要都是通过内存来实现加速。TiDB TiDB是有PingCap开源的分布式NewSQL关系型数据库。NewSQL数据库有两个流派,分别是以Google为代表的SpannerF1和以Amazon为代表的Aurora(极光),目前国内做NewSQL数据库主要是参考Google的Spanner架构,GoogleSpanner也是未来NewSQL的发展趋势。具体请查阅相关资料,或者访问Youtube,观看黄旭东的分享。HDFS Hadoop的分布式文件系统。Ceph Linux中备受关注的开源分布式存储系统,除了GlusterFS,当属Ceph。目前Ceph已经成为RedHat旗下重要的分布式存储产品,并继续开源。Ceph提供了块储存RDB、分布式文件储存CephFS、以及分布式对象存储Radosgw三大储存功能,是目前为数不多的集各种存储能力于一身的开源存储中间件。Kudu Kudu是cloudera开源的运行在hadoop平台上的列式存储系统,拥有Hadoop生态系统应用的常见技术特性,运行在一般的商用硬件上,支持水平扩展,高可用,目前是ApacheHadoop生态圈的新成员之一(incubating)。 Kudu的设计与众不同,它定位于应对快速变化数据的快速分析型数据仓库,希望靠系统自身能力,支撑起同时需要高吞吐率的顺序和随机读写的应用场景,提供一个介于HDFS和HBase的性能特点之间的一个系统,在随机读写和批量扫描之间找到一个平衡点,并保障稳定可预测的响应延迟。可与MapReduce,Spark和其它hadoop生态系统集成。 3计算层 计算层Hive Facebook开源。Hive是一个构建在Hadoop上的数据仓库框架。Hive的设计目标是让精通SQL技能但Java编程技能相对较弱的分析师能对存放在Hadoop上的大规数据执行查询。 Hive的查询语言HiveQL是基于SQL的。任何熟悉SQL的人都可以轻松使用HiveSQL写查询。和RDBMS相同,Hive要求所有数据必须存储在表中,而表必须有模式(Schema),且模式由Hive进行管理。 类似Hive的同类产品:kylindruidSparkSQLImpala。 KylinApacheKylin是一个开源的分布式分析引擎,提供HadoopSpark之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由eBayInc。开发并贡献至开源社区。它能在亚秒内查询巨大的Hive表。 Druid为监控而生的数据库连接池。 SparkSQL,SparkSQLisApacheSparksmoduleforworkingwithstructureddata。 Impala,Impala是ApacheHadoop的开源,本地分析数据库。它由Cloudera,MapR,Oracle和Amazon等供应商提供。SparkSpark是一个分布式计算框架。StormStorm是一个分布式的、高容错的实时计算系统。Storm对于实时计算的的意义相当于Hadoop对于批处理的意义。Hadoop为我们提供了Map和Reduce原语,使我们对数据进行批处理变的非常的简单和优美。同样,Storm也对数据的实时计算提供了简单Spout和Bolt原语。Storm适用的场景:、流数据处理:Storm可以用来用来处理源源不断的消息,并将处理之后的结果保存到持久化介质中。、分布式RPC:由于Storm的处理组件都是分布式的,而且处理延迟都极低,所以可以Storm可以做为一个通用的分布式RPC框架来使用。Flink ApacheFlinkisaframeworkanddistributedprocessingengineforstatefulcomputationsoverunboundedandboundeddatastreams。Flinkhasbeendesignedtoruninallcommonclusterenvironments,performcomputationsatinmemoryspeedandatanyscale。TensorFlow TensorFlowisanopensourcesoftwarelibraryforhighperformancenumericalcomputation。Itsflexiblearchitectureallowseasydeploymentofcomputationacrossavarietyofplatforms(CPUs,GPUs,TPUs),andfromdesktopstoclustersofserverstomobileandedgedevices。OriginallydevelopedbyresearchersandengineersfromtheGoogleBrainteamwithinGoogle’sAIorganization,itcomeswithstrongsupportformachinelearninganddeeplearningandtheflexiblenumericalcomputationcoreisusedacrossmanyotherscientificdomains。分布式资源调度YARN,ApacheYARN(YetAnotherResourceNegotiator)是hadoop的集群资源管理系统。YARN在Hadoop2时被引入,最初是为了改善MapReduce的实现,但它具有足够的通用性,也支持其他的分布式计算模式。MesosMesos最初由UCBerkeley的AMP实验室于2009年发起,遵循Apache协议,目前已经成立了Mesosphere公司进行运营。Mesos可以将整个数据中心的资源(包括CPU、内存、存储、网络等)进行抽象和调度,使得多个应用同时运行在集群中分享资源,并无需关心资源的物理分布情况。如果把数据中心中的集群资源看做一台服务器,那么Mesos要做的事情,其实就是今天操作系统内核的职责:抽象资源调度任务。Mesos项目是Mesosphere公司DatacenterOperatingSystem(DCOS)产品的核心部件。KubernetesKubernetes是Google2014年推出的开源容器集群管理系统,基于Docker构建一个容器调度服务,为容器化的应用提供资源调度、部署运行、均衡容灾、服务注册、扩容缩容等功能。PrestoPresto是FaceBook开源的一个开源项目。Presto被设计为数据仓库和数据分析产品:数据分析、大规模数据聚集和生成报表。这些工作经常通常被认为是线上分析处理操作。Presto通过使用分布式查询,可以快速高效的完成海量数据的查询。如果你需要处理TB或者PB级别的数据,那么你可能更希望借助于Hadoop和HDFS来完成这些数据的处理。作为Hive和Pig(Hive和Pig都是通过MapReduce的管道流来完成HDFS数据的查询)的替代者,Presto不仅可以访问HDFS,也可以操作不同的数据源,包括:RDBMS和其他的数据源(例如:Cassandra)。其他(区块链框架)Etherenum,以太坊HyperLedger,超级账本 4工具层和服务层 工具层和服务层ZeppelinWebbasednotebookthatenablesdatadriven,interactivedataanalyticsandcollaborativedocumentswithSQL,Scalaandmore。KylinApacheKylin是一个开源的分布式分析引擎,提供HadoopSpark之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由eBayInc。开发并贡献至开源社区。它能在亚秒内查询巨大的Hive表。 kylinJupyter TheJupyterNotebookisanopensourcewebapplicationthatallowsyoutocreateandsharedocumentsthatcontainlivecode,equations,visualizationsandnarrativetext。Usesinclude:datacleaningandtransformation,numericalsimulation,statisticalmodeling,datavisualization,machinelearning,andmuchmore。 https:www。jianshu。compc688e47dae1d 四款大数据分析OLAP引擎 OLTP( OnlineTransactionProcessing联机事务处理),是传统关系型数据库的应用技术,提供日常的、基本的事务处理,比如在线交易之类。OLAP( OnlineAnalyticalProcessing联机分析处理),是大数据分析的应用技术,提供复杂的分析操作、侧重决策支持。目前主流的OLAP引擎包括Hive、Presto、Druid、Clickhouse、Kylin、Sparksql、Greeplum,每个引擎都有它各自的特点,我们今天就来简单聊一聊,大家在实际使用时根据自己需求选择就好 第一款OLAP引擎便是Hive。它是基于Hadoop的数据仓库工具,可将结构化的数据直接转换成数据库表,HIve系统将HQL语句(类SQL语法)转化成MapReduce进行执行,本质上就是一款基于HDFS的MapReduce计算框架,使用HQL就可以对存储数据进行分析。Hive的优点是学习简单(支持SQL语法)、扩展性强(底层基于HDFS),缺点就是太慢了(数据处理任务全转换成MapReduce任务)。如果你的业务有数据分析的诉求,并且可接受一定的延迟,那么Hive是个不错的选择噢! 第二款OLAP引擎便是Presto。它是FaceBook开源的大数据分布式SQL查询引擎,客户端发出数据查询请求时,先有语法解析器进行解析,解析之后再给到对应的节点执行任务。Presto通过自己系统内部的查询和执行引擎来完成数据分析处理,所有的操作都在内存中完成,所以速度会快很多。Presto的优点是速度快、支持多数据源接入,缺点是容易内存溢出。 第三款引擎便是Clickhouse数据库。它是俄罗斯开源的一款列式数据库,在做数据分析时可直接选择某几列来作为分析属性,获取数据非常快,延迟低,如果按行读取,每次只能读取一个数据,有10000条就需要读取1000次,降低了效率。此外在存储层它实现了数据有序存储、主键索引、稀疏索引、数据分区分片、主备复制等功能。所谓数据的有序存储指的是数据在建表时可以将数据按照某些列进行排序,排序之后,相同类型的数据在磁盘上有序的存储,在进行范围查询时所获取的数据都存储在一个或若干个连续的空间内,极大的减少了磁盘IO时间;此外在计算层ClickHouse提供了多核并行、分布式计算、近似计算、复杂数据类型支持等技术能力,最大化程度利用CPU资源,提升系统查询速度。Clickhouse的优点就是快快快、分布式高可用,在数据分析这纬度看基本没有缺点。 第四款引擎便是Kylin图数据库。它是Apache基金会开源的一款数据库,也是结合当前人工智能知识图谱的一个最佳数据库。在Kylin中做数据分析的逻辑是用空间换时间,所有的数据都先预处理。在Kylin中通过Cube来做数据预聚合,比如我们想做双十二某地区某品类的销售额,因为有三个维度做分析,因此在Kylin中会建立一个三维的数据表(时间、地区、品类),在数据分析时可以拆分到三维、二维、一维,三维包含地区品类时间,二维包含地区品类、地区时间、品类时间,一维包含地区、品类、时间,每一维度的数据都提前聚合号存储在HBase中了,因此当数据分析时,直接拿聚合好的数据处理展示。Kylin的优点就是简单、快速,缺点就是可选数据分析维度太多。