大数据发展史
大数据是在2009年正式引入国内,但是在当时还只是试探阶段,并没有太多的落地。直到2014年,以hadoop为代表的生态趋于成熟,甚至结合内存处理领域、数据实时处理领域,已经形成了一套完整的大数据平台技术解决方案。再加上大量企业的尝试于是在该年形成了一个大数据在国内的爆发点。也就是从2014开始,大数据的人才市场需求在急剧扩增。2015年,随着互联网的发展,需求的饱和,流量红利的消失,让很多企业公司不得不考虑通过数据来提升效率以及推进用户体验,例如推荐系统、个性化服务等,于是各大互联网企业纷纷向数据化转型,使得大数据这个领域进一步达到高潮。Java大数据应用领域
Java大数据的应用领域非常的广泛,可以简单分为几类:
1.基础大数据服务平台,大中型的商业应用包括我们常说的企业级应用(主要指复杂的大企业的软件系统)、各种类型的网站等。
2.数据分析领域,例如图像分析,语音识别,空间分析,用户分析,可视化等。
3.各种数据源的建立,气象,交通,媒体娱乐等领域数据市场的形成。
Java大数据的就业方向
除了以上说明的几种大数据的应用方向和领域,Java大数据本身也可以入职传统的Java职位,因此其就业方向非常的广泛。但是同时应为专业性,很多Java大数据工程师长期专注一个领域,随着技术能力的提升,技术的方向也会越来越窄,所以,为了以后的职业道路不会偏移,现在就应该对各个就业方向做一个全面的了解。
从技术的角度来看主要是这几个版块,也和大数据的技术流程有关:
没有Java,甚至不会有大数据的大发展,Hadoop本身就是用Java编写的。当你需要在运行MapReduce的服务器集群上发布新功能时,你需要进行动态的部署,而这正是Java所擅长的。
得数据者得天下
而随着移动互联无孔不入的渗透,数据获取成为易事。但有一点,大数据初始形态无序而凌乱,犹如天空中飘着无数形状不一颜色各异的气球,尚无实用价值。于企业而言,用户数量庞大能获得海量数据固然可喜,然而若未能将这些数据进行整合分析利用,便如琅琊阁仅能搜集信息却不进行分工处理,也没有蔺晨与梅长苏将这些信息环环相扣抽丝剥茧加以利用,如此,“得天下”便是区区笑谈。
工欲善其事必先利其器
大数据领域支持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这些数据处理工具提供互操作性。
评论留言