1、大数据框架:java
Impala:hadoop的sql平台、支持hbase/hdfs、支持超大数据、支持多并发、sql支持好、对内存依赖比较严重。须要本身优化,而且有的语句超过内存会报错。python
Spark:各类格式、各类计算(机器学习、图形计算)、可sql、可代码处理、支持scala/java/python语言开发。提供scala/python代码命令行运行、超大数据支持差。sql
Kylin:预计算、好优化、高性能、支持mr、spark、基于时间的增量更新、流式更新、数据源有hive/kafka、提供开发用的管理台是一套开发系统。因为有预计算、因此其余各个模块独立,能支持高并发。能够直接做为软件系统的数据源。网络
Phoenix:sql on hbase、快架构
Hbase:key/value、强一致性、不丢数据并发
案例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 玩的更绝,全程在内存中倒腾,须要对各个步骤下对象数据规模作到彻底精细的把控。优点是速度快,支持的数据源多。
总结::
1. kylin 预计算。用户指定dimensions和要计算的metric,kylin经过MR将结果保存在HBase中,后续读取直接读HBase。适合那种业务清楚的知道本身要分析什么的场景。查询模式比较固定,只不过所查看的时间不一样的场景。注意的点是要避免维度灾难。
2. presto java8写的,代码质量很是高。设计:纯内存,没有容错,一个task失败就整个query fail。须要注意调整内存相关,线程数等参数,容易OOM。benchmark还行。支持标准SQL
3.Spark sql 相对更‘原生‘一些,单纯的通用框架,和上面两位并非同一层面上的东西。
2、深度学习框架:
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