中企动力 > 商学院 > 大数据平台开源
  • ?

    给 Java 开发者的 10 个大数据工具和框架!

    雨果

    展开

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

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

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

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

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

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

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

    2、Elasticsearch——为云构建的分布式RESTful搜索引擎。

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

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

    3、Cassandra——开源分布式数据库管理系统。

    最初是由Facebook开发的,旨在处理许多商品服务器上的大量数据,提供高可用性,没有单点故障。

    ApacheCassandra是一套开源分布式NoSQL数据库系统。集GoogleBigTable的数据模型与AmazonDynamo的完全分布式架构于一身。于2008开源,此后,由于Cassandra良好的可扩展性,被Digg、Twitter等Web2.0网站所采纳,成为了一种流行的分布式结构化数据存储方案。

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

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

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

    5、Hazelcast——基于Java的开源内存数据网格。

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

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

    6、Ehcache——广泛使用的开源Java分布式缓存。

    主要面向通用缓存、JavaEE和轻量级容器。

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

    7、Hadoop——用Java编写的开源软件框架。

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

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

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

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

    9、Spark——ApacheSoftwareFoundation中最活跃的项目,是一个开源集群计算框架。

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

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

    10、Memcached——通用分布式内存缓存系统。

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

  • ?

    基于Hadoop技术 明朝万达构建完整可用的安全大数据平台

    Sebastian

    展开

    随着信息技术的高速发展,大数据的应用越来越广泛,数以千计的企业从事与大数据相关的工作,企业的数据每隔1~2年就增加一倍,呈现出数据量大、产生速度快、数据来源复杂、潜在价值高等特性。Hadoop(分布式系统基础架构)作为大数据时代存储和处理海量数据的最热门技术,基于Hadoop技术,建设大数据基础平台,对大数据应用提供对海量数据的存储及处理。但是,各行业在建设大数据平台、开展大数据应用的同时也面临一系列安全问题。

    (1)大数据平台基于开源生态环境,各组件分别由不同的开源 项目独立设计、开发,缺乏整体的基础平台安全框架,使用户或应用程序绕过权限控制,恶意节点加入等方式,利用开源平台安全漏洞,危及基础平台安全;

    (2)大数据平台“积木”式搭建,不同机构按需采用不同组件实现,缺乏整体的安全防护技术手段,使各组件基于自身安全机制,重复认证与鉴权控制,效率低下,影响基础平台业务操作与安全;

    (3)大量的数据集中存储、关联分析将有可能产生更大的商业 价值,这将会吸引黑色产业链各方带来潜在的、更严峻的安全威胁。

    基于基础平台各组件,围绕接入、存储、计算、服务等方面都有相应风险,如图所示:

    图1基础平台安全风险

    针对以上问题,明朝万达提出了大数据基础平台安全防护解决思路,围绕设施安全、采集安全、存储安全、处理安全、接口安全,构建整体的基础平台安全框架,如图所示:

    图2基础平台安全框架

    基于基础平台安全框架,对平台组件安全进行研究,提出围绕准入控制、认证、鉴权、脱敏、加密等手段进行安全防护,如图所示:

    图3基础平台安全防护手段

    (1)准入控制

    基于IP、端口对终端用户或应用程序进行准入控制,进行源IP控制、目的IP控制、IP时效性控制。

    (2)认证

    支持Kerberos、用户名/密码进行身份认证,保证访问用户或应用程序的合法性。

    (3)鉴权

    支持DAC、MAC、RBAC等多种授权模型进行鉴权,避免非法用户或应用程序接入及访问控制。

    (4)加密

    支持大数据进行分类分级,敏感数据基于国密标准算法对数据进行加密存储。

    (5)脱敏

    敏感数据处理基于脱敏规则(正则替换、字符乱序)及脱敏策略,对数据进行脱敏。

    基于大数据基础平台安全框架,围绕大数据安全防护手段,明朝万达研制大数据安全防护平台(ChinaSec BDSafe)产品,部署于网络边界,从接入、存储、计算、接口等方面进行全方位安全防护,保障大数据平台安全,推动大数据应用发展。

    图4 ChinaSec BDSafe产品

  • ?

    大数据从业者应该知道的开源工具(全)

    诸沛菡

    展开

    前言想要成为大数据工程师这些开源工具你要有所了解

    一、Hadoop相关工具

    1. Hadoop

    Apache的Hadoop项目已几乎与大数据划上了等号。它不断壮大起来,已成为一个完整的生态系统,众多开源工具面向高度扩展的分布式计算。

    支持的操作系统:Windows、Linux和OS X。

    相关链接:http://hadoop.apache.org

    2. Ambari

    作为Hadoop生态系统的一部分,这个Apache项目提供了基于Web的直观界面,可用于配置、管理和监控Hadoop集群。有些开发人员想把Ambari的功能整合到自己的应用程序当中,Ambari也为他们提供了充分利用REST(代表性状态传输协议)的API。

    支持的操作系统:Windows、Linux和OS X。

    相关链接:http://ambari.apache.org

    3. Avro

    这个Apache项目提供了数据序列化系统,拥有丰富的数据结构和紧凑格式。模式用JSON来定义,它很容易与动态语言整合起来。

    支持的操作系统:与操作系统无关。

    相关链接:http://avro.apache.org

    4. Cascading

    Cascading是一款基于Hadoop的应用程序开发平台。提供商业支持和培训服务。

    支持的操作系统:与操作系统无关。

    相关链接:http://cascading.org/projects/cascading/

    5. Chukwa

    Chukwa基于Hadoop,可以收集来自大型分布式系统的数据,用于监控。它还含有用于分析和显示数据的工具。

    支持的操作系统:Linux和OS X。

    相关链接:http://chukwa.apache.org

    6. Flume

    Flume可以从其他应用程序收集日志数据,然后将这些数据送入到Hadoop。官方网站声称:“它功能强大、具有容错性,还拥有可以调整优化的可靠性机制和许多故障切换及恢复机制。”

    支持的操作系统:Linux和OS X。

    相关链接:https://cwiki.apache.org/confluence/display/FLUME/Home

    7. HBase

    HBase是为有数十亿行和数百万列的超大表设计的,这是一种分布式数据库,可以对大数据进行随机性的实时读取/写入访问。它有点类似谷歌的Bigtable,不过基于Hadoop和Hadoop分布式文件系统(HDFS)而建。

    支持的操作系统:与操作系统无关。

    相关链接:http://hbase.apache.org

    8. Hadoop分布式文件系统(HDFS)

    HDFS是面向Hadoop的文件系统,不过它也可以用作一种独立的分布式文件系统。它基于Java,具有容错性、高度扩展性和高度配置性。

    支持的操作系统:Windows、Linux和OS X。

    相关链接:https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/HdfsUserGuide.html

    9. Hive

    Apache Hive是面向Hadoop生态系统的数据仓库。它让用户可以使用HiveQL查询和管理大数据,这是一种类似SQL的语言。

    支持的操作系统:与操作系统无关。

    相关链接:http://hive.apache.org

    10. Hivemall

    Hivemall结合了面向Hive的多种机器学习算法。它包括诸多高度扩展性算法,可用于数据分类、递归、推荐、k最近邻、异常检测和特征哈希。

    支持的操作系统:与操作系统无关。

    相关链接:https://github/myui/hivemall

    11. Mahout

    12. MapReduce

    13. Oozie

    14. Pig

    15. Sqoop

    16. Spark

    17. Tez

    18. Zookeeper

    二、大数据分析平台和工具

    19. Disco

    20. HPCC

    21. Lumify

    22. Pandas

    23. Storm

    三、数据库/数据仓库

    24. Blazegraph

    25. Cassandra

    26. CouchDB

    27. FlockDB

    28. Hibari

    29. Hypertable

    30. Impala

    31. InfoBright社区版

    32. MongoDB

    33. Neo4j

    34. OrientDB

    35. Pivotal Greenplum Database

    36. Riak

    37. Redis

    四、商业智能

    38. Talend Open Studio

    39. Jaspersoft

    40. Pentaho

    41. SpagoBI

    42. KNIME

    43. BIRT

    五、数据挖掘

    44.DataMelt

    45. KEEL

    46. Orange

    47. RapidMiner

    48. Rattle

    49. SPMF

    50. Weka

    六、查询引擎

    51. Drill

    七、编程语言

    52. R

    53. ECL

    八、大数据搜索

    54. Lucene

    九、内存中技术

    链接

    由于由于链接太多,我做了一个word文档,由于简书不能上传文件,需要答案可以加小编的qq交流群531629188,在里面直接获取文档,不管你是小白还是大牛,小编我都挺欢迎,今天的已经资讯上传到群文件,不定期分享干货,包括我自己整理的一份最新的适合2018年学习的大数据教程,欢迎初学和进阶中的小伙伴。

  • ?

    大数据分析系统Hadoop的13个开源工具

    努埃维塔斯

    展开

    Hadoop是由Apache基金会开发的一个大数据分布式系统基础架构,最早版本是2003年原Yahoo!DougCutting根据Google发布的学术论文研究而来。

    用户可以在不了解分布式底层细节的情况下,轻松地在Hadoop上开发和运行处理海量数据的应用程序。低成本、高可靠、高扩展、高有效、高容错等特性让Hadoop成为最流行的大数据分析系统,然而其赖以生存的HDFS和MapReduce组件却让其一度陷入困境——批处理的工作方式让其只适用于离线数据处理,在要求实时性的场景下毫无用武之地。

    因此,各种基于Hadoop的工具应运而生,本次为大家分享Hadoop生态系统中最常用的13个开源工具,其中包括资源调度、流计算及各种业务针对应用场景。首先,我们看资源管理相关。

    资源统一管理/调度系统

    在公司和机构中,服务器往往会因为业务逻辑被拆分为多个集群,基于数据密集型的处理框架也是不断涌现,比如支持离线处理的MapReduce、支持在线处理的Storm及Impala、支持迭代计算的Spark及流处理框架S4,它们诞生于不同的实验室,并各有所长。

    为了减少管理成本,提升资源的利用率,一个共同的想法产生——让这些框架运行在同一个集群上;因此,就有了当下众多的资源统一管理/调度系统,本次为大家重点介绍ApacheMesos及YARN:

    1、ApacheMesos

    代码托管地址:ApacheSVN

    Mesos提供了高效、跨分布式应用程序和框架的资源隔离和共享,支持Hadoop、MPI、Hypertable、Spark等。

    Mesos是Apache孵化器中的一个开源项目,使用ZooKeeper实现容错复制,使用LinuxContainers来隔离任务,支持多种资源计划分配(内存和CPU)。提供Java、Python和C++APIs来开发新的并行应用程序,提供基于Web的用户界面来提查看集群状态。

    2、HadoopYARN

    代码托管地址:ApacheSVN

    YARN又被称为MapReduce2.0,借鉴Mesos,YARN提出了资源隔离解决方案Container,但是目前尚未成熟,仅仅提供Java虚拟机内存的隔离。

    对比MapReduce1.x,YARN架构在客户端上并未做太大的改变,在调用API及接口上还保持大部分的兼容,然而在YARN中,开发人员使用ResourceManager、ApplicationMaster与NodeManager代替了原框架中核心的JobTracker和TaskTracker。其中ResourceManager是一个中心的服务,负责调度、启动每一个Job所属的ApplicationMaster,另外还监控ApplicationMaster的存在情况;NodeManager负责Container状态的维护,并向RM保持心跳。ApplicationMaster负责一个Job生命周期内的所有工作,类似老的框架中JobTracker。

    Hadoop上的实时解决方案

    前面我们有说过,在互联网公司中基于业务逻辑需求,企业往往会采用多种计算框架,比如从事搜索业务的公司:网页索引建立用MapReduce,自然语言处理用Spark等。

    3、ClouderaImpala

    代码托管地址:GitHub

    Impala是由Cloudera开发,一个开源的MassivelyParallelProcessing(MPP)查询引擎。与Hive相同的元数据、SQL语法、ODBC驱动程序和用户接口(HueBeeswax),可以直接在HDFS或HBase上提供快速、交互式SQL查询。Impala是在Dremel的启发下开发的,第一个版本发布于2012年末。

    Impala不再使用缓慢的Hive+MapReduce批处理,而是通过与商用并行关系数据库中类似的分布式查询引擎(由QueryPlanner、QueryCoordinator和QueryExecEngine三部分组成),可以直接从HDFS或者HBase中用SELECT、JOIN和统计函数查询数据,从而大大降低了延迟。

    4、Spark

    代码托管地址:Apache

    Spark是个开源的数据分析集群计算框架,最初由加州大学伯克利分校AMPLab开发,建立于HDFS之上。Spark与Hadoop一样,用于构建大规模、低延时的数据分析应用。Spark采用Scala语言实现,使用Scala作为应用框架。

    Spark采用基于内存的分布式数据集,优化了迭代式的工作负载以及交互式查询。与Hadoop不同的是,Spark和Scala紧密集成,Scala像管理本地collective对象那样管理分布式数据集。Spark支持分布式数据集上的迭代式任务,实际上可以在Hadoop文件系统上与Hadoop一起运行(通过YARN、Mesos等实现)。

    5、Storm

    代码托管地址:GitHub

    Storm是一个分布式的、容错的实时计算系统,由BackType开发,后被Twitter捕获。Storm属于流处理平台,多用于实时计算并更新数据库。Storm也可被用于“连续计算”(continuouscomputation),对数据流做连续查询,在计算时就将结果以流的形式输出给用户。它还可被用于“分布式RPC”,以并行的方式运行昂贵的运算。

    Hadoop上的其它解决方案

    就像前文说,基于业务对实时的需求,各个实验室发明了Storm、Impala、Spark、Samza等流实时处理工具。而本节我们将分享的是实验室基于性能、兼容性、数据类型研究的开源解决方案,其中包括Shark、Phoenix、ApacheAccumulo、ApacheDrill、ApacheGiraph、ApacheHama、ApacheTez、ApacheAmbari。

    6、Shark

    代码托管地址:GitHub

    Shark,代表了“HiveonSpark”,一个专为Spark打造的大规模数据仓库系统,兼容ApacheHive。无需修改现有的数据或者查询,就可以用100倍的速度执行HiveQL。

    Shark支持Hive查询语言、元存储、序列化格式及自定义函数,与现有Hive部署无缝集成,是一个更快、更强大的替代方案。

    7、Phoenix

    代码托管地址:GitHub

    Phoenix是构建在ApacheHBase之上的一个SQL中间层,完全使用Java编写,提供了一个客户端可嵌入的JDBC驱动。Phoenix查询引擎会将SQL查询转换为一个或多个HBasescan,并编排执行以生成标准的JDBC结果集。直接使用HBaseAPI、协同处理器与自定义过滤器,对于简单查询来说,其性能量级是毫秒,对于百万级别的行数来说,其性能量级是秒。Phoenix完全托管在GitHub之上。

    Phoenix值得关注的特性包括:1,嵌入式的JDBC驱动,实现了大部分的java.sql接口,包括元数据API;2,可以通过多个行键或是键/值单元对列进行建模;3,DDL支持;4,版本化的模式仓库;5,DML支持;5,通过客户端的批处理实现的有限的事务支持;6,紧跟ANSISQL标准。

    8、ApacheAccumulo

    代码托管地址:ApacheSVN

    ApacheAccumulo是一个可靠的、可伸缩的、高性能、排序分布式的键值存储解决方案,基于单元访问控制以及可定制的服务器端处理。使用GoogleBigTable设计思路,基于ApacheHadoop、Zookeeper和Thrift构建。Accumulo最早由NSA开发,后被捐献给了Apache基金会。

    对比GoogleBigTable,Accumulo主要提升在基于单元的访问及服务器端的编程机制,后一处修改让Accumulo可以在数据处理过程中任意点修改键值对。

    9、ApacheDrill

    代码托管地址:GitHub

    本质上,ApacheDrill是GoogleDremel的开源实现,本质是一个分布式的mpp查询层,支持SQL及一些用于NoSQL和Hadoop数据存储系统上的语言,将有助于Hadoop用户实现更快查询海量数据集的目的。当下Drill还只能算上一个框架,只包含了Drill愿景中的初始功能。

    Drill的目的在于支持更广泛的数据源、数据格式及查询语言,可以通过对PB字节数据的快速扫描(大约几秒内)完成相关分析,将是一个专为互动分析大型数据集的分布式系统。

    10、ApacheGiraph

    代码托管地址:GitHub

    ApacheGiraph是一个可伸缩的分布式迭代图处理系统,灵感来自BSP(bulksynchronousparallel)和Google的Pregel,与它们区别于则是是开源、基于Hadoop的架构等。

    Giraph处理平台适用于运行大规模的逻辑计算,比如页面排行、共享链接、基于个性化排行等。Giraph专注于社交图计算,被Facebook作为其OpenGraph工具的核心,几分钟内处理数万亿次用户及其行为之间的连接。

    11、ApacheHama

    代码托管地址:GitHub

    ApacheHama是一个建立在Hadoop上基于BSP(BulkSynchronousParallel)的计算框架,模仿了Google的Pregel。用来处理大规模的科学计算,特别是矩阵和图计算。集群环境中的系统架构由BSPMaster/GroomServer(ComputationEngine)、Zookeeper(DistributedLocking)、HDFS/HBase(StorageSystems)这3大块组成。

    12、ApacheTez

    代码托管地址:GitHub

    ApacheTez是基于HadoopYarn之上的DAG(有向无环图,DirectedAcyclicGraph)计算框架。它把Map/Reduce过程拆分成若干个子过程,同时可以把多个Map/Reduce任务组合成一个较大的DAG任务,减少了Map/Reduce之间的文件存储。同时合理组合其子过程,减少任务的运行时间。由Hortonworks开发并提供主要支持。

    13、ApacheAmbari

    代码托管地址:ApacheSVN

    ApacheAmbari是一个供应、管理和监视ApacheHadoop集群的开源框架,它提供一个直观的操作工具和一个健壮的HadoopAPI,可以隐藏复杂的Hadoop操作,使集群操作大大简化,首个版本发布于2012年6月。

    ApacheAmbari现在是一个Apache的顶级项目,早在2011年8月,Hortonworks引进Ambari作为ApacheIncubator项目,制定了Hadoop集群极致简单管理的愿景。在两年多的开发社区显着成长,从一个小团队,成长为Hortonworks各种组织的贡献者。Ambari用户群一直在稳步增长,许多机构依靠Ambari在其大型数据中心大规模部署和管理Hadoop集群。

    目前ApacheAmbari支持的Hadoop组件包括:HDFS、MapReduce、Hive、HCatalog、HBase、ZooKeeper、Oozie、Pig及Sqoop。

  • ?

    【干货】全球大数据领域顶级开源工具汇总

    塞缪尔

    展开

    大数据技术从业人员必读

    一、Hadoop相关工具

    1. Hadoop

    Apache的Hadoop项目已几乎与大数据划上了等号。它不断壮大起来,已成为一个完整的生态系统,众多开源工具面向高度扩展的分布式计算。

    支持的操作系统:Windows、Linux和OS X。

    相关链接:http://hadoop.apache.org

    2. Ambari

    作为Hadoop生态系统的一部分,这个Apache项目提供了基于Web的直观界面,可用于配置、管理和监控Hadoop集群。有些开发人员想把Ambari的功能整合到自己的应用程序当中,Ambari也为他们提供了充分利用REST(代表性状态传输协议)的API。

    支持的操作系统:Windows、Linux和OS X。

    相关链接:http://ambari.apache.org

    3. Avro

    这个Apache项目提供了数据序列化系统,拥有丰富的数据结构和紧凑格式。模式用JSON来定义,它很容易与动态语言整合起来。

    支持的操作系统:与操作系统无关。

    相关链接:http://avro.apache.org

    4. Cascading

    Cascading是一款基于Hadoop的应用程序开发平台。提供商业支持和培训服务。

    支持的操作系统:与操作系统无关。

    相关链接:http://cascading.org/projects/cascading/

    5. Chukwa

    Chukwa基于Hadoop,可以收集来自大型分布式系统的数据,用于监控。它还含有用于分析和显示数据的工具。

    支持的操作系统:Linux和OS X。

    相关链接:http://chukwa.apache.org

    6. Flume

    Flume可以从其他应用程序收集日志数据,然后将这些数据送入到Hadoop。官方网站声称:“它功能强大、具有容错性,还拥有可以调整优化的可靠性机制和许多故障切换及恢复机制。”

    支持的操作系统:Linux和OS X。

    相关链接:https://cwiki.apache.org/confluence/display/FLUME/Home

    7. HBase

    HBase是为有数十亿行和数百万列的超大表设计的,这是一种分布式数据库,可以对大数据进行随机性的实时读取/写入访问。它有点类似谷歌的Bigtable,不过基于Hadoop和Hadoop分布式文件系统(HDFS)而建。

    支持的操作系统:与操作系统无关。

    相关链接:http://hbase.apache.org

    8. Hadoop分布式文件系统(HDFS)

    HDFS是面向Hadoop的文件系统,不过它也可以用作一种独立的分布式文件系统。它基于Java,具有容错性、高度扩展性和高度配置性。

    支持的操作系统:Windows、Linux和OS X。

    相关链接:https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/HdfsUserGuide.html

    9. Hive

    Apache Hive是面向Hadoop生态系统的数据仓库。它让用户可以使用HiveQL查询和管理大数据,这是一种类似SQL的语言。

    支持的操作系统:与操作系统无关。

    相关链接:http://hive.apache.org

    10. Hivemall

    Hivemall结合了面向Hive的多种机器学习算法。它包括诸多高度扩展性算法,可用于数据分类、递归、推荐、k最近邻、异常检测和特征哈希。

    支持的操作系统:与操作系统无关。

    相关链接:https://github/myui/hivemall

    11. Mahout

    据官方网站声称,Mahout项目的目的是“为迅速构建可扩展、高性能的机器学习应用程序打造一个环境。”它包括用于在Hadoop MapReduce上进行数据挖掘的众多算法,还包括一些面向Scala和Spark环境的新颖算法。

    支持的操作系统:与操作系统无关。

    相关链接:http://mahout.apache.org

    12. MapReduce

    作为Hadoop一个不可或缺的部分,MapReduce这种编程模型为处理大型分布式数据集提供了一种方法。它最初是由谷歌开发的,但现在也被本文介绍的另外几个大数据工具所使用,包括CouchDB、MongoDB和Riak。

    支持的操作系统:与操作系统无关。

    相关链接:http://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html

    13. Oozie

    这种工作流程调度工具是为了管理Hadoop任务而专门设计的。它能够按照时间或按照数据可用情况触发任务,并与MapReduce、Pig、Hive、Sqoop及其他许多相关工具整合起来。

    支持的操作系统:Linux和OS X。

    相关链接:http://oozie.apache.org

    14. Pig

    Apache Pig是一种面向分布式大数据分析的平台。它依赖一种名为Pig Latin的编程语言,拥有简化的并行编程、优化和可扩展性等优点。

    支持的操作系统:与操作系统无关。

    相关链接:http://pig.apache.org

    15. Sqoop

    企业经常需要在关系数据库与Hadoop之间传输数据,而Sqoop就是能完成这项任务的一款工具。它可以将数据导入到Hive或HBase,并从Hadoop导出到关系数据库管理系统(RDBMS)。

    支持的操作系统:与操作系统无关。

    相关链接:http://sqoop.apache.org

    16. Spark

    作为MapReduce之外的一种选择,Spark是一种数据处理引擎。它声称,用在内存中时,其速度比MapReduce最多快100倍;用在磁盘上时,其速度比MapReduce最多快10倍。它可以与Hadoop和Apache Mesos一起使用,也可以独立使用。

    支持的操作系统:Windows、Linux和OS X。

    相关链接:http://spark.apache.org

    17. Tez

    Tez建立在Apache Hadoop YARN的基础上,这是“一种应用程序框架,允许为任务构建一种复杂的有向无环图,以便处理数据。”它让Hive和Pig可以简化复杂的任务,而这些任务原本需要多个步骤才能完成。

    支持的操作系统:Windows、Linux和OS X。

    相关链接:http://tez.apache.org

    18. Zookeeper

    这种大数据管理工具自称是“一项集中式服务,可用于维护配置信息、命名、提供分布式同步以及提供群组服务。”它让Hadoop集群里面的节点可以彼此协调。

    支持的操作系统:Linux、Windows(只适合开发环境)和OS X(只适合开发环境)。

    相关链接:http://zookeeper.apache.org

    二、大数据分析平台和工具

    19. Disco

    Disco最初由诺基亚开发,这是一种分布式计算框架,与Hadoop一样,它也基于MapReduce。它包括一种分布式文件系统以及支持数十亿个键和值的数据库。

    支持的操作系统:Linux和OS X。

    相关链接:http://discoproject.org

    20. HPCC

    作为Hadoop之外的一种选择,HPCC这种大数据平台承诺速度非常快,扩展性超强。除了免费社区版外,HPCC Systems还提供收费的企业版、收费模块、培训、咨询及其他服务。

    支持的操作系统:Linux。

    相关链接:http://hpccsystems

    21. Lumify

    Lumify归Altamira科技公司(以国家安全技术而闻名)所有,这是一种开源大数据整合、分析和可视化平台。你只要在Try.Lumify.io试一下演示版,就能看看它的实际效果。

    支持的操作系统:Linux。

    相关链接:http://jboss.org/infinispan.html

    22. Pandas

    Pandas项目包括基于Python编程语言的数据结构和数据分析工具。它让企业组织可以将Python用作R之外的一种选择,用于大数据分析项目。

    支持的操作系统:Windows、Linux和OS X。

    相关链接:http://pandas.pydata.org

    23. Storm

    Storm现在是一个Apache项目,它提供了实时处理大数据的功能(不像Hadoop只提供批任务处理)。其用户包括推特、美国天气频道、WebMD、阿里巴巴、Yelp、雅虎日本、Spotify、Group、Flipboard及其他许多公司。

    支持的操作系统:Linux。

    相关链接:https://storm.apache.org

    三、数据库/数据仓库

    24. Blazegraph

    Blazegraph之前名为“Bigdata”,这是一种高度扩展、高性能的数据库。它既有使用开源许可证的版本,也有使用商业许可证的版本。

    支持的操作系统:与操作系统无关。

    相关链接:http://systap/bigdata

    25. Cassandra

    这种NoSQL数据库最初由Facebook开发,现已被1500多家企业组织使用,包括苹果、欧洲原子核研究组织(CERN)、康卡斯特、电子港湾、GitHub、GoDaddy、Hulu、Instagram、Intuit、Netfilx、Reddit及其他机构。它能支持超大规模集群;比如说,苹果部署的Cassandra系统就包括75000多个节点,拥有的数据量超过10 PB。

    支持的操作系统:与操作系统无关。

    相关链接:http://cassandra.apache.org

    26. CouchDB

    CouchDB号称是“一款完全拥抱互联网的数据库”,它将数据存储在JSON文档中,这种文档可以通过Web浏览器来查询,并且用JavaScript来处理。它易于使用,在分布式上网络上具有高可用性和高扩展性。

    支持的操作系统:Windows、Linux、OS X和安卓。

    相关链接:http://couchdb.apache.org

    27. FlockDB

    由推特开发的FlockDB是一种非常快、扩展性非常好的图形数据库,擅长存储社交网络数据。虽然它仍可用于下载,但是这个项目的开源版已有一段时间没有更新了。

    支持的操作系统:与操作系统无关。

    相关链接:https://github/twitter/flockdb

    28. Hibari

    这个基于Erlang的项目自称是“一种分布式有序键值存储系统,保证拥有很强的一致性”。它最初是由Gemini Mobile Technologies开发的,现在已被欧洲和亚洲的几家电信运营商所使用。

    支持的操作系统:与操作系统无关。

    相关链接:http://hibari.github.io/hibari-doc/

    29. Hypertable

    Hypertable是一种与Hadoop兼容的大数据数据库,承诺性能超高,其用户包括电子港湾、百度、高朋、Yelp及另外许多互联网公司。提供商业支持服务。

    支持的操作系统:Linux和OS X。

    相关链接:http://hypertable.org

    30. Impala

    Cloudera声称,基于SQL的Impala数据库是“面向Apache Hadoop的领先的开源分析数据库”。它可以作为一款独立产品来下载,又是Cloudera的商业大数据产品的一部分。

    支持的操作系统:Linux和OS X。

    相关链接:http://cloudera/content/cloudera/en/products-and-services/cdh/impala.html

    31. InfoBright社区版

    InfoBright为数据分析而设计,这是一种面向列的数据库,具有很高的压缩比。InfoBright提供基于同一代码的收费产品,提供支持服务。

    支持的操作系统:Windows和Linux。

    相关链接:http://infobright.org

    32. MongoDB

    mongoDB的下载量已超过1000万人次,这是一种极其受欢迎的NoSQL数据库。MongoDB上提供了企业版、支持、培训及相关产品和服务。

    支持的操作系统:Windows、Linux、OS X和Solaris。

    相关链接:http://mongodb.org

    33. Neo4j

    Neo4j自称是“速度最快、扩展性最佳的原生图形数据库”,它承诺具有大规模扩展性、快速的密码查询性能和经过改进的开发效率。用户包括电子港湾、必能宝(Pitney Bowes)、沃尔玛、德国汉莎航空公司和CrunchBase。

    支持的操作系统:Windows和Linux。

    相关链接:http://neo4j.org

    34. OrientDB

    这款多模型数据库结合了图形数据库的一些功能和文档数据库的一些功能。提供收费支持、培训和咨询等服务。

    支持的操作系统:与操作系统无关。

    相关链接:http://orientdb.org/index.htm

    35. Pivotal Greenplum Database

    Pivotal声称,Greenplum是“同类中最佳的企业级分析数据库”,能够非常快速地对庞大的海量数据进行功能强大的分析。它是Pivotal大数据库套件的一部分。

    支持的操作系统:Windows、Linux和OS X。

    相关链接:http://pivotal.io/big-data/pivotal-greenplum-database

    36. Riak

    Riak“功能完备”,有两个版本:KV是分布式NoSQL数据库,S2提供了面向云环境的对象存储。它既有开源版,也有商业版,还有支持Spark、Redis和Solr的附件。

    支持的操作系统:Linux和OS X。

    相关链接:http://basho/riak-0-10-is-full-of-great-stuff/

    37. Redis

    Redis现在由Pivotal赞助,这是一种键值缓存和存储系统。提供收费支持。要注意:虽然该项目并不正式支持Windows,不过微软在GitHub上有一个Windows派生版。

    支持的操作系统:Linux。

    相关链接:http://redis.io

    四、商业智能

    38. Talend Open Studio

    Talend的下载量已超过200万人次,其开源软件提供了数据整合功能。该公司还开发收费的大数据、云、数据整合、应用程序整合和主数据管理等工具。其用户包括美国国际集团(AIG)、康卡斯特、电子港湾、通用电气、三星、Ticketmaster和韦里逊等企业组织。

    支持的操作系统:Windows、Linux和OS X。

    相关链接:http://talend/index.php

    39. Jaspersoft

    Jaspersoft提供了灵活、可嵌入的商业智能工具,用户包括众多企业组织:高朋、冠群科技、美国农业部、爱立信、时代华纳有线电视、奥林匹克钢铁、内斯拉斯加大学和通用动力公司。除了开源社区版外,它还提供收费的报表版、亚马逊网络服务(AWS)版、专业版和企业版。

    支持的操作系统:与操作系统无关。

    相关链接:http://jaspersoft

    40. Pentaho

    Pentaho归日立数据系统公司所有,它提供了一系列数据整合和业务分析工具。官方网站上提供了三个社区版;访问Pentaho,即可了解收费支持版方面的信息。

    支持的操作系统:Windows、Linux和OS X。

    相关链接:http://community.pentaho

    41. SpagoBI

    Spago被市场分析师们称为“开源领袖”,它提供商业智能、中间件和质量保证软件,另外还提供Java EE应用程序开发框架。该软件百分之分免费、开源,不过也提供收费的支持、咨询、培训及其他服务。

    支持的操作系统:与操作系统无关。

    相关链接:http://spagoworld.org/xwiki/bin/view/SpagoWorld/

    42. KNIME

    KNIME的全称是“康斯坦茨信息挖掘工具”(Konstanz Information Miner),这是一种开源分析和报表平台。提供了几个商业和开源扩展件,以增强其功能。

    支持的操作系统:Windows、Linux和OS X。

    相关链接:http://knime.org

    43. BIRT

    BIRT的全称是“...

  • ?

    大数据平台快速解决方案

    渊博的

    展开

    内容来源:2017年5月13日,周末去哪儿架构师李锡铭在“Java开发者大会 | Java之美【上海站】”进行《大数据平台快速解决方案中》演讲分享。

    阅读字数:1891 | 4分钟阅读

    摘要

    大数据(big data),指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。周末去哪儿架构师李锡铭根据自己的成功经验,为我们分享大数据平台快速解决方案。

    大咖演讲视频

    http://t/R9an7Rr

    搭建始末

    当时我们确定要做大数据的时候,有两种选型。第一种选型是用用原生的、开源的大数据技术,需要自己搭建;第二种是ODPS。

    后来我们选择了利用原生大数据,自己搭建一个大数据平台。因为我们已经有了一定的小积累,并且也想做一个大数据方面的技术沉淀。

    在移动互联网时代,用户所有的行为、浏览、记录和收藏等所有的数据,我们都会把它拿下来分析,前段时间阶段性沉淀的东西有多少,是对之前的一个总结。这个数据还能帮助我们进行深度挖掘,之后如何对不同用户分类,做一个精准化的营销定位。

    每个公司都会对这些数据进行报表级的展现。我们最开始的数据实现方式是把所有用户的行为数据放到传统的关系型数据库中,利用纯Java应用程序去读这张表。当计算某个指标的时候,还会关联若干张子表。这张主表大概有几千万,其它子表也是百万级甚至千万级的。如果单纯用Java去算的话,还要额外处理多线程。

    所以我们用传统的Java纯程序+关系型数据库去处理报表的时候,在存储和计算的性能上会出现问题,以至于报表需求越来越慢。

    在这样的大背景下,我们改成了使用大数据去处理这种场景。

    技术概览

    Hadoop是现在所有大数据计算存储的一个底层概念,后面所有衍生的大数据产品都是在Hadoop的基础上进行衍生的。

    这张图是目前大数据平台的架构。

    原生的Hadoop应该包含了Hdfs(文件存储)、Yarn(资源调度)和Mapreduce(算法)。

    Spark是类似于Mapreduce的一个计算框架,它在很多场景中的性能会比原生的Mapreduce好很多,尤其是迭代计算的时候,会有好几个数量级的提升。

    Sqoop是一个数据的迁移工具。

    Hive是对底层Hdfs系统的文件抽象出一个类似Mysql的关系型数据库,但大前提是它是在Hadoop这个大的语义下的关系型数据库。

    Oozie是一个任务编排和调度的框架。

    Hue是大数据的管理后台。

    Zookeeper是分布式协调工具。

    1.组件分类

    基础数据:Mysql,File。基础数据层是游离于大数据之外的概念,它是传统的数据来源。

    大数据存储:Hdfs、Hive。大数据存储是最基础的文件存储,在这基础上抽象出一个大数据的关系型数据库。

    大数据计算:Mapreduce、Spark、Sqoop。Mapreduce是原生的,Spark是新生的,Sqoop是数据转移的工具。

    大数据协调与调度:Yarn、Zookeeper、Oozie。Yarn是原生的,Zookeeper是一个分布式保证文件原子性的工具,Oozie是调度工具。

    大数据展现:Hue。Curd的展现层。

    2.典型执行流程

    最开始说过,我们遇到的问题是,Mysql的表存不下,计算也有问题。在这个场景下要把数据,从Mysql转到大数据,并利用大数据进行计算,最后做一个展现。

    它的流程是,首先通过Sqoop把Mysql的数据一次性或是增量的同步到一张Hive表里,用Hive Sql写好查询后,本质上Hive Sql会转化成Mapreduce任务再去执行,最后数据就展现出来了。

    很多时候后台的服务Control层会有入口和出口,我们需要把入口和出口的参数都记下来,方便以后排错或做统计方面的应用。

    在应用程序里,把这些消息定时写到消息队列中,用Spark定时读消息队列,并把这些读取到的消息按Spark的方式做一个编程。这个任务最终会被丢到Hadoop的底层计算里,然后用Yarn去调度,计算出结果,把这个结果写入Hive,这就完成了一次流式计算。

    3.Hue

    这里写了一个Hive Sql,与传统Mysql的写法几乎一样。Hive Sql写好以后点执行。它的过程是把Sql首先交给Hive去跑,Hive用自己的Sql解析引擎把这个任务翻译成Mapreduce,Mapreduce再用Yarn跑在Hadoop上,最终把结果跑出来。

    4.存储:Hadoop hdfs

    HadoopHdfs是基础的存储层。

    HadoopHdfs其实只包含了两种类型,一个是Namenode,一个是Datanode。Namenode是一个管理的节点,而datanode只负责数据的存储和冗余。

    5.计算:Mapreduce&spark

    Hadoop原生的计算框架是Mapreduce,而spark是一个新兴的计算框架,它更快更全面。

    6.资源管理器:yarn、Apache、hadoop yarn

    资源管理器的架构内包含rescource manager和node manager。Rescource manager是管理节点,node manager是work节点。

    把任务丢给rescource manager,它去把任务分发给每个节点,做一些状态的变换,最后把结果通过rescource manager汇总以后,处理完毕交给客户端。

    7.hive

    hive的架构并不是很复杂,上层是一些用户的API、web页面和命令行。它的核心是执行引擎,把sql翻译成大数据平台可以接受的任务。底层基于存储,它可以存在hdfs上。

    8.sqoop

    主要用于在hadoop与传统的数据库间进行数据的传递。

    9.ooize

    大数据任务编排调度。

    学习与使用路线

    如果想要学习一些大数据相关的东西,我推荐可以先掌握一些基础,然后找一个场景套进技术里,进行快速实践。在快速实践的过程中会发现很多问题需要解决,很多知识需要补充,所以要在实践中前行,在错误中补充。

    我的分享到此结束,谢谢大家!

  • ?

    怎样搭建一个大数据分析平台?内附资料福利

    libary

    展开

    一般的大数据平台从平台搭建到数据分析大概包括以下几个步骤:

    1、Linux系统安装

    一般使用开源版的Redhat系统--CentOS作为底层平台。为了提供稳定的硬件基础,在给硬盘做RAID和挂载数据存储节点的时,需要按情况配置。比如,可以选择给HDFS的namenode做RAID2以提高其稳定性,将数据存储与操作系统分别放置在不同硬盘上,以确保操作系统的正常运行。

    2、分布式计算平台/组件安装

    当前分布式系统的大多使用的是Hadoop系列开源系统。Hadoop的核心是HDFS,一个分布式的文件系统。在其基础上常用的组件有Yarn、Zookeeper、Hive、Hbase、Sqoop、Impala、ElasticSearch、Spark等。

    使用开源组件的优点:1)使用者众多,很多bug可以在网上找的答案(这往往是开发中最耗时的地方);2)开源组件一般免费,学习和维护相对方便;3)开源组件一般会持续更新;4)因为代码开源,如果出现bug可自由对源码作修改维护。

    常用的分布式数据数据仓库有Hive、Hbase。Hive可以用SQL查询,Hbase可以快速读取行。外部数据库导入导出需要用到Sqoop。Sqoop将数据从Oracle、MySQL等传统数据库导入Hive或Hbase。Zookeeper是提供数据同步服务, Impala是对hive的一个补充,可以实现高效的SQL查询

    3、数据导入

    前面提到,数据导入的工具是Sqoop。它可以将数据从文件或者传统数据库导入到分布式平台。

    4、数据分析

    数据分析一般包括两个阶段:数据预处理和数据建模分析。

    数据预处理是为后面的建模分析做准备,主要工作时从海量数据中提取可用特征,建立大宽表。这个过程可能会用到Hive SQL,Spark QL和Impala。

    数据建模分析是针对预处理提取的特征/数据建模,得到想要的结果。如前面所提到的,这一块最好用的是Spark。常用的机器学习算法,如朴素贝叶斯、逻辑回归、决策树、神经网络、TFIDF、协同过滤等,都已经在ML lib里面,调用比较方便。

    5、结果可视化及输出API

    可视化一般式对结果或部分原始数据做展示。一般有两种情况,行数据展示,和列查找展示。

    以上就简单介绍这么多,如果有小伙伴想了解和学习更多的大数据技术,可以私信小编索要资料

  • ?

    六大主流大数据采集平台架构分析

    匿名

    展开

    随着大数据越来越被重视,数据采集的挑战变的尤为突出。今天为大家介绍几款数据采集平台:

    Apache Flume Fluentd Logstash Chukwa Scribe Splunk Forwarder

    大数据平台与数据采集

    任何完整的大数据平台,一般包括以下的几个过程:

    数据采集–>数据存储–>数据处理–>数据展现(可视化,报表和监控)

    其中,数据采集是所有数据系统必不可少的,随着大数据越来越被重视,数据采集的挑战也变的尤为突出。这其中包括:

    我们今天就来看看当前可用的六款数据采集的产品,重点关注它们是如何做到高可靠,高性能和高扩展。

    1、Apache Flume

    Flume 是Apache旗下的一款开源、高可靠、高扩展、容易管理、支持客户扩展的数据采集系统。 Flume使用JRuby来构建,所以依赖Java运行环境。

    Flume最初是由Cloudera的工程师设计用于合并日志数据的系统,后来逐渐发展用于处理流数据事件。

    Flume设计成一个分布式的管道架构,可以看作在数据源和目的地之间有一个Agent的网络,支持数据路由。

    每一个agent都由Source,Channel和Sink组成。

    Source

    Source负责接收输入数据,并将数据写入管道。Flume的Source支持HTTP,JMS,RPC,NetCat,Exec,Spooling Directory。其中Spooling支持监视一个目录或者文件,解析其中新生成的事件。

    Channel

    Channel 存储,缓存从source到Sink的中间数据。可使用不同的配置来做Channel,例如内存,文件,JDBC等。使用内存性能高但不持久,有可能丢数据。使用文件更可靠,但性能不如内存。

    Sink

    Sink负责从管道中读出数据并发给下一个Agent或者最终的目的地。Sink支持的不同目的地种类包括:HDFS,HBASE,Solr,ElasticSearch,File,Logger或者其它的Flume Agent。

    Flume在source和sink端都使用了transaction机制保证在数据传输中没有数据丢失。

    Source上的数据可以复制到不同的通道上。每一个Channel也可以连接不同数量的Sink。这样连接不同配置的Agent就可以组成一个复杂的数据收集网络。通过对agent的配置,可以组成一个路由复杂的数据传输网络。

    配置如上图所示的agent结构,Flume支持设置sink的Failover和Load Balance,这样就可以保证即使有一个agent失效的情况下,整个系统仍能正常收集数据。

    Flume中传输的内容定义为事件(Event),事件由Headers(包含元数据,Meta Data)和Payload组成。

    Flume提供SDK,可以支持用户定制开发:

    Flume客户端负责在事件产生的源头把事件发送给Flume的Agent。客户端通常和产生数据源的应用在同一个进程空间。常见的Flume 客户端有Avro,log4J,syslog和HTTP Post。另外ExecSource支持指定一个本地进程的输出作为Flume的输入。当然很有可能,以上的这些客户端都不能满足需求,用户可以定制的客户端,和已有的FLume的Source进行通信,或者定制实现一种新的Source类型。

    同时,用户可以使用Flume的SDK定制Source和Sink。似乎不支持定制的Channel。

    2、Fluentd

    Fluentd是另一个开源的数据收集框架。Fluentd使用C/Ruby开发,使用JSON文件来统一日志数据。它的可插拔架构,支持各种不同种类和格式的数据源和数据输出。最后它也同时提供了高可靠和很好的扩展性。Treasure Data, Inc 对该产品提供支持和维护。

    Fluentd的部署和Flume非常相似:

    Fluentd的架构设计和Flume如出一辙:

    Fluentd的Input/Buffer/Output非常类似于Flume的Source/Channel/Sink。

    Input

    Input负责接收数据或者主动抓取数据。支持syslog,http,file tail等。

    Buffer

    Buffer负责数据获取的性能和可靠性,也有文件或内存等不同类型的Buffer可以配置。

    Output

    Output负责输出数据到目的地例如文件,AWS S3或者其它的Fluentd。

    Fluentd的配置非常方便,如下图:

    Fluentd的技术栈如下图:

    FLuentd和其插件都是由Ruby开发,MessgaePack提供了JSON的序列化和异步的并行通信RPC机制。

    Cool.io是基于libev的事件驱动框架。

    FLuentd的扩展性非常好,客户可以自己定制(Ruby)Input/Buffer/Output。

    Fluentd从各方面看都很像Flume,区别是使用Ruby开发,Footprint会小一些,但是也带来了跨平台的问题,并不能支持Windows平台。另外采用JSON统一数据/日志格式是它的另一个特点。相对去Flumed,配置也相对简单一些。

    3、Logstash

    Logstash是著名的开源数据栈ELK (ElasticSearch, Logstash, Kibana)中的那个L。

    Logstash用JRuby开发,所有运行时依赖JVM。

    Logstash的部署架构如下图,当然这只是一种部署的选项。

    一个典型的Logstash的配置如下,包括了Input,filter的Output的设置。

    几乎在大部分的情况下ELK作为一个栈是被同时使用的。所有当你的数据系统使用ElasticSearch的情况下,logstash是首选。

    4、Chukwa

    官网:https://chukwa.apache.org/

    Apache Chukwa是apache旗下另一个开源的数据收集平台,它远没有其他几个有名。Chukwa基于Hadoop的HDFS和Map Reduce来构建(显而易见,他用Java来实现),提供扩展性和可靠性。Chukwa同时提供对数据的展示,分析和监视。很奇怪的是它的上一次 github的更新事7年前。可见该项目应该已经不活跃了。

    Chukwa的部署架构如下:

    Chukwa的主要单元有:Agent,Collector,DataSink,ArchiveBuilder,Demux等等,看上去相当复杂。由于该项目已经不活跃,我们就不细看了。

    5、Scribe

    代码托管:https://github/facebookarchive/scribe

    Scribe是Facebook开发的数据(日志)收集系统。已经多年不维护,同样的,就不多说了。

    6、Splunk Forwarder

    以上的所有系统都是开源的。在商业化的大数据平台产品中,Splunk提供完整的数据采金,数据存储,数据分析和处理,以及数据展现的能力。

    Splunk是一个分布式的机器数据平台,主要有三个角色:

    Search Head负责数据的搜索和处理,提供搜索时的信息抽取。

    Indexer负责数据的存储和索引 Forwarder,负责数据的收集,清洗,变形,并发送给Indexer

    Splunk内置了对Syslog,TCP/UDP,Spooling的支持,同时,用户可以通过开发 Input和Modular Input的方式来获取特定的数据。在Splunk提供的软件仓库里有很多成熟的数据采集应用,例如AWS,数据库(DBConnect)等等,可以方便的从云或者是数据库中获取数据进入Splunk的数据平台做分析。

    这里要注意的是,Search Head和Indexer都支持Cluster的配置,也就是高可用,高扩展的,但是Splunk现在还没有针对Farwarder的Cluster的功能。也就是说如果有一台Farwarder的机器出了故障,数据收集也会随之中断,并不能把正在运行的数据采集任务Failover到其它的 Farwarder上。

    总结

    我们简单讨论了几种流行的数据收集平台,它们大都提供高可靠和高扩展的数据收集。大多平台都抽象出了输入,输出和中间的缓冲的架构。利用分布式的网络连接,大多数平台都能实现一定程度的扩展性和高可靠性。

    其中Flume,Fluentd是两个被使用较多的产品。如果你用ElasticSearch,Logstash也许是首选,因为ELK栈提供了很好的集成。Chukwa和Scribe由于项目的不活跃,不推荐使用。

    Splunk作为一个优秀的商业产品,它的数据采集还存在一定的限制,相信Splunk很快会开发出更好的数据收集的解决方案。

  • ?

    10款丨超好用的开源大数据分析工具

    青烟

    展开

     考虑到现有技术解决方案的复杂性与多样化,企业往往很难找到适合自己的大数据收集与分析工具。然而,混乱的时局之下已经有多种方案脱颖而出,证明其能够帮助大家切实完成大数据分析类工作。下面我们将整理出一份包含十款工具的清单,从而有效压缩选择范畴。

      数据已经成为现代化企业中最为重要的宝贵资源。一切决策、策略或者方法都需要依托于对数据的分析方可实现。随着“大数据分析”逐步替代其上代版本,即“商务智能”,企业正面临着一个更加复杂、且商业情报规模更为庞大的新时代。

      考虑到现有技术解决方案的复杂性与多样化,企业往往很难找到适合自己的大数据收集与分析工具。然而,混乱的时局之下已经有多种方案脱颖而出,证明其能够帮助大家切实完成大数据分析类工作。下面我们将整理出一份包含十款工具的清单,从而有效压缩选择范畴。

      1. OpenRefine

      这是一款高人气数据分析工具,适用于各类与分析相关的任务。这意味着即使大家拥有多川不同数据类型及名称,这款工具亦能够利用其强大的聚类算法完成条目分组。在聚类完成后,分析即可开始。

      2.hadoop

      大数据与Hadoop可谓密不可分。这套软件库兼框架能够利用简单的编程模型将大规模数据集分发于计算机集群当中。其尤为擅长处理大规模数据并使其可用于本地设备当中。作为Hadoop的开发方,Apache亦在不断强化这款工具以提升其实际效果。

      3. Storm

      同样来自Apache的Storm是另一款伟大的实时计算系统,能够极大强化无限数据流的处理效果。其亦可用于执行多种其它与大数据相关的任务,具体包括分布式RPC、持续处理、在线机器学习以及实时分析等等。使用Storm的另一大优势在于,其整合了大量其它技术,从而进一步降低大数据处理的复杂性。

      4. Plotly

      这是一款数据可视化工具,可兼容JavaScript、MATLAB、Python以及R等语言。Plotly甚至能够帮助不具备代码编写技能或者时间的用户完成动态可视化处理。这款工具常由新一代数据科学家使用,因为其属于一款业务开发平台且能够快速完成大规模数据的理解与分析。

      5. Rapidminer

      作为另一款大数据处理必要工具,Rapidminer属于一套开源数据科学平台,且通过可视化编程机制发挥作用。其功能包括对模型进行修改、分析与创建,且能够快速将结果整合至业务流程当中。Rapidminer目前备受瞩目,且已经成为众多知名数据科学家心目中的可靠工具。

      6. Cassandra

      Apache Cassandra 是另一款值得关注的工具,因为其能够有效且高效地对大规模数据加以管理。它属于一套可扩展NoSQL数据库,能够监控多座数据中心内的数据并已经在Netflix及eBay等知名企业当中效力。

      7. Hadoop MapReduce

      这是一套软件框架,允许用户利用其编写出以可靠方式并发处理大规模数据的应用。MapReduce应用主要负责完成两项任务,即映射与规约,并由此提供多种数据处理结果。这款工具最初由谷歌公司开发完成。

      8. Bokeh

      这套可视化框架的主要目标在于提供精致且简洁的图形处理结果,用以强化大规模数据流的交互能力。其专门供Python语言使用。

      9. Wolfram Alpha

      这是一套搜索引擎,旨在帮助用户搜索其需要的计算素材或者其它内容。举例来说,如果大家输入“Facebook”,即可获得与Facebook相关的HTML元素结构、输入解释、Web托管信息、网络统计、子域、Alexa预估以及网页信息等大量内容。

      10. Neo4j

      其官方网站将这款工具称为图形数据库技术的下一场革命。这种说法在一定程度上并不夸张,因为此套数据库使用数据间的关系以操作并强化性能表现。Neo4j目前已经由众多企业用于利用数据关系实现智能应用,从而帮助自身保持市场竞争优势。

    End.

    如果对软件测试感兴趣,想了解更多的软件测试知识,请大家关注“51Testing软件测试网”百家号。

  • ?

    最受欢迎的十个开源大数据技术

    霍道天

    展开

    大数据已然成为当今最热门的技术之一,正呈爆炸式增长。每天来自全球的新项目如雨后春笋般涌现。幸运地是,开源让越来越多的项目可以直接采用大数据技术,下面就来盘点最受欢迎的十大开源的大数据技术。

    大数据已然成为当今最热门的技术之一,正呈爆炸式增长。每天来自全球的新项目如雨后春笋般涌现。幸运地是,开源让越来越多的项目可以直接采用大数据技术,下面就来盘点最受欢迎的十大开源的大数据技术。

    1.Hadoop——高效、可靠、可伸缩,能够为你的数据存储项目提供所需的YARN、HDFS和基础架构,并且运行主要的大数据服务和应用程序。

    2.Spark——使用简单、支持所有重要的大数据语言(Scala、Python、Java、R)。拥有强大的生态系统,成长迅速,对microbatching/batching/SQL支持简单。Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。

    3.NiFi——Apache NiFi是由美国国家安全局(NSA)贡献给Apache基金会的开源项目,其设计目标是自动化系统间的数据流。基于其工作流式的编程理念,NiFi非常易于使用、强大、可靠、高可配置。两个最重要的特性是其强大的用户界面和良好的数据回溯工具。堪称大数据工具箱里的瑞士军刀。

    4.Apache Hive 2.1——Hive是建立在 Hadoop 上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。随着最新版本的发布,性能和功能都得到了全面提升,Hive已成为SQL在大数据上的最佳解决方案。

    5.Kafka——Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模网站中的所有动作流数据。它已成为大数据系统在异步和分布式消息之间的最佳选择。从Spark到NiFi再到第三方插件工具以至于Java到Scala,它都提供了强大的粘合作用。

    6.Phoenix—是HBase的SQL驱动。目前大量的公司采用它,并扩大其规模。HDFS支持的NoSQL能够很好地集成所有工具。Phoenix查询引擎会将SQL查询转换为一个或多个HBase scan,并编排执行以生成标准的JDBC结果集。

    7.Zeppelin——Zeppelin 是一个提供交互数据分析且基于Web的笔记本。方便你做出可数据驱动的、可交互且可协作的精美文档,并且支持多种语言,包括 Scala(使用 Apache Spark)、Python(Apache Spark)、SparkSQL、 Hive、 Markdown、Shell等。

    8.Sparkling Water——H2O填补了Spark’s Machine Learning的缺口,它可以满足你所有的机器学习。

    9.Apache Beam——在Java中提供统一的数据进程管道开发,并且能够很好地支持Spark和Flink。提供很多在线框架,开发者无需学习太多框架。

    10.Stanford CoreNLP——自然语言处理拥有巨大的增长空间,斯坦福正在努力增进他们的框架。

    原文地址:http://linuxprobe/ten-linux-data.html

大数据平台开源

所有视频需要登录后,才能观看

请先登录您的帐号,即可完整播放,如果您尚未注册帐号,请先点击注册。

img

在线咨询

建站在线咨询

img

微信咨询

扫一扫添加
动力姐姐微信

img
img

TOP