没有Java,甚至不会有大数据的大发展,Hadoop本身就是用Java编写的。当你需要在运行MapReduce的服务器集群上发布新功能时,你需要进行动态的部署,而这正是Java所擅长的。
大数据领域支持Java的主流开源工具:
HDFS
HDFS是Hadoop应用程序中主要的分布式储存系统, HDFS集群包含了一个NameNode(主节点),这个节点负责管理所有文件系统的元数据及存储了真实数据的DataNode(数据节点,可以有很多)。HDFS针对海量数据所设计,所以相比传统文件系统在大批量小文件上的优化,HDFS优化的则是对小批量大型文件的访问和存储。
MapReduce
Hadoop MapReduce是一个软件框架,用以轻松编写处理海量(TB级)数据的并行应用程序,以可靠和容错的方式连接大型集群中上万个节点(商用硬件)。
HBase
Apache HBase是Hadoop数据库,一个分布式、可扩展的大数据存储。它提供了大数据集上随机和实时的读/写访问,并针对了商用服务器集群上的大型表格做出优化——上百亿行,上千万列。其核心是Google Bigtable论文的开源实现,分布式列式存储。就像Bigtable利用GFS(Google File System)提供的分布式数据存储一样,它是Apache Hadoop在HDFS基础上提供的一个类Bigatable。
Cassandra
Apache Cassandra是一个高性能、可线性扩展、高有效性数据库,可以运行在商用硬件或云基础设施上打造完美的任务关键性数据平台。在横跨数据中心的复制中,Cassandra同类*,为用户提供更低的延时以及更可靠的灾难备份。**log-structured update、反规范化和物化视图的强支持以及强大的内置缓存,Cassandra的数据模型提供了方便的二级索引(column indexe)。
Hive
Apache Hive是Hadoop的一个数据仓库系统,促进了数据的综述(将结构化的数据文件映射为一张数据库表)、即席查询以及存储在Hadoop兼容系统中的大型数据集分析。Hive提供完整的SQL查询功能——HiveQL语言,同时当使用这个语言表达一个逻辑变得低效和繁琐时,HiveQL还允许传统的Map/Reduce程序员使用自己定制的Mapper和Reducer。
Pig
Apache Pig是一个用于大型数据集分析的平台,它包含了一个用于数据分析应用的*级语言以及评估这些应用的基础设施。Pig应用的闪光特性在于它们的结构经得起大量的并行,也就是说让它们支撑起非常大的数据集。Pig的基础设施层包含了产生Map-Reduce任务的编译器。Pig的语言层当前包含了一个原生语言——Pig Latin,开发的初衷是易于编程和*可扩展性。
Chukwa
Apache Chukwa是个开源的数据收集系统,用以监视大型分布系统。建立于HDFS和Map/Reduce框架之上,继承了Hadoop的可扩展性和稳定性。Chukwa同样包含了一个灵活和强大的工具包,用以显示、监视和分析结果,以*数据的使用达到*效果。
Ambari
Apache Ambari是一个基于web的工具,用于配置、管理和监视Apache Hadoop集群,支持Hadoop HDFS,、Hadoop MapReduce、Hive、HCatalog,、HBase、ZooKeeper、Oozie、Pig和Sqoop。Ambari同样还提供了集群状况仪表盘,比如heatmaps和查看MapReduce、Pig、Hive应用程序的能力,以友好的用户界面对它们的性能特性进行诊断。
ZooKeeper
Apache ZooKeeper是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、命名服务、分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
Sqoop
Sqoop是一个用来将Hadoop和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库中数据导入Hadoop的HDFS中,也可以将HDFS中数据导入关系型数据库中。
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脚本)。
Mahout
Apache Mahout是个可扩展的机器学习和数据挖掘库,当前Mahout支持主要的4个用例:
推荐挖掘:搜集用户动作并以此给用户推荐可能喜欢的事物。
聚集:收集文件并进行相关文件分组。
分类:从现有的分类文档中学习,寻找文档中的相似特征,并为无标签的文档进行正确的归类。
频繁项集挖掘:将一组项分组,并识别哪些个别项会经常一起出现。
HCatalog
Apache HCatalog是Hadoop建立数据的映射表和存储管理服务,它包括:
提供一个共享模式和数据类型机制。
提供一个抽象表,这样用户就不需要关注数据存储的方式和地址。
为类似Pig、MapReduce及Hive这些数据处理工具提供互操作性。
未来趋势6 Java嵌入式系统将进入黄*时代
在1998或1999年的嵌入式系统研讨会上,由太阳微系统公司发布的轰轰烈烈的媒体活动。Java当时成为了研讨会的热门话题,巨幅Java标语飞扬在活动的现场。然而,随着2006年的结束,C/C++依然是硬件实时系统设计所采用的主要语言。最近的调查显示,人们仍然认为Java太大、太慢,不能满足各种实时约束的要求,不能执行低层次的操作,并且启动时间太长。
为了矫正早期人们对Java形成的种种负面印象,现在是重新审视*新Java发展趋势的时候了。
最近,洛克希德马丁公司已经采用Java来处理Aegis武器系统方面的可*的性能,美国*油井Varco正采用Java来管理机器人自动钻井,L-3 Communication公司的Telemetry-West部门选择Java来实现他们的实时数据采集系统,美国波音公司正利用Java来开发联合无人作战空中系统(J-UCAS)的X”45C计划。
目前,以不同实现方案提出的各种标准已经准备就绪。Java硬实时(JSR-000001:Java实时规范)和安全紧要的(JSR 302:安全紧要的Java技术)标准目前正在发挥作用,并且各种产品几乎准备就绪推向市场,从而为这些新兴的标准带来生命力。
这些产品当中,有些产品的性能可与C/C++媲美,具有低级器件访问和小的占位空间。此外,另外一些产品把大量Java标准版库的高生产率引入到嵌入式开发领域。所有这些产品都避免了C/C++编程所存在的错误高发的情况。
而市场研究则显示,全球已经交付使用的嵌入式虚拟机的数量超过了1百万,并正以24.5%的复合年增长率发展。
最终来看,从Java切入嵌入式系统的领地算起的大约5~7年之后,针对硬实时和深度嵌入式系统的Java产品已经呈现一片生机盎然的景象。针对嵌入式系统的Java有可能迎来它的黄*时代。