玩转大数据,就不得不提,什么是?
一、定义
是一个由基金会所开发的分布式系统基础架构。是专为离线和大规模数据分析而生的分布式系统架构。=HDFS(文件系统,数据存储技术相关)+ (数据处理),的数据来源可以是任何形式,在处理半结构化和非结构化数据上与关系型数据库相比有更好的性能,具有更灵活的处理能力,在处理半结构化和非结构化数据上与关系型数据库相比有更好的性能,具有更灵活的处理能力,数据最终转化成key/value(基本数据单元)。
1)HDFS
分布式文件系统(HDFS)被设计成适合运行在通用硬件( )上的分布式文件系统。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。内部机制是将一个文件分割成一个或多个块,这些块被存储在一组数据节点中。名字节点用来操作文件命名空间的文件或目录操作,如打开,关闭,重命名等等。它同时确定块与数据节点的映射。数据节点负责来自文件系统客户的读写请求。数据节点同时还要执行块的创建,删除,和来自名字节点的块复制指令。
2)
是一种编程模型,用于大规模数据集(大于1TB)的并行运算。它允许用市场上普通的商用服务器构成一个包含数十、数百至数千个节点的分布和并行计算集群.
是一个并行计算与运行软件框架( )。它提供了一个庞大但设计精良的并行计算软件框架,能自动完成计算任务的并行化处理,自动划分计算数据和计算任务,在集群节点上自动分配和执行任务以及收集计算结果,将数据分布存储、数据通信、容错处理等并行计算涉及到的很多系统底层的复杂细节交由系统负责处理,大大减少了软件开发人员的负担。
是一个并行程序设计模型与方法( Model & )。它借助于函数式程序设计语言Lisp的设计思想,提供了一种简便的并行程序设计方法,用Map和两个函数编程实现基本的并行计算任务,提供了抽象的操作和并行编程接口,以简单方便地完成大规模数据的编程和计算处理.
二、生态系统
1、Hive
Hive(基于的数据仓库)Hive定义了一种类似SQL的查询语言(HQL),将SQL转化为任务在上执行。通常用于离线分析。
2、HBase
Hbase(分布式列存数据库) HBase是一个针对结构化数据的可伸缩、高可靠、高性能、分布式和面向列的动态模式数据库。和传统关系数据库不同,HBase采用了的数据模型:增强的稀疏排序映射表(Key/Value)协同过滤算法java代码 浅谈政务大数据与新时代的政府治理-第三篇:Hadoop生态系统,其中,键由行关键字、列关键字和时间戳构成。HBase提供了对大规模数据的随机、实时读写访问,同时,HBase中保存的数据可以使用来处理,它将数据存储和并行计算完美地结合在一起。
3、Pig
Pig(基于的数据流系统) 由yahoo!开源,设计动机是提供一种基于的ad-hoc(计算在query时发生)数据分析工具。定义了一种数据流语言—Pig Latin,将脚本转换为任务在上执行。通常用于进行离线分析。
4、
(分布式协作服务) 解决分布式环境下的数据管理问题:统一命名协同过滤算法java代码,状态同步,集群管理,配置同步等。
5、Sqoop
Sqoop(数据同步工具) Sqoop是SQL-to-的缩写,主要用于传统数据库和之前传输数据。数据的导入和导出本质上是程序,充分利用了MR的并行化和容错性。
6、
(数据挖掘算法库) 的主要目标是创建一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。现在已经包含了聚类、分类、推荐引擎(协同过滤)和频繁集挖掘等广泛使用的数据挖掘方法。除了算法,还包含数据的输入/输出工具、与其他存储系统(如数据库、 或)集成等数据挖掘支持架构。
7、Flume
Flume(日志收集工具) 开源的日志收集系统,具有分布式、高可靠、高容错、易于定制和扩展的特点。它将数据从产生、传输、处理并最终写入目标的路径的过程抽象为数据流,在具体的数据流中,数据源支持在Flume中定制数据发送方,从而支持收集各种不同协议数据。同时,Flume数据流提供对日志数据进行简单处理的能力,如过滤、格式转换等。此外,Flume还具有能够将日志写往各种数据目标(可定制)的能力。总的来说,Flume是一个可扩展、适合复杂环境的海量日志收集系统。
8、Oozie
Oozie作业流调度引擎 Oozie是一个基于工作流引擎的服务器,可以在上面运行的Map 和Pig任务。它其实就是一个运行在Java 容器(比如)中的Javas Web应用。
9、Hue
自己的监控管理工具。Hue是一个可快速开发和调试生态系统各种应用的一个基于浏览器的图形化用户接口。
10、Nutch
Nutch联网数据及Nutch搜索引擎应用。Nutch 是一个开源Java实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。包括全文搜索和Web爬虫。
11、Avro
Avro数据序列化工具。Avro是一个数据序列化系统,设计用于支持大批量数据交换的应用。它的主要特点有:支持二进制序列化方式,可以便捷,快速地处理大量数据;动态语言友好,Avro提供的机制使动态语言可以方便地处理Avro数据。
12、
可以把只看成一种代替HBase的语法的一个工具。虽然可以用java可以用jdbc来连接,然后操作HBase,但是在生产环境中,不可以用在OLTP(在线事务处理)中。在线事务处理的环境中,需要低延迟,而在查询HBase时,虽然做了一些优化,但延迟还是不小。所以依然是用在OLAP(联机分析处理)中,再将结果返回存储下来。
13、Storm
Storm 是开源的分布式实时大数据处理框架,最早开源于,从0.9.1版本之后,归于社区,被业界称为实时版。随着越来越多的场景对的高延迟无法容忍,比如网站统计、推荐系统、预警系统、金融系统(高频交易、股票)等等,大数据实时处理解决方案(流计算)的应用日趋广泛,目前已是分布式技术领域最新爆发点,而Storm更是流计算技术中的佼佼者和主流。
14、Flink
Flink是一个针对流数据和批数据的分布式处理引擎。其所要处理的主要场景就是流数据,批数据只是流数据的一个极限特例而已。再换句话说,Flink 会把所有任务当成流来处理,这也是其最大的特点。Flink 可以支持本地的快速迭代,以及一些环形的迭代任务。并且 Flink 可以定制化内存管理。在这点协同过滤算法java代码,如果要对比 Flink 和 Spark 的话,Flink 并没有将内存完全交给应用层。这也是为什么 Spark 相对于 Flink,更容易出现 OOM 的原因(out of )。
15、Spark
Spark是一个新兴的大数据处理通用引擎,提供了分布式的内存抽象。Spark 正如其名,最大的特点就是快(-fast),可比 的处理速度快 100 倍。此外,Spark 提供了简单易用的 API,几行代码就能实现 。本教程主要参考官网快速入门教程,介绍了 Spark 的安装,Spark shell 、RDD、Spark SQL、Spark 等的基本使用。
16、YARN
YARN(Yet ,另一种资源协调者)是一种新的 资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。
17、Kafka
Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。 对于像的一样的日志数据和离线分析系统,但又要求实时处理的限制,这是一个可行的解决方案。Kafka的目的是通过的并行加载机制来统一线上和离线的消息处理,也是为了通过集群来提供实时的消费。