基于Java的百度百科app运营数据分析工具具开发

1106人阅读
最适合Java开发者的大数据工具和框架
发布时间:
作者:广州北大青鸟车陂
来源: 今日头条
浏览次数:75
摘要: 当今编程人员面对的最大挑战就是复杂性,我们构建的应用也越来越复杂。北大青鸟车陂校区为大家搜来外媒的一项调查报告,以下列…
当今编程人员面对的最大挑战就是复杂性,硬件越来越复杂,OS越来越复杂,编程语言和API越来越复杂,我们构建的应用也越来越复杂。北大青鸟车陂校区为大家搜来外媒的一项调查报告,以下列出了Java程序员在过去12个月内一直使用的一些工具或框架,北大青鸟车陂校区希望能帮到您。
先来看看大数据的概念。根据维基百科,大数据是庞大或复杂的数据集的广义术语,因此传统的数据处理程序不足以支持如此庞大的体量。
在许多情况下,使用SQL数据库存储/检索数据都是很好的选择。而现如今的很多情况下,它都不再能满足我们的目的,这一切都取决于用例的变化。
现在北大青鸟车陂校区和大家来讨论一些不同的非SQL存储/处理数据工具,例如,NoSQL数据库,全文搜索引擎,实时流式处理,图形数据库等。
1、MongoDB——最受欢迎的,跨平台的,面向文档的数据库。
MongoDB是一个基于分布式文件存储的数据库,使用C++语言编写。旨在为Web应用提供可扩展的高性能数据存储解决方案。应用性能高低依赖于数据库性能,MongoDB则是非关系数据库中功能最丰富,最像关系数据库的,随着MongDB 3.4版本发布,其应用场景适用能力得到了进一步拓展。
MongoDB的核心优势就是灵活的文档模型、高可用复制集、可扩展分片集群。你可以试着从几大方面了解MongoDB,如实时监控MongoDB工具、内存使用量和页面错误、连接数、数据库操作、复制集等。
2、Elasticsearch ——为云构建的分布式RESTful搜索引擎。
ElasticSearch是基于Lucene的搜索服务器。它提供了分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是比较流行的企业级搜索引擎。
ElasticSearch不仅是一个全文本搜索引擎,还是一个分布式实时文档存储,其中每个field均是被索引的数据且可被搜索;也是一个带实时分析功能的分布式搜索引擎,并且能够扩展至数以百计的服务器存储及处理PB级的数据。ElasticSearch在底层利用Lucene完成其索引功能,因此其许多基本概念源于Lucene。
3、Cassandra——开源分布式数据库管理系统
最初是由Facebook开发的,旨在处理许多商品服务器上的大量数据,提供高可用性,没有单点故障。
Apache Cassandra是一套开源分布式NoSQL数据库系统。集Google BigTable的数据模型与Amazon Dynamo的完全分布式架构于一身。于2008开源,此后,由于Cassandra良好的可扩展性,被Digg、Twitter等Web 2.0网站所采纳,成为了一种流行的分布式结构化数据存储方案。
因Cassandra是用Java编写的,所以理论上在具有JDK6及以上版本的机器中都可以运行,官方测试的JDK还有OpenJDK 及Sun的JDK。 Cassandra的操作命令,类似于我们平时操作的关系数据库,对于熟悉MySQL的朋友来说,操作会很容易上手。
4、Redis ——开源(BSD许可)内存数据结构存储,用作数据库,缓存和消息代理。
Redis是一个开源的使用ANSI C语言编写的、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。Redis 有三个主要使其有别于其它很多竞争对手的特点:Redis是完全在内存中保存数据的数据库,使用磁盘只是为了持久性目的; Redis相比许多键值数据存储系统有相对丰富的数据类型; Redis可以将数据复制到任意数量的从服务器中。
5、Hazelcast ——基于Java的开源内存数据网格。
Hazelcast 是一种内存数据网格 in-memory data grid,提供Java程序员关键任务交易和万亿级内存应用。虽然Hazelcast没有所谓的“Master”,但是仍然有一个Leader节点(the oldest member),这个概念与ZooKeeper中的Leader类似,但是实现原理却完全不同。同时,Hazelcast中的数据是分布式的,每一个member持有部分数据和相应的backup数据,这点也与ZooKeeper不同。
Hazelcast的应用便捷性深受开发者喜欢,但如果要投入使用,还需要慎重考虑。
6、EHCache——广泛使用的开源Java分布式缓存。
主要面向通用缓存、Java EE和轻量级容器。
EhCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点,是Hibernate中默认的CacheProvider。主要特性有:快速简单,具有多种缓存策略;缓存数据有两级,内存和磁盘,因此无需担心容量问题;缓存数据会在虚拟机重启的过程中写入磁盘;可以通过RMI、可插入API等方式进行分布式缓存;具有缓存和缓存管理器的侦听接口;支持多缓存管理器实例,以及一个实例的多个缓存区域;提供Hibernate的缓存实现。
7、Hadoop ——用Java编写的开源软件框架,用于分布式存储,并对非常大的数据集进行分布式处理。
用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群进行高速运算和存储。Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,MapReduce则为海量的数据提供了计算。
8、Solr ——开源企业搜索平台,用Java编写,来自Apache Lucene项目。
Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。
与ElasticSearch一样,同样是基于Lucene,但它对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化。
9、Spark ——Apache Software Foundation中最活跃的项目,是一个开源集群计算框架。
Spark 是一种与 Hadoop 相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些不同之处使 Spark 在某些工作负载方面表现得更加优越,换句话说,Spark 启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载。
Spark 是在 Scala 语言中实现的,它将 Scala 用作其应用程序框架。与 Hadoop 不同,Spark 和 Scala 能够紧密集成,其中的 Scala 可以像操作本地集合对象一样轻松地操作分布式数据集。
10、Memcached ——通用分布式内存缓存系统。
Memcached是一套分布式快取系统,当初是Danga Interactive为了LiveJournal所发展的,但被许多软件(如MediaWiki)所使用。Memcached作为高速运行的分布式缓存服务器,具有以下的特点:协议简单,基于libevent的事件处理,内置内存存储方式。
11、Apache Hive ——在Hadoop之上提供类似SQL的层。
Hive是一个基于Hadoop的数据仓库平台。通过hive,可以方便地进行ETL工作。hive定义了一个类似于SQL的查询语言,能够将用户编写的SQL转化为相应的Mapreduce程序基于Hadoop执行。目前,已经发布了Apache Hive 2.1.1 版本。
12、Apache Kafka ——最初是由LinkedIn开发的高吞吐量,分布式订阅消息系统。
Apache Kafka是一个开源消息系统项目,由Scala写成。该项目的目标是为处理实时数据提供一个统一、高通量、低等待的平台。Kafka维护按类区分的消息,称为主题(topic)。生产者(producer)向kafka的主题发布消息,消费者(consumer)向主题注册,并且接收发布到这些主题的消息。kafka以一个拥有一台或多台服务器的集群运行着,每一台服务器称为broker。
13、Akka ——用于在JVM上构建高并发,分布式和弹性消息驱动应用程序的工具包。
Akka 是一个用 Scala 编写的库,用于简化编写容错的、高可伸缩性的 Java 和 Scala 的 Actor 模型应用。它已经成功运用在电信行业,系统几乎不会宕机。
14、HBase ——开放源代码,非关系型,分布式数据库,采用Google的BigTable建模,用Java编写,并在HDFS上运行。
与FUJITSU Cliq等商用大数据产品不同,HBase是Google Bigtable的开源实现,类似Google Bigtable利用GFS作为其文件存储系统,HBase利用Hadoop HDFS作为其文件存储系统;Google运行MapReduce来处理Bigtable中的海量数据,HBase同样利用Hadoop MapReduce来处理HBase中的海量数据;Google Bigtable利用 Chubby作为协同服务,HBase利用Zookeeper作为对应。
15、Neo4j ——在Java中实现的开源图形数据库。
Neo4j是一个高性能的NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全事务特性的Java持久化引擎。
16、CouchBase ——开源分布式的NoSQL面向文档数据库,针对交互式应用程序进行了优化。
如果以前没有NoSQL的使用经验,那么理解couchbase的时候关键有两点:延后写入和松散存储。该产品基于Apache CouchDB,并整合了GeoCouch(一个基于Erlang、紧密集成的地理空间索引系统,可支持LBS应用)。
17、Apache Storm——开源分布式实时计算系统。
Apache Storm 是一个能近实时地在数据之上运行用户代码片段的流式数据处理框架。它实际上是一系列连在一起的管道。通常用于简单的分析任务 ,诸如计算,以及清洗,使其常规化,并且准备摄入用于长期存储的数据。
18、CouchDB——开源的面向文档的NoSQL数据库,使用JSON存储数据。
CouchDB 是一个开源的面向文档的数据库管理系统,可以通过 RESTful JavaScript Object Notation (JSON) API 访问。CouchDB落实到最底层的数据结构就是两类B+Tree 。
19、Oracle Coherence——内存数据网格解决方案,通过提供对常用数据的快速访问,使企业能够可预测地扩展关键任务应用程序。
简单来说,Coherence仅支持Java,.NET和C++ API三个版本,这三个都是面向对象的语言,这也说明Coherence和应用开发的亲和性。
20、Titan——可扩展的图形数据库,优化用于存储和查询包含分布在多机集群上的数百亿个顶点和边的图形。
支持不同的分布式存储层:Cassandra 1.1和HBase 0.92。原生实现 Blueprints graph API,Gremlin graph traversal language,Frames graph-to-object mapper,Rexster graph server。
21、Amazon DynamoDB——快速,灵活的全面管理NoSQL的数据库服务,适用于任何规模的要求一致性,单位毫秒延迟的应用程序。
Amazon DynamoDB 是一种完全托管的 NoSQL 数据库服务,提供快速而可预测的性能,能够实现无缝扩展。
22、Amazon Kinesis——AWS上的实时流式传输数据平台。
Web 应用程序、移动设备、可穿戴设备、行业传感器和许多软件应用程序和服务都可能生成大量的流数据(有时达到每小时数 TB),需要对其进行连续地收集、存储和处理。Amazon Kinesis 就是针对这种需求产生的。
23、Datomic——完全事务,云就绪,分布式数据库,用Clojure编写。
Datomic 是一个灵活的、基于时间因子的数据库,支持联合查询,具有弹性的可扩展性以及支持ACID事务性。Datomic 提供高可用的、分布式存储服务
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:16809次
排名:千里之外
原创:34篇
转载:31篇
(10)(5)(20)(16)(17)(1)开发者常常都会想办法如何更快地编写 Java 代码,让编程变得更加轻松。目前,市面上涌现出越来越多的高效编程工具。所以,以下总结了一系列工具列表,其中包含了大多数开发人员已经使用、正在使用或将来一定会用到的高效工具。这份列表名单包括集成开发环境、集成工具、测试和质量工具等。
1、集成开发环境
是最有名也最广泛使用的Java集成开发环境(IDE),允许开发者结合语言支持和其他功能到任何的默认包中,而且Eclipse市场有许多定制和扩展的插件。
已经引起了开发者的“追捧”,甚至比还受宠,有免费版和专业版。为众多Java EE框架提供了针对框架的编码帮助和提升生产效率的功能,还有大多数应用服务器的部署工具。
的也属于IDE类,允许开发者快速、简便地开发桌面应用、移动应用和Web应用。NetBeans是免费开源的,还拥有全球性的用户和开发者社区。
是提供的一个免费的集成开发环境,它为Oracle融合中间件和融合应用产品提供完整的端到端开发,支持整个开发生命周期。
是一个Java语言的单元测试框架,用于编写和运行可重复的测试。它为测试预期结果提供断言,为共享的常用测试数据提供测试装置(test fixtures),以及运行测试的测试者(test runners)。可以在这里看一下JUnit的。
是受到了JUnit的启发开发而成,但同时还具有一些新功能,所以相对而言,TestNG更加强大也更便于使用,如注解(annotations)、灵活的测试配置、数据驱动的测试和参数支持,以及强大的执行模型。它涵盖了单元测试、功能、端到端、集成测试,支持各种工具和插件(Eclipse、IDEA、Maven等)。具体内容可以参考的文章。
是一个mocking框架,帮助开发者编写具有简洁API的精美测试。其测试的可读性很好,并能产生清晰的验证错误。使用Mockito还能在执行后可以对交互进行问询。Mocks是透明的,所以开发者可以专注于测试选定的行为。更多详情可以参考的相关文章。
是一个Java和JVM的测试平台,主要侧重于集成和功能测试。它去掉了单元测试,重点关注真正实时环境下的程序代码的相互作用。为测试配备了容器生命周期管理和典型测试精选。
是一个非常著名的软件项目管理和综合工具。基于项目对象模型(POM)的概念,它的信息中心管理着项目的构建、报告和文档。提供了一个统一的构建系统、项目信息和最佳的开发实践指导,并且支持新功能的透明迁移。
是一个开源的自动化构建系统。Gradle可以自动构建、测试、发布、部署,还有多种软件包或其他类型项目,如生成静态网站。结合了Ant的能力和灵活性,以及Maven的依赖管理和约定,形成了一种高效的构建方式。
是一个开源的Apache项目,经Apache软件许可发布。它由多种内置任务而成,允许开发者编写、装配、测试和运行java应用程序。它的特点是高度灵活,不会严格限制Java项目的编码惯例或目录布局。
是一种流行的依赖管理工具,注重灵活性和简单性。它是Apache Ant项目的一个子项目,而Ivy用来解决项目依赖项。外部的XML文件定义项目依赖项,并列出构建项目的所需资源。然后Ivy从artifact 存储库(artifact repository)中下载资源,它具有良好的灵活性和可配置性。Apache Ivy 是由Apache Apache Ant集成的,因此将使Apache Maven的依赖管理优势也带到Apache Ant构建文件中,为那些已经使用Apache Ant且不想迁移到Apache Maven的开发者提供了便利。
4、应用服务器
是一个开源的Web服务器和Servlet容器,由Apache软件基金会(ASF)开发。它实现了几个Java EE规范,包括Java Servlet、JavaServer Pages(JSP)、Java EL和WebSocket,提供了一个可以运行Java代码的HTTP Web服务器环境。想要了解更多请。
,其前身是或,是一个由Jboss开发的应用服务器,现在由红帽在开发维护。它是用Java编写的,并且实现了Java平台和企业版(Java EE)规范。WildFly是可以在多个平台上运行的免费开源工具。
是由Sun Microsystems的Java EE平台起步,现在由Oracle公司赞助的开源应用服务器项目。支持的版本叫做Oracle 应用服务器。 是免费软件,经两个免费的软件许可证批准:通用开发与发布许可(CDDL)和GNU通用公共许可证(GPL)。
服务器是一个Java EE应用服务器,目前由Oracle公司开发,用于构建和部署企业应用Java EE,支持降低运营成本、提高性能、增强可扩展性和支持Oracle应用组合等的新特性。
是开源的Apache项目,实际上是一个专为负载功能测试和性能测试的Java应用。它最初的设计是用于Web应用,但现在已扩展到其他测试功能。它可以测试静态和动态资源性能,模拟一个或多个服务器负载来测试它的强度或者分析不同负载类型下的整体性能。可以查看关于Jmeter的。
是一个免费的开源跨平台的功能测试解决方案。它提供了一个图形界面和企业级功能,允许创建和执行自动化功能、回归、符合性和负载测试。SoapUI在一个测试环境下提供了完整的测试覆盖率,而且支持所有的标准协议和技术。
6、质量分析
是一个开源的平台,现已成为代码质量管理系统的世界领先者,并且因代码质量的持续检查为众人所知。除了Java外,它还支持大多数的语言,而且可以用作开发,它集成了大多数的持续集成工具。SonarQube会为重复代码、编码标准、单元测试、代码覆盖、复杂代码、潜在错误、注释、设计和架构而产生报告。
也是开源的工具,在Lesser GNU Public license许可下发布。它运行在Java字节码上而不是源代码,可以识别和确定潜在错误的严重程度,如空指针引用、无限递归循环、Java库和死锁的错误使用。同时,它还可以作为Eclipse、NetBeans,IntelliJ IDEA的插件。可以参考。
是一个源代码分析器。它可以检测到常见的编程错误,如未使用的变量、空的catch块、不必要的对象创建等等。它支持除了包括Java的大多数语言,还包含CPD、复制粘贴探测器。
的是一个开发工具,可以帮助坚持按编码标准来编写Java代码,会自动启动Java代码检查。它的配置性很强,能支持几乎任何的编码标准。
7、版本控制
是众所周知的SVN工具,是一个软件版本和版本控制系统,在一个开源许可下发布。目前,它是由一个Apache软件基金会的项目开发,也是全球性开发者和用户社区的一部分。
是一个免费开源的分布式版本控制系统,能够提高大小事务的速度和效率。相对于其他的配置管理工具,的特色在于提供廉价的局部分支、便利的暂存区和多个工作流。每个Git工作目录是一个完整的版本库,有完整历史和完整版本的跟踪能力、独立的网络接入或中央服务器。可以查看。
8、持续集成
是一个屡获殊荣的应用程序,能够监视重复的工作,从建立一个软件项目到由cron运行的作业。它的基本功能是不断建立和测试软件项目,使得开发者能更容易地将变更集成到项目中,使用户更容易获得新的构建。还可以监控外部运行任务的执行,如cron jobs,即使是运行在远程计算机上的任务。
是一个企业级持续集成服务器。提供的特性包括:自动构建、发布管理、基于角色的权限管理,以及能与其它流行构建工具和源代码管理系统相集成。
是一个用Java编写的持续集成(CI)工具,在应用服务器上运行。它支持各种SCM工具,如Subversion、Git,可以执行Apache Ant和Apache Maven项目,以及任意shell脚本和Windows批处理命令。它监视重复任务的执行,如建立一个软件项目或由cron运行的作业。
9、Java 应用分析
在为分析Java应用开发最创新的智能工具方面,分析器是技术的领头羊。你可以在CPU和内存分析上都使用YourKit解决方案,还可以以最大生产率和零开销来分析大型应用。同时,Java分析器还有几个刚提出的分析创新,为其在各大小型企业的专业Java开发者获得了当之无愧的人气。
是商业许可的Java分析工具,对于分析性能瓶颈、内存泄漏、CPU负载和解决线程问题等方面非常有效,它支持在同一台机器或远程机器上进行分析。用户可以看到活跃的总字节、实例、线程、类和垃圾回收器活动的可视化表示。它可以作为一个独立应用使用,也可以作为Eclipse软件开发环境的插件。
可以展示业务代码的trace,实时展示缓慢的sql语句和nosql操作,还可以方便地监控JVM。可以智能探知 Java 应用之间的相互调用关系,通过串联复杂的后台组件,动态生成 J2EE 应用整体架构视图。通过拓扑图直观了解分布式或 SOA 架构应用的运行状态,准确定位系统问题。同时监控后台事务和 Web 事务。
10、代码覆盖工具
是衡量和报告Java代码覆盖率的一个开源工具包。它是由Eclipse公共许可协议许可,是目前唯一能支持Java 8的字节代码覆盖工具。
是一个商业的代码覆盖工具,它提供的指标可以让程序员更好地平衡编程和测试。它在IDE或你的持续集成系统下运行,还包括能加快测试速度的测试优化。
11、Bug跟踪
是帮助团队规划和构建优秀产品的跟踪工具。成千上万的团队选择JIRA来捕捉和组织问题、分配工作、跟进团队活动。它是付费工具,但有一个7天的免费试用期。
是一个针对软件开发项目开发的完善wiki和问题的跟踪系统,以最简洁的方式对Web软件项目进行管理。它还可以帮助开发人员编写优秀的软件,提供了对Subversion和Git(或其他版本控制系统)的接口,集成了wiki和便捷报告程序。Trac允许wiki在问题描述和提交信息中标记,还创建了bug、任务、变更、文件和页面之间的链接和无缝引用。
12、文档生成工具
是Oracle公司用来从Java源代码中生成HTML格式API文档的生成工具。IDE可以自动生成HTML代码。许多文件编辑器帮助用户生成Javadoc源,并将 Javadoc 信息当作程序员的内部参考。Javadoc也提供了用于创建doclets和taglets的API,让你能够进一步分析 Java 应用的结构。
是自动化的Java文档工具和完整的文档编写环境的结合体,可以用来为你的Java项目创建准确的专业文档。它会自动将生成的文档集成在Java IDEs中,同时还能给库、命名空间、类、接口、构造函数、方法、属性和字段生成文档页面。
以上就是为Java开发者提供的一系列可以提高编程效率的工具,尽情试用吧!以后,妈妈再也不用担心你的“高效开发”了!
(编译自:)
为您提供端到端的 解决方案,我们支持所有常见的 Java 框架及应用服务器,助您快速发现系统瓶颈,定位异常根本原因。分钟级部署,即刻体验,从来没有如此简单。想阅读更多技术文章,请访问 。

我要回帖

更多关于 数据分析百度百科 的文章

 

随机推荐