技术分享|23个适合Java开发者的大数据工具和框架

2018-09-14 16:28:33

目前,编程人员面对的最大挑战就是复杂性,硬件越来越复杂,OS越来越复杂,编程语言和API越来越复杂,我们构建的应用也越来越复杂。根据外媒的一项调查报告,西安中软卓越的老师为大家列出了Java程序员在过去12个月内一直使用的一些工具或框架,或许会对你有意义。

技术分享|23个适合Java开发者的大数据工具和框架.jpg

先来看看大数据的概念。根据维基百科,大数据是庞大或复杂的数据集的广义术语,因此传统的数据处理程序不足以支持如此庞大的体量。

在许多情况下,使用SQL数据库存储/检索数据都是很好的选择。而现如今的很多情况下,它都不再能满足我们的目的,这一切都取决于用例的变化。

现在来讨论一些不同的非SQL存储/处理数据工具,例如,NoSQL数据库,全文搜索引擎,实时流式处理,图形数据库等。

1MongoDB--最受欢迎的,跨平台的,面向文档的数据库

23个适合Java开发者的大数据工具和框架1.jpg

MongoDB是一个基于分布式文件存储的数据库,使用C++语言编写。旨在为Web应用提供可扩展的高性能数据存储解决方案。应用性能高低依赖于数据库性能,MongoDB则是非关系数据库中功能最丰富,最像关系数据库的,随着MongDB3.4版本发布,其应用场景适用能力得到了进一步拓展。

MongoDB的核心优势就是灵活的文档模型、高可用复制集、可扩展分片集群。你可以试着从几大方面了解MongoDB,如实时监控MongoDB工具、内存使用量和页面错误、连接数、数据库操作、复制集等。

2Elasticsearch--为云构建的分布式RESTful搜索引擎

ElasticSearch是基于Lucene的搜索服务器。它提供了分布式多用户能力的全文搜索引擎,基于RESTfulweb接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是比较流行的企业级搜索引擎。

ElasticSearch不仅是一个全文本搜索引擎,还是一个分布式实时文档存储,其中每个field均是被索引的数据且可被搜索;也是一个带实时分析功能的分布式搜索引擎,并且能够扩展至数以百计的服务器存储及处理PB级的数据。ElasticSearch在底层利用Lucene完成其索引功能,因此其许多基本概念源于Lucene

3Cassandra--开源分布式数据库管理系统,最初是由Facebook开发的,旨在处理许多商品服务器上的大量数据,提供高可用性,没有单点故障

Apache Cassandra是一套开源分布式NoSQL数据库系统。集Google Big Table的数据模型与Amazon Dynamo的完全分布式架构于一身。于2008开源,此后,由于Cassandra良好的可扩展性,被DiggTwitterWeb2.0网站所采纳,成为了一种流行的分布式结构化数据存储方案。

Cassandra是用Java编写的,所以理论上在具有JDK6及以上版本的机器中都可以运行,官方测试的JDK还有Open JDKSunJDKCassandra的操作命令,类似于我们平时操作的关系数据库,对于熟悉MySQL的朋友来说,操作会很容易上手。

4Redis--开源(BSD许可)内存数据结构存储,用作数据库,缓存和消息代理

Redis是一个开源的使用ANSIC语言编写的、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的APIRedis有三个主要使其有别于其它很多竞争对手的特点:Redis是完全在内存中保存数据的数据库,使用磁盘只是为了持久性目的;Redis相比许多键值数据存储系统有相对丰富的数据类型;Redis可以将数据复制到任意数量的从服务器中。

5Hazelcast--基于Java的开源内存数据网格

Hazelcast是一种内存数据网格in-memorydatagrid,提供Java程序员关键任务交易和万亿级内存应用。虽然Hazelcast没有所谓的'Master',但是仍然有一个Leader节点(theoldestmember),这个概念与ZooKeeper中的Leader类似,但是实现原理却完全不同。同时,Hazelcast中的数据是分布式的,每一个member持有部分数据和相应的backup数据,这点也与ZooKeeper不同。

Hazelcast的应用便捷性深受开发者喜欢,但如果要投入使用,还需要慎重考虑。

6EHCache--广泛使用的开源Java分布式缓存。主要面向通用缓存、JavaEE和轻量级容器

EhCache是一个纯Java的进程内缓存框架,具有快速、精干等特点,是Hibernate中默认的CacheProvider。主要特性有:快速简单,具有多种缓存策略;缓存数据有两级,内存和磁盘,因此无需担心容量问题;缓存数据会在虚拟机重启的过程中写入磁盘;可以通过RMI、可插入API等方式进行分布式缓存;具有缓存和缓存管理器的侦听接口;支持多缓存管理器实例,以及一个实例的多个缓存区域;提供Hibernate的缓存实现。

7Hadoop--Java编写的开源软件框架,用于分布式存储,并对非常大的数据集进行分布式处理

23个适合Java开发者的大数据工具和框架2.jpg

用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群进行高速运算和存储。Hadoop实现了一个分布式文件系统(HadoopDistributedFileSystem),简称HDFSHadoop的框架最核心的设计就是:HDFSMapReduceHDFS为海量的数据提供了存储,MapReduce则为海量的数据提供了计算。

8Solr--开源企业搜索平台,用Java编写,来自ApacheLucene项目

Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-serviceAPI接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过HttpGet操作提出查找请求,并得到XML格式的返回结果。

ElasticSearch一样,同样是基于Lucene,但它对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化。

9Spark—Apache Software Foundation中最活跃的项目,是一个开源集群计算框架

Spark是一种与Hadoop相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些不同之处使Spark在某些工作负载方面表现得更加优越,换句话说,Spark启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载。

Spark是在Scala语言中实现的,它将Scala用作其应用程序框架。与Hadoop不同,SparkScala能够紧密集成,其中的Scala可以像操作本地集合对象一样轻松地操作分布式数据集。

10Memcached--通用分布式内存缓存系统

Memcached是一套分布式快取系统,当初是Danga Interactive为了LiveJournal所发展的,但被许多软件(MediaWiki)所使用。Memcached作为高速运行的分布式缓存服务器,具有以下的特点:协议简单,基于libevent的事件处理,内置内存存储方式。

11ApacheHive--Hadoop之上提供类似SQL的层

Hive是一个基于Hadoop的数据仓库平台。通过hive,可以方便地进行ETL工作。hive定义了一个类似于SQL的查询语言,能够将用户编写的SQL转化为相应的Mapreduce程序基于Hadoop执行。目前,已经发布了ApacheHive2.1.1版本。

12ApacheKafka--最初是由LinkedIn开发的高吞吐量,分布式订阅消息系统

ApacheKafka是一个开源消息系统项目,由Scala写成。该项目的目标是为处理实时数据提供一个统一、高通量、低等待的平台。Kafka维护按类区分的消息,称为主题(topic)。生产者(producer)kafka的主题发布消息,消费者(consumer)向主题注册,并且接收发布到这些主题的消息。kafka以一个拥有一台或多台服务器的集群运行着,每一台服务器称为broker

13Akka--用于在JVM上构建高并发,分布式和弹性消息驱动应用程序的工具包

Akka是一个用Scala编写的库,用于简化编写容错的、高可伸缩性的JavaScalaActor模型应用。它已经成功运用在电信行业,系统几乎不会宕机。

14HBase--开放源代码,非关系型,分布式数据库,采用GoogleBigTable建模,用Java编写,并在HDFS上运行

23个适合Java开发者的大数据工具和框架3.jpg

FUJITSUCliq等商用大数据产品不同,HBaseGoogle Big table的开源实现,类似Google Big table利用GFS作为其文件存储系统,HBase利用Hadoop HDFS作为其文件存储系统;Google运行Map Reduce来处理Big table中的海量数据,HBase同样利用Hadoop Map Reduce来处理HBase中的海量数据;Google Big table利用Chubby作为协同服务,HBase利用Zookeeper作为对应。

15Neo4j--Java中实现的开源图形数据库

Neo4j是一个高性能的NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全事务特性的Java持久化引擎。

16CouchBase--开源分布式的NoSQL面向文档数据库,针对交互式应用程序进行了优化

如果以前没有NoSQL的使用经验,那么理解couchbase的时候关键有两点:延后写入和松散存储。该产品基于ApacheCouchDB,并整合了GeoCouch(一个基于Erlang、紧密集成的地理空间索引系统,可支持LBS应用)

17ApacheStorm--开源分布式实时计算系统

ApacheStorm是一个能近实时地在数据之上运行用户代码片段的流式数据处理框架。它实际上是一系列连在一起的管道。通常用于简单的分析任务,诸如计算,以及清洗,使其常规化,并且准备摄入用于长期存储的数据。

18CouchDB--开源的面向文档的NoSQL数据库,使用JSON存储数据

CouchDB是一个开源的面向文档的数据库管理系统,可以通过RESTful  JavaScript  Object Notation(JSON)API访问。CouchDB落实到最底层的数据结构就是两类B+Tree

19Oracle Coherence--内存数据网格解决方案,通过提供对常用数据的快速访问,使企业能够可预测地扩展关键任务应用程序

简单来说,Coherence仅支持Java.NETC++API三个版本,这三个都是面向对象的语言,这也说明Coherence和应用开发的亲和性。

20Titan--可扩展的图形数据库,优化用于存储和查询包含分布在多机集群上的数百亿个顶点和边的图形

23个适合Java开发者的大数据工具和框架4.jpg

支持不同的分布式存储层:Cassandra1.1HBase0.92。原生实现Blueprints graph APIGremlin graph traversal  languageFrames graph-to-object mapperRexster graph server

21Amazon DynamoDB--快速,灵活的全面管理NoSQL的数据库服务,适用于任何规模的要求一致性,单位毫秒延迟的应用程序

Amazon DynamoDB是一种完全托管的NoSQL数据库服务,提供快速而可预测的性能,能够实现无缝扩展。

22Amazon Kinesis--AWS上的实时流式传输数据平台

Web应用程序、移动设备、可穿戴设备、行业传感器和许多软件应用程序和服务都可能生成大量的流数据(有时达到每小时数TB),需要对其进行连续地收集、存储和处理。Amazon Kinesis就是针对这种需求产生的。

23Datomic--完全事务,云就绪,分布式数据库,用Clojure编写

Datomic是一个灵活的、基于时间因子的数据库,支持联合查询,具有弹性的可扩展性以及支持ACID事务性。Datomic提供高可用的、分布式存储服务。

作为一名开发人员,技术是立身的根本,是拴马桩的尊严;对于一个做教育机构,口碑如水是生命之源,是长盛不衰的根本。13年历经风雨依然昂首前行,未来的西安中软卓越同样会恪守初心,以技术立身,培养IT精英,捍卫教育本质。

本文由中软卓越(西安)汇集整理,转载请注明作者及出处。

如需学习java、UI设计、软件测试、Python、大数据、嵌入式、Linxu云计算,请点击咨询,加入我们让你的未来不再迷茫。

关于我们

“简称中软卓越”,是中软国际教育科技股份有限公司是大型IT人才培训机构,是人才战略的核心组成部分之一,承担集团发展过程中人才储备和培养的任务;专注IT培训37年,国内高端IT培训品牌,教育部指定官方IT人才培训机构。专注java培训、UI设计培训、软件测试培训、Python培训、大数据培训、嵌入式培训、Linxu云计算培训等培训课程。217家合作院校,880家合作企业,真实项目实战,素质拓展,职业规划。零首付,100%保障就业,先就业,后付款。

最牛逼的毕业学员入职名企享受高薪就业。880家合作企业,年培育学员人数逾6000人,毕业学员就职于中软国际、百度、腾讯、阿里巴巴、IBM、华为科技、中兴通讯、软通动力等知名企业。

还有什么疑问?我们全面为你解答!为您提供一对一专人服务,请点击下方咨询

  • 卓越资讯
  • 猜你想看
  • 常见问题

    Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。[详细课程]

    软件开发是根据用户要求建造出软件系统或者系统中的软件部分的过程;软件开发是一项包括需求捕捉、需求分析、设计、实现和测试的系统工程。[详细课程]

    软件测试是在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。[详细课程]

    Python是一种面向对象的解释型计算机程序设计语言,语法简洁清晰,特色之一是强制用空白符作为语句缩进,它常被昵称为胶水语言,能够把用其他语言制作的各种模块。[详细课程]

    UI设计分为实体UI和虚拟UI,互联网说的UI设计是虚拟UI,一般是指对软件的人机交互、操作逻辑、界面美观的整体设计。[详细课程]

    大数据,又称巨量资料,指的是所涉及的数据资料量规模巨大到无法通过人脑甚至主流软件工具,在合理时间内达到撷取、管理、处理、并整理成为帮助企业经营决策更积极目的的资讯。[详细课程]

    云计算是一种按使用量付费的模式,这种模式提供可用的、便捷的、按需的网络访问, 进入可配置的计算资源共享池(资源包括网络,服务器,存储,应用软件,服务),这些资源能够被快速提供,只需投入很少的管理工作,或与服务供应商进行很少的交互。[详细课程]

    西安市长安北路8号高速大厦三楼

    电话:029-61876930