zoukankan      html  css  js  c++  java
  • 大数据 常用框架特点

    一、大数据框架

    Impala:hadoop的sql平台、支持hbase/hdfs、支持超大数据、支持多并发、sql支持好、对内存依赖比较严重。需要自己优化,并且有的语句超过内存会报错。

    Spark:各种格式、各种计算(机器学习、图形计算)、可sql、可代码处理、支持scala/java/python语言开发。提供scala/python代码命令行运行、超大数据支持差。

    Kylin:预计算、好优化、高性能、支持mr、spark、基于时间的增量更新、流式更新、数据源有hive/kafka、提供开发用的管理台是一套开发系统。由于有预计算、所以其他各个模块独立,能支持高并发。可以直接作为软件系统的数据源。

    Phoenix:sql on hbase、快

    Hbase:key/value、强一致性、不丢数据

    Cassandra:弱一致性,数据可能丢失。可用性高、读写性能比hbase高、被facebook放弃了。

    案例1:特别适合大数据sql查询

    数据存入hbase,把hbase表结构隐射到hive,用Impala进行sql查询。

    优点有三个:

         A、Impala支持hdfs/hbase两个适用度比Phoenix更广,并且更稳定。

         B、数据在hbase中,对数据的操作得以进行,hdfs中的数据是没法行级更新,删除的。并且速度也比hdfs快。无需字段分割解析,直接读取。

         C、能在hive中为表结构,给开发和后面换用其他框架留下很大方便。

    案例2:Zeppelin特别适合spark机器学习

    Spark交互式开发平台

    Zeppelin整合了Spark,Markdown,Shell,Angular等引擎,集成了数据分析和可视化等功能

    提供了sql查询,和scala/python分析代码调试功能。

    http://blog.csdn.net/guohecang/article/details/51324390。

    案例3:Kylin:全功能大数据sql查询平台

    预计算、好优化、高性能、支持mr、sparksql、基于时间的增量更新、流式更新、有开发管理台、数据源有hive/kafka。

    由于有预计算、所以其他各个模块独立,能支持高并发。可以直接作为软件系统的数据源。

    案例4

    Presto 玩的更绝,全程在内存中倒腾,需要对各个步骤下对象数据规模做到完全精细的把控。优势是速度快,支持的数据源多。

    总结::

    • MPP架构的系统(Presto/Impala/SparkSQL/Drill等)有很好的数据量和灵活性支持,但是对响应时间是没有保证的。当数据量和计算复杂度增加后,响应时间会变慢,从秒级到分钟级,甚至小时级都有可能。
    • 搜索引擎架构的系统(Elasticsearch等)相对比MPP系统,在入库时将数据转换为倒排索引,采用Scatter-Gather计算模型,牺牲了灵活性换取很好的性能,在搜索类查询上能做到亚秒级响应。但是对于扫描聚合为主的查询,随着处理数据量的增加,响应时间也会退化到分钟级。
    • 预计算系统(Druid/Kylin等)则在入库时对数据进行预聚合,进一步牺牲灵活性换取性能,以实现对超大数据集的秒级响应。

     

    1. kylin 预计算。用户指定dimensions和要计算的metric,kylin通过MR将结果保存在HBase中,后续读取直接读HBase。适合那种业务清楚的知道自己要分析什么的场景。查询模式比较固定,只不过所查看的时间不同的场景。注意的点是要避免维度灾难。

     

    2. presto java8写的,代码质量非常高。设计:纯内存,没有容错,一个task失败就整个query fail。需要注意调整内存相关,线程数等参数,容易OOM。benchmark还行。支持标准SQL

     

    3.Spark sql 相对更‘原生‘一些,单纯的通用框架,和上面两位并不是同一层面上的东西。

     


     

    二、深度学习框架:

     

    TensorFlow:google开源的,当前版本已经有高级API、可视化工具、GPU支持、异步执行

    DeepLearning4J:(DL4J)是一套基于Java语言的神经网络工具包,可以构建、定型和部署神经网络。DL4J与Hadoop和Spark集成,支持分布式CPU和GPU。

    Keras:

     Keras是一个高层神经网络API,Keras由纯Python编写而成并基Tensorflow或Theano。Keras 为支持快速实验而生,能够把你的idea迅速转换为结果,如果你有如下需求,请选择Keras:

    简易和快速的原型设计(keras具有高度模块化,极简,和可扩充特性)

    支持CNN和RNN,或二者的结合

    无缝CPU和GPU切换

    Keras和DDPG

     

     

     

  • 相关阅读:
    HDU 2955 Robberies(01背包)
    HDU 2602 Bone Collector(01背包)
    HUST 1352 Repetitions of Substrings(字符串)
    HUST 1358 Uiwurerirexb jeqvad(模拟解密)
    HUST 1404 Hamming Distance(字符串)
    HDU 4520 小Q系列故事――最佳裁判(STL)
    HDU 2058 The sum problem(枚举)
    【破解】修改程序版权、添加弹窗
    HDU 1407 测试你是否和LTC水平一样高(枚举)
    HDU 1050 Moving Tables(贪心)
  • 原文地址:https://www.cnblogs.com/double-kill/p/8143725.html
Copyright © 2011-2022 走看看