大数据几乎已成为全部商业领域共有的最新趋势,然而大数据到底是什么?是噱头、泡沫,又或是真如传言同样的重要。程序员
事实上,大数据是个很是简单的术语——就像它所说的同样,是很是大的数据集。那么究竟有大多?真实的答案就是“如你所想的那么大”!web
那么为何会产生如此之大的数据集?由于当今的数据已经无所不在而且存在着巨大的回报:收集通讯数据的RFID传感器,收集天气信息的传感器,移动设备给社交网站发送的GPRS数据包,图片视频,在线购物产生的交易记录,应有尽有!大数据是一个巨大的数据集,包含了任何数据源产生的信息,固然前提是这些信息是咱们感兴趣的。数据库
然而大数据的含义毫不只与体积相关,由于大数据还能够用于寻找新的真知、造成新的数据和内容;咱们可使用从大数据中提取的真知、数据和内容去使商业更加灵活,以及回答那些以前被认为远超当前范畴的问题。这也是大数据被从如下4个方面定义的缘由:Volume(体积)、Variety(多样)、Velocity(效率)以及Veracity(Value,价值),也就是大数据的4V。下面将简述每一个特性以及所面临的挑战:编程
1. Volume缓存
Volume说的是一个业务必须捕获、存储及访问的数据量,仅仅在过去两年内就生产了世界上全部数据的90%。现今的机构已彻底被数据的体积所淹没,轻易的就会产生TB甚至是PB级不一样类型的数据,而且其中有些数据须要被组织、防御(窃取)以及分析。服务器
2. Variety网络
世界上产生的数据有80%都是半结构化的,传感器、智能设备和社交媒体都是经过Web页面、网络日志文件、社交媒体论坛、音频、视频、点击流、电子邮件、文档、传感系统等生成这些数据。传统的分析方案每每只适合结构化数据,举个例子:存储在关系型数据库中的数据就有完整的结构模型。数据类型的多样化一样意味着为支持当下的决策制定及真知处理,咱们须要在数据储存和分析上面进行根本的改变。Variety表明了在传统关系数据库中没法轻易捕获和管理的数据类型,使用大数据技术却能够轻松的储存和分析。app
3. Velocity框架
Velocity则须要对数据进行近实时的分析,亦称“sometimes 2 minutes is too late!”。获取竞争优点意味着你须要在几分钟,甚至是几秒内识别一个新的趋势或机遇,一样还须要尽量的快于你竞争对手。另一个例子是时间敏感性数据的处理,好比说捕捉罪犯,在这里数据必须被收集后就完成被分析,这样才能获取最大价值。对时间敏感的数据保质期每每都很短,这就需求组织或机构使用近实时的方式对其分析。机器学习
4. Veracity
经过分析数据咱们得出如何的抓住机遇及收获价值,数据的重要性就在于对决策的支持;当你着眼于一个可能会对你企业产生重要影响的决策,你但愿得到尽量多的信息与用例相关。单单数据的体积并不能决定其是否对决策产生帮助,数据的真实性和质量才是得到真知和思路最重要的因素,所以这才是制定成功决策最坚实的基础。
然而当下现有的商业智能和数据仓库技术并不彻底支持4V理论,大数据解决方案的开发正是针对这些挑战。
下面将介绍大数据领域支持Java的主流开源工具:
1. HDFS
HDFS是Hadoop应用程序中主要的分布式储存系统, HDFS集群包含了一个NameNode(主节点),这个节点负责管理全部文件系统的元数据及存储了真实数据的DataNode(数据节点,能够有不少)。HDFS针对海量数据所设计,因此相比传统文件系统在大批量小文件上的优化,HDFS优化的则是对小批量大型文件的访问和存储。
2. MapReduce
Hadoop MapReduce是一个软件框架,用以轻松编写处理海量(TB级)数据的并行应用程序,以可靠和容错的方式链接大型集群中上万个节点(商用硬件)。
3. HBase
Apache HBase是Hadoop数据库,一个分布式、可扩展的大数据存储。它提供了大数据集上随机和实时的读/写访问,并针对了商用服务器集群上的大型表格作出优化——上百亿行,上千万列。其核心是Google Bigtable论文的开源实现,分布式列式存储。就像Bigtable利用GFS(Google File System)提供的分布式数据存储同样,它是Apache Hadoop在HDFS基础上提供的一个类Bigatable。
4. Cassandra
Apache Cassandra是一个高性能、可线性扩展、高有效性数据库,能够运行在商用硬件或云基础设施上打造完美的任务关键性数据平台。在横跨数据中心的复制中,Cassandra同类最佳,为用户提供更低的延时以及更可靠的灾难备份。经过log-structured update、反规范化和物化视图的强支持以及强大的内置缓存,Cassandra的数据模型提供了方便的二级索引(column indexe)。
5. Hive
Apache Hive是Hadoop的一个数据仓库系统,促进了数据的综述(将结构化的数据文件映射为一张数据库表)、即席查询以及存储在Hadoop兼容系统中的大型数据集分析。Hive提供完整的SQL查询功能——HiveQL语言,同时当使用这个语言表达一个逻辑变得低效和繁琐时,HiveQL还容许传统的Map/Reduce程序员使用本身定制的Mapper和Reducer。
6. Pig
Apache Pig是一个用于大型数据集分析的平台,它包含了一个用于数据分析应用的高级语言以及评估这些应用的基础设施。Pig应用的闪光特性在于它们的结构经得起大量的并行,也就是说让它们支撑起很是大的数据集。Pig的基础设施层包含了产生Map-Reduce任务的编译器。Pig的语言层当前包含了一个原生语言——Pig Latin,开发的初衷是易于编程和保证可扩展性。
7. Chukwa
Apache Chukwa是个开源的数据收集系统,用以监视大型分布系统。创建于HDFS和Map/Reduce框架之上,继承了Hadoop的可扩展性和稳定性。Chukwa一样包含了一个灵活和强大的工具包,用以显示、监视和分析结果,以保证数据的使用达到最佳效果。
8. Ambari
Apache Ambari是一个基于web的工具,用于配置、管理和监视Apache Hadoop集群,支持Hadoop HDFS,、Hadoop MapReduce、Hive、HCatalog,、HBase、ZooKeeper、Oozie、Pig和Sqoop。Ambari一样还提供了集群情况仪表盘,好比heatmaps和查看MapReduce、Pig、Hive应用程序的能力,以友好的用户界面对它们的性能特性进行诊断。
9. ZooKeeper
Apache ZooKeeper是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、命名服务、分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
10. Sqoop
Sqoop是一个用来将Hadoop和关系型数据库中的数据相互转移的工具,能够将一个关系型数据库中数据导入Hadoop的HDFS中,也能够将HDFS中数据导入关系型数据库中。
11. Oozie
Apache Oozie是一个可扩展、可靠及可扩充的工做流调度系统,用以管理Hadoop做业。Oozie Workflow做业是活动的Directed Acyclical Graphs(DAGs)。Oozie Coordinator做业是由周期性的Oozie Workflow做业触发,周期通常决定于时间(频率)和数据可用性。Oozie与余下的Hadoop堆栈结合使用,开箱即用的支持多种类型Hadoop做业(好比:Java map-reduce、Streaming map-reduce、Pig、 Hive、Sqoop和Distcp)以及其它系统做业(好比Java程序和Shell脚本)。
12. Mahout
Apache Mahout是个可扩展的机器学习和数据挖掘库,当前Mahout支持主要的4个用例:
推荐挖掘:搜集用户动做并以此给用户推荐可能喜欢的事物。
汇集:收集文件并进行相关文件分组。
分类:从现有的分类文档中学习,寻找文档中的类似特征,并为无标签的文档进行正确的归类。
频繁项集挖掘:将一组项分组,并识别哪些个别项会常常一块儿出现。
13. HCatalog
Apache HCatalog是Hadoop创建数据的映射表和存储管理服务,它包括:
提供一个共享模式和数据类型机制。提供一个抽象表,这样用户就不须要关注数据存储的方式和地址。为相似Pig、MapReduce及Hive这些数据处理工具提供互操做性。