一、大数据通用处理平台
1.Spark:内存版本的大数据平台,RDD微批处理,是准实时的处理架构。具有生态优势。
2.Flink:实时处理架构,支持批处理和流处理。和Strom的区别,Strom只支撑流处理。
3.Hadoop:硬盘版本的大数据平台,适合做批处理。
4.Tez:DAG计算框架,有向无环图。
二、分布式存储
HDFS:Hadoop的底层存储平台
三、资源调度
1.Yarn:yarn是MapReduce进化的产物,yarn从诞生之日起就是为hadoopjobs管理资源的(yarn也开始朝着mesos涉及的领域进军),yarn只为hadoop jobs提供了一个static partitioning。
2.Mesos:mesos的设计目标是为各个框架(hadoop、spark、web services等)提供dynamical partitioning,让各个集群框架共用数据中心机器。
四、机器学习工具
Mahout:Mahout 是 Apache Software Foundation(ASF) 旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。Mahout包含许多实现,包括聚类、分类、推荐过滤、频繁子项挖掘。此外,通过使用 Apache Hadoop 库,Mahout 可以有效地扩展到云中。
Spark Mlib:Spark的机器学习库。
TensorFlow (Google 系):谷歌开源的神经网络框架。TensorFlow是将复杂的数据结构传输至人工智能神经网中进行分析和处理过程的系统。
Amazon Machine Learning:Amazon Machine Learning 是一项用于构建机器学习模型并生成预测结果的托管服务,可以帮助开发稳定且可扩展的智能应用程序。借助 Amazon Machine Learning,您可以使用强大的机器学习技术而无需在机器学习算法和技术领域拥有深厚的背景。
DMTK (微软分布式机器学习工具):DMTK由一个服务于分布式机器学习的框架和一组分布式机器学习算法构成,是一个将机器学习算法应用在大数据上的强大工具包;无论是学术界的研究人员还是工业界的开发者,DMTK可以帮助他们在超大规模数据上灵活稳定地训练大规模机器学习模型。
五、数据分析/数据仓库(SQL类)
Pig:Pig是基于hadoop的一个数据处理的框架。Pig有一套自己的数据处理语言,Pig的数据处理过程要转化为MR来运行。Pig的数据处理语言是数据流方式的,类似于初中做的数学题。
Hive:hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。
kylin:Apache Kylin™是一个开源的分布式分析引擎,提供Hadoop/Spark之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由eBay Inc. 开发并贡献至开源社区。它能在亚秒内查询巨大的Hive表。
Spark SQL:SparkSQL在架构上和Hive类似,只是底层把MapReduce替换为Spark
Spark DataFrame:Spark SQL中的DataFrame类似于一张关系型数据表。在关系型数据库中对单表或进行的查询操作,在DataFrame中都可以通过调用其API接口来实现。可以参考,Scala提供的DataFrame API
Impala:Impala是基于Hive的大数据实时分析查询引擎,直接使用Hive的元数据库Metadata,意味着impala元数据都存储在Hive的metastore中。并且impala兼容Hive的sql解析,实现了Hive的SQL语义的子集,功能还在不断的完善中。
Phoenix:Phoenix是HBase查询引擎,查询引擎会将SQL查询转换为一个或多个HBase scan,并编排执行以生成标准的JDBC结果集。直接使用HBase API、协同处理器与自定义过滤器,对于简单查询来说,其性能量级是毫秒,对于百万级别的行数来说,其性能量级是秒。更多
ELK
8.1 ElasticSearch:Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
8.2 Logstash:Logstash 主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。
8.3 Kibana:Kibana 也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。
六、消息队列
Kafka(纯日志类,大吞吐量):kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。
RocketMQ:里巴巴的MQ中间件,在其多个产品下使用,并能够撑住双十一的大流量,他并没有实现JMS规范,使用起来很简单。部署由一个 命名服务(nameserver)和一个代理(broker)组成,nameserver和broker以及producer都支持集群,队列的容量受机器硬盘的限制,队列满后可以支持持久化到硬盘(也可以自己适配代码,将其持久化到NOSQL数据库中),队列满后会影响吞吐量,可以采用主备来保证稳定性,支持回溯消费,可以在broker端进行消息过滤.
ZeroMQ:扩展性好,开发比较灵活,采用C语言实现,实际上他只是一个socket库的重新封装,如果我们做为消息队列使用,需要开发大量的代码。
ActiveMQ:ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。历史悠久的开源项目,已经在很多产品中得到应用,实现了JMS1.1规范,可以和spring-jms轻松融合,实现了多种协议,不够轻巧(源代码比RocketMQ多).,支持持久化到数据库,对队列数较多的情况支持不好,不过我们的项目中并不会建很多的队列.
RabbitMQ:结合erlang语言本身的并发优势,性能较好,但是不利于做二次开发和维护。
七、流式计算
Storm/JStorm:实时
Spark Streaming:准实时
Flink:实时
八、日志收集
Scribe:Scribe是facebook开源的日志收集系统,在facebook内部已经得到大量的应用。
Flume:日志采集
九、编程语言
Java
Python
R
Ruby
Scala
十、数据分析挖掘
MATLAB:MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境
SPSS
SAS
十一、数据可视化
R
D3.js
ECharts
Excle
Python
十二、机器学习
机器学习基础
聚类
时间序列
推荐系统
回归分析
文本挖掘
决策树
支持向量机
贝叶斯分类
神经网络
机器学习工具
Mahout:Mahout 是 Apache Software Foundation(ASF) 旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。Mahout包含许多实现,包括聚类、分类、推荐过滤、频繁子项挖掘。此外,通过使用 Apache Hadoop 库,Mahout 可以有效地扩展到云中。
Spark Mlib:Spark的机器学习库。
TensorFlow (Google 系):谷歌开源的神经网络框架。TensorFlow是将复杂的数据结构传输至人工智能神经网中进行分析和处理过程的系统。
Amazon Machine Learning:Amazon Machine Learning 是一项用于构建机器学习模型并生成预测结果的托管服务,可以帮助开发稳定且可扩展的智能应用程序。借助 Amazon Machine Learning,您可以使用强大的机器学习技术而无需在机器学习算法和技术领域拥有深厚的背景。
DMTK (微软分布式机器学习工具):DMTK由一个服务于分布式机器学习的框架和一组分布式机器学习算法构成,是一个将机器学习算法应用在大数据上的强大工具包;无论是学术界的研究人员还是工业界的开发者,DMTK可以帮助他们在超大规模数据上灵活稳定地训练大规模机器学习模型。
十三、算法
一致性
paxos
raft
gossip
数据结构
栈,队列,链表
散列表
二叉树,红黑树,B树
图
常用算法
1.排序
插入排序
桶排序
堆排序
2.快速排序
3,最大子数组
4.最长公共子序列
5.最小生成树
最短路径
6.矩阵的存储和运算
十四、云计算
云服务
SaaS
PaaS
IaaS
Openstack
Docker
1.Spark:内存版本的大数据平台,RDD微批处理,是准实时的处理架构。具有生态优势。
2.Flink:实时处理架构,支持批处理和流处理。和Strom的区别,Strom只支撑流处理。
3.Hadoop:硬盘版本的大数据平台,适合做批处理。
4.Tez:DAG计算框架,有向无环图。
二、分布式存储
HDFS:Hadoop的底层存储平台
三、资源调度
1.Yarn:yarn是MapReduce进化的产物,yarn从诞生之日起就是为hadoopjobs管理资源的(yarn也开始朝着mesos涉及的领域进军),yarn只为hadoop jobs提供了一个static partitioning。
2.Mesos:mesos的设计目标是为各个框架(hadoop、spark、web services等)提供dynamical partitioning,让各个集群框架共用数据中心机器。
四、机器学习工具
Mahout:Mahout 是 Apache Software Foundation(ASF) 旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。Mahout包含许多实现,包括聚类、分类、推荐过滤、频繁子项挖掘。此外,通过使用 Apache Hadoop 库,Mahout 可以有效地扩展到云中。
Spark Mlib:Spark的机器学习库。
TensorFlow (Google 系):谷歌开源的神经网络框架。TensorFlow是将复杂的数据结构传输至人工智能神经网中进行分析和处理过程的系统。
Amazon Machine Learning:Amazon Machine Learning 是一项用于构建机器学习模型并生成预测结果的托管服务,可以帮助开发稳定且可扩展的智能应用程序。借助 Amazon Machine Learning,您可以使用强大的机器学习技术而无需在机器学习算法和技术领域拥有深厚的背景。
DMTK (微软分布式机器学习工具):DMTK由一个服务于分布式机器学习的框架和一组分布式机器学习算法构成,是一个将机器学习算法应用在大数据上的强大工具包;无论是学术界的研究人员还是工业界的开发者,DMTK可以帮助他们在超大规模数据上灵活稳定地训练大规模机器学习模型。
五、数据分析/数据仓库(SQL类)
Pig:Pig是基于hadoop的一个数据处理的框架。Pig有一套自己的数据处理语言,Pig的数据处理过程要转化为MR来运行。Pig的数据处理语言是数据流方式的,类似于初中做的数学题。
Hive:hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。
kylin:Apache Kylin™是一个开源的分布式分析引擎,提供Hadoop/Spark之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由eBay Inc. 开发并贡献至开源社区。它能在亚秒内查询巨大的Hive表。
Spark SQL:SparkSQL在架构上和Hive类似,只是底层把MapReduce替换为Spark
Spark DataFrame:Spark SQL中的DataFrame类似于一张关系型数据表。在关系型数据库中对单表或进行的查询操作,在DataFrame中都可以通过调用其API接口来实现。可以参考,Scala提供的DataFrame API
Impala:Impala是基于Hive的大数据实时分析查询引擎,直接使用Hive的元数据库Metadata,意味着impala元数据都存储在Hive的metastore中。并且impala兼容Hive的sql解析,实现了Hive的SQL语义的子集,功能还在不断的完善中。
Phoenix:Phoenix是HBase查询引擎,查询引擎会将SQL查询转换为一个或多个HBase scan,并编排执行以生成标准的JDBC结果集。直接使用HBase API、协同处理器与自定义过滤器,对于简单查询来说,其性能量级是毫秒,对于百万级别的行数来说,其性能量级是秒。更多
ELK
8.1 ElasticSearch:Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
8.2 Logstash:Logstash 主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。
8.3 Kibana:Kibana 也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。
六、消息队列
Kafka(纯日志类,大吞吐量):kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。
RocketMQ:里巴巴的MQ中间件,在其多个产品下使用,并能够撑住双十一的大流量,他并没有实现JMS规范,使用起来很简单。部署由一个 命名服务(nameserver)和一个代理(broker)组成,nameserver和broker以及producer都支持集群,队列的容量受机器硬盘的限制,队列满后可以支持持久化到硬盘(也可以自己适配代码,将其持久化到NOSQL数据库中),队列满后会影响吞吐量,可以采用主备来保证稳定性,支持回溯消费,可以在broker端进行消息过滤.
ZeroMQ:扩展性好,开发比较灵活,采用C语言实现,实际上他只是一个socket库的重新封装,如果我们做为消息队列使用,需要开发大量的代码。
ActiveMQ:ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。历史悠久的开源项目,已经在很多产品中得到应用,实现了JMS1.1规范,可以和spring-jms轻松融合,实现了多种协议,不够轻巧(源代码比RocketMQ多).,支持持久化到数据库,对队列数较多的情况支持不好,不过我们的项目中并不会建很多的队列.
RabbitMQ:结合erlang语言本身的并发优势,性能较好,但是不利于做二次开发和维护。
七、流式计算
Storm/JStorm:实时
Spark Streaming:准实时
Flink:实时
八、日志收集
Scribe:Scribe是facebook开源的日志收集系统,在facebook内部已经得到大量的应用。
Flume:日志采集
九、编程语言
Java
Python
R
Ruby
Scala
十、数据分析挖掘
MATLAB:MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境
SPSS
SAS
十一、数据可视化
R
D3.js
ECharts
Excle
Python
十二、机器学习
机器学习基础
聚类
时间序列
推荐系统
回归分析
文本挖掘
决策树
支持向量机
贝叶斯分类
神经网络
机器学习工具
Mahout:Mahout 是 Apache Software Foundation(ASF) 旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。Mahout包含许多实现,包括聚类、分类、推荐过滤、频繁子项挖掘。此外,通过使用 Apache Hadoop 库,Mahout 可以有效地扩展到云中。
Spark Mlib:Spark的机器学习库。
TensorFlow (Google 系):谷歌开源的神经网络框架。TensorFlow是将复杂的数据结构传输至人工智能神经网中进行分析和处理过程的系统。
Amazon Machine Learning:Amazon Machine Learning 是一项用于构建机器学习模型并生成预测结果的托管服务,可以帮助开发稳定且可扩展的智能应用程序。借助 Amazon Machine Learning,您可以使用强大的机器学习技术而无需在机器学习算法和技术领域拥有深厚的背景。
DMTK (微软分布式机器学习工具):DMTK由一个服务于分布式机器学习的框架和一组分布式机器学习算法构成,是一个将机器学习算法应用在大数据上的强大工具包;无论是学术界的研究人员还是工业界的开发者,DMTK可以帮助他们在超大规模数据上灵活稳定地训练大规模机器学习模型。
十三、算法
一致性
paxos
raft
gossip
数据结构
栈,队列,链表
散列表
二叉树,红黑树,B树
图
常用算法
1.排序
插入排序
桶排序
堆排序
2.快速排序
3,最大子数组
4.最长公共子序列
5.最小生成树
最短路径
6.矩阵的存储和运算
十四、云计算
云服务
SaaS
PaaS
IaaS
Openstack
Docker