2023年6月30日发(作者:)
各⼤数据组件介绍⼀、zookeeperZooKeeper是⼀个的,开放源码的协调服务,是的Chubby⼀个的实现,是Hadoop和Hbase的重要组件。它是⼀个为分布式应⽤提供⼀致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。ZooKeeper的⽬标就是封装好复杂易出错的关键服务,将简单易⽤的接⼝和性能⾼效、功能稳定的系统提供给⽤户。ZooKeeper包含⼀个简单的原语集,[1] 提供Java和C的接⼝。ZooKeeper代码版本中,提供了分布式独享锁、选举、队列的接⼝,代码在zookeeper-3.4.3srcrecipes。其中分布锁和队列有和C两个版本,选举只有Java版本。(概述图⽚来源:[2] )那么Zookeeper能做什么事情呢,简单的例⼦:假设我们有20个的(每个负责总索引中的⼀部分的搜索任务)和⼀个总服务器(负责向这20个搜索引擎的服务器发出搜索请求并合并结果集),⼀个备⽤的总服务器(负责当总服务器宕机时替换总服务器),⼀个web的cgi(向总服务器发出搜索请求)。搜索引擎的服务器中的15个服务器提供搜索服务,5个服务器正在⽣成索引。这20个搜索引擎的服务器经常要让正在提供搜索服务的服务器停⽌提供服务开始⽣成索引,或⽣成索引的服务器已经把索引⽣成完成可以提供搜索服务了。使⽤Zookeeper可以保证总服务器⾃动感知有多少提供搜索引擎的服务器并向这些服务器发出搜索请求,当总服务器宕机时⾃动启⽤备⽤的总服务器。
⼆、sparkApache Spark 是专为⼤规模数据处理⽽设计的快速通⽤的计算引擎。Spark是UC Berkeley AMP lab (加州⼤学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通⽤并⾏框架,Spark,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是——Job中间输出结果可以保存在内存中,从⽽不再需要读写HDFS,因此Spark能更好地适⽤于数据挖掘与机器学习等需要迭代的MapReduce的算法。Spark 是⼀种与 相似的开源集群计算环境,但是两者之间还存在⼀些不同之处,这些有⽤的不同之处使 Spark 在某些⼯作负载⽅⾯表现得更加优越,换句话说,Spark 启⽤了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代⼯作负载。Spark 是在 语⾔中实现的,它将 Scala ⽤作其应⽤程序框架。与 Hadoop 不同,Spark 和 Scala 能够紧密集成,其中的 Scala 可以像操作本地集合对象⼀样轻松地操作分布式数据集。Spark 主要有三个特点[2] :⾸先,⾼级 API 剥离了对集群本⾝的关注,Spark 应⽤开发者可以专注于应⽤所要做的计算本⾝。其次,Spark 很快,⽀持交互式计算和复杂算法。最后,Spark 是⼀个通⽤引擎,可⽤它来完成各种各样的运算,包括 SQL 查询、⽂本处理、机器学习等,⽽在 Spark 出现之前,我们⼀般需要学习各种各样的引擎来分别处理这些需求。三、kafkaKafka是由开发的⼀个开源流处理平台,由和编写。Kafka是⼀种⾼吞吐量的发布订阅消息系统,它可以处理消费者规模的⽹站中的所有动作流数据。 这种动作(⽹页浏览,搜索和其他⽤户的⾏动)是在现代⽹络上的许多社会功能的⼀个关键因素。 这些数据通常是由于吞吐量的要求⽽通过处理⽇志和⽇志聚合来解决。 对于像的⼀样的数据和离线分析系统,但⼜要求实时处理的限制,这是⼀个可⾏的解决⽅案。Kafka的⽬的是通过的并⾏加载机制来统⼀线上和离线的消息处理,也是为了通过来提供实时的消费。特性:通过O(1)的磁盘数据结构提供消息的持久化,这种结构对于即使数以TB的消息存储也能够保持长时间的稳定性能。⾼吞吐量 :即使是⾮常普通的硬件Kafka也可以⽀持每秒数百万的消息。⽀持通过Kafka服务器和消费机集群来分区消息。⽀持并⾏数据加载。 术语介绍:Broker
Kafka集群包含⼀个或多个服务器,这种服务器被称为broker[5]
Topic每条发布到Kafka集群的消息都有⼀个类别,这个类别被称为Topic。(物理上不同Topic的消息分开存储,逻辑上⼀个Topic的消息虽然保存于⼀个或多个broker上但⽤户只需指定消息的Topic即可⽣产或消费数据⽽不必关⼼数据存于何处)PartitionPartition是物理上的概念,每个Topic包含⼀个或多个er负责发布消息到Kafka brokerConsumer消息消费者,向Kafka broker读取消息的客户端。Consumer Group每个Consumer属于⼀个特定的Consumer Group(可为每个Consumer指定group name,若不指定group name则属于默认的group)。四、cassandraCassandra是⼀套开源分布式数据库系统。它最初由开发,⽤于储存收件箱等简单格式数据,集的数据模型与 Dynamo的完全分布式的架构于⼀⾝Facebook于2008将 Cassandra 开源,此后,由于Cassandra良好的,被、等知名⽹站所采纳,成为了⼀种流⾏的分布式结构化数据存储⽅案。Cassandra是⼀个混合型的⾮关系的数据库,类似于Google的BigTable。其主要功能⽐Dynamo (分布式的Key-Value)更丰富,但⽀持度却不如⽂档存储MongoDB(介于关系数据库和⾮关系数据库之间的开源产品,是⾮关系数据库当中功能最丰富,最像关系数据库的。⽀持的数据结构⾮常松散,是类似json的bjson格式,因此可以存储⽐较复杂的数据类型)。Cassandra最初由Facebook开发,后转变成了开源项⽬。它是⼀个⽹络社交云计算⽅⾯理想的数据库。以Amazon专有的完全分布式的Dynamo为基础,结合了Google BigTable基于列族(Column Family)的数据模型。P2P去中⼼化的存储。很多⽅⾯都可以称之为Dynamo 2.0。Cassandra的主要特点就是它不是⼀个数据库,⽽是由⼀堆数据库节点共同构成的⼀个分布式⽹络服务,对Cassandra 的⼀个写操作,会被复制到其他节点上去,对Cassandra的读操作,也会被路由到某个节点上⾯去读取。对于⼀个Cassandra群集来说,扩展性能是⽐较简单的事情,只管在群集⾥⾯添加节点就可以了。
五、是⼀个⾼性能的,NOSQL图形数据库,它将结构化数据存储在⽹络上⽽不是表中。它是⼀个的、基于的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在⽹络(从数学⾓度叫做图)上⽽不是表中。Neo4j也可以被看作是⼀个⾼性能的图引擎,该引擎具有成熟数据库的所有特性。程序员⼯作在⼀个⾯向对象的、灵活的⽹络结构下⽽不是严格、静态的表中——但是他们可以享受到具备完全的事务特性、企业级的数据库的所有好处。Neo4j因其嵌⼊式、⾼性能、轻量级等优势,越来越受到关注.你可以把Neo看作是⼀个⾼性能的图引擎,该引擎具有成熟和健壮的数据库的所有特性。程序员⼯作在⼀个的、灵活的⽹络结构下⽽不是严格、静态的表中——但是他们可以享受到具备完全的特性、企业级的数据库的所有好处。 [1]
Neo是⼀个⽹络——⾯向⽹络的数据库——也就是说,它是⼀个嵌⼊式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在⽹络上⽽不是表中。⽹络(从数学⾓度叫做图)是⼀个灵活的数据结构,可以应⽤更加敏捷和快速的开发模式。六、ESElasticSearch是⼀个基于Lucene的搜索服务器。它提供了⼀个分布式多⽤户能⼒的全⽂搜索引擎,基于RESTful web接⼝。Elasticsearch是⽤Java开发的,并作为Apache许可条款下的开放源码发布,是当前流⾏的企业级搜索引擎。设计⽤于中,能够达到实时搜索,稳定,可靠,快速,安装使⽤⽅便。我们建⽴⼀个⽹站或应⽤程序,并要添加搜索功能,但是想要完成搜索⼯作的创建是⾮常困难的。我们希望搜索解决⽅案要运⾏速度快,我们希望能有⼀个零配置和⼀个完全免费的搜索模式,我们希望能够简单地使⽤JSON通过HTTP来索引数据,我们希望我们的搜索服务器始终可⽤,我们希望能够从⼀台开始并扩展到数百台,我们要实时搜索,我们要简单的多租户,我们希望建⽴⼀个云的解决⽅案。因此我们利⽤Elasticsearch来解决所有这些问题及可能出现的更多其它问题。相关概念:cluster代表⼀个,集群中有多个节点,其中有⼀个为主节点,这个主节点是可以通过选举产⽣的,主从节点是对于集群内部来说的。es的⼀个概念就是去中⼼化,字⾯上理解就是⽆中⼼节点,这是对于集群外部来说的,因为从外部来看es集群,在逻辑上是个整体,你与任何⼀个节点的通信和与整个es集群通信是等价的。shards代表索引分⽚,es可以把⼀个完整的索引分成多个分⽚,这样的好处是可以把⼀个⼤的索引拆分成多个,分布到不同的节点上。构成分布式搜索。分⽚的数量只能在索引创建前指定,并且索引创建后不能更改。replicas代表索引副本,es可以设置多个索引的副本,副本的作⽤⼀是提⾼系统的,当某个节点某个分⽚损坏或丢失时可以从副本中恢复。⼆是提⾼es的查询效率,es会⾃动对搜索请求进⾏负载均衡。recovery代表数据恢复或叫数据重新分布,es在有节点加⼊或退出时会根据机器的负载对索引分⽚进⾏重新分配,挂掉的节点重新启动时也会进⾏数据恢复。River代表es的⼀个数据源,也是其它存储⽅式(如:数据库)同步数据到es的⼀个⽅法。它是以插件⽅式存在的⼀个es服务,通过读取river中的数据并把它索引到es中,官⽅的river有couchDB的,RabbitMQ的,Twitter的,Wikipedia的。gateway代表es索引快照的存储⽅式,es默认是先把索引存放到内存中,当内存满了时再持久化到本地硬盘。gateway对索引快照进⾏存储,当这个es集群关闭再重新启动时就会从gateway中读取索引备份数据。es⽀持多种类型的gateway,有本地⽂件系统(默认),,Hadoop的HDFS和amazon的s3服务。代表es的⾃动发现节点机制,es是⼀个基于p2p的系统,它先通过⼴播寻找存在的节点,再通过协议来进⾏节点之间的通信,同时也⽀持的交互。Transport代表es内部节点或集群与客户端的交互⽅式,默认内部是使⽤tcp协议进⾏交互,同时它⽀持http协议(json格式)、、servlet、memcached、zeroMQ等的(通过⽅式集成)。七、ActiveMQActiveMQ 是Apache出品,最流⾏的,能⼒强劲的开源消息总线。ActiveMQ 是⼀个完全⽀持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应⽤中间仍然扮演着特殊的地位。⼋、nginxNginx (engine x) 是⼀个⾼性能的和服务器,也是⼀个IMAP/POP3/SMTP。Nginx是由伊⼽尔·赛索耶夫为访问量第⼆的站点(俄⽂:Рамблер)开发的,第⼀个公开版本0.1.0发布于2004年10⽉4⽇。其将以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、⽰例配置⽂件和低系统资源的消耗⽽。2011年6⽉1⽇,nginx 1.0.4发布。Nginx是⼀款的 服务器/服务器及(IMAP/POP3)代理服务器,并在⼀个BSD-like 协议下发⾏。其特点是占有内存少,能⼒强,事实上nginx的并发能⼒确实在同类型的⽹页服务器中表现较好,中国⼤陆使⽤nginx⽹站⽤户有:百度、、、、、等。Nginx作为:Nginx 既可以在内部直接⽀持 Rails 和 PHP 程序对外进⾏服务,也可以⽀持作为 HTTP对外进⾏服务。Nginx采⽤C进⾏编写,不论是系统资源开销还是CPU使⽤效率都⽐ Perlbal 要好很多。Nginx代码完全⽤从头写成。九、KibanaKibana是⼀个开源的分析与可视化平台,设计出来⽤于和Elasticsearch⼀起使⽤的。你可以⽤kibana搜索、查看、交互存放在Elasticsearch索引⾥的数据,使⽤各种不同的图表、表格、地图等kibana能够很轻易地展⽰⾼级数据分析与可视化。Kibana让我们理解⼤量数据变得很容易。它简单、基于浏览器的接⼝使你能快速创建和分享实时展现Elasticsearch查询变化的动态仪表盘。安装Kibana⾮常快,你可以在⼏分钟之内安装和开始探索你的Elasticsearch索引数据,不需要写任何代码,没有其他基础软件依赖。⼗、
是由 SoundCloud 开发的开源监控报警系统和时序列数据库(TSDB).⾸先-什么是 TSDB (Time Series Database):我们可以简单的理解为.⼀个优化后⽤来处理时间序列数据的软件,并且数据中的数组是由时间进⾏索引的.⾸先-什么是 TSDB (Time Series Database):我们可以简单的理解为.⼀个优化后⽤来处理时间序列数据的软件,并且数据中的数组是由时间进⾏索引的.
⼗⼀、rubyRuby,⼀种简单快捷的(),在20世纪90年代由⽇本⼈松本⾏弘()开发,遵守协议和Ruby License。它的灵感与特性来⾃于 、、、以及 语⾔。由 Ruby 语⾔本⾝还发展出了JRuby()、IronRuby(平台)等其他平台的 Ruby 语⾔。Ruby的作者于1993年2⽉24⽇开始编写Ruby,直⾄1995年12⽉才正式于fj()。因为Perl发⾳与6⽉诞⽣⽯pearl()相同,因此Ruby以7⽉诞⽣⽯ruby()命名。⼗⼆、Hadoop是⼀个由Apache基⾦会所开发的基础架构。⽤户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利⽤集群的威⼒进⾏⾼速运算和存储。[1] Hadoop实现了⼀个(Hadoop Distributed File System),简称HDFS。HDFS有⾼的特点,并且设计⽤来部署在低廉的(low-cost)硬件上;⽽且它提供⾼吞吐量(high throughput)来访问的数据,适合那些有着超⼤数据集(large data set)的应⽤程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)⽂件系统中的数据。Hadoop的框架最核⼼的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。 [2]
⼗三、HbaseHBase是⼀个分布式的、⾯向列的开源数据库,该技术来源于
像Bigtable利⽤了Google⽂件系统(File
的是HBase基于列的⽽不是基于⾏的模式。HBase – Hadoop Database,是⼀个⾼性、⾼性能、⾯向列、可伸缩的,利⽤HBase技术可在廉价PC Server上搭建起⼤规模化集群。⼗四、PhoenixApache Phoenix 是运⾏在Hbase之上的⾼性能关系型数据库,通过Phoenix可以像使⽤jdbc访问关系型数据库⼀样访问hbase。Fay Chang 所撰写的Google论⽂“Bigtable:⼀个结构化数据的”。就System)所提供的分布式数据存储⼀样,HBase在Hadoop之上提供了类似于Bigtable的能⼒。HBase是Apache的Hadoop项⽬的⼦项⽬。HBase不同于⼀般的关系数据库,它是⼀个适合于⾮结构化数据存储的数据库。另⼀个不同Phoenix,操作的表以及数据存储在hbase上。phoenix只需要和hbase进⾏表关联。然后在⽤⼯具进⾏⼀些读写操作。可以把Phoenix 只看成⼀种代替Hbase语法的⼯具。虽然Java可以⽤jdbc来连接phoenix,然后操作hbase,但是在⽣产环境中,不可以⽤OLTP中。phoenix在查询hbase时,虽然做了⼀些优化,但是延迟还是不⼩。所以依然⽤在OLAT中,在将结果返回存储下来。⼗五、Hivehive是基于Hadoop的⼀个⼯具,可以将结构化的数据⽂件映射为⼀张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进⾏运⾏。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应⽤,⼗分适合的统计分析
发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1688108398a82741.html
评论列表(0条)