Java生态系统正在不断成长和发展。同时,那意味着更好的商业应用于真实世界的场景,并且Java程序员有更多的机会了解互联网的真实状况。
在过去五年,那些收集我们信息得数据公司爆发性地增长。他们基于我们网上的行为:网站访问、点击、喜好、微博、相片,网上交易,博客文章,那些数据随后被挖掘、分析。然后以数字广告宣传的形式反馈给我们。被收集的数据的量是巨大的。根据分析公司Domo,平均每分钟
谷歌收到超过4百万的搜索请求;
Facebook的用户分享接近4百二十万条内容。
Twitter用户发表微博接近3百万条;从2013到2015,全球互联网人数增长了18.5%并且目前达到32亿人。那仅仅是人数,想象一下人们上网之后随之而来的数据流。
大数据和Java
因为由人们和设备产生的所有数据需要花费太多的时间,同时耗费大量的金钱去把数据加载到传统的关系型数据库来分析,由于大数据不断地发展,公司们正在接受新的分析和存储方法,大数据将数据存储到一个数据湖或者云中的存储库,那能够一直保存大量本地格式的原始数据,直到他们被拿来使用。
大数据常通过利用Hadoop来处理。Hadoop是一项开源软件架构,采用Java编写。通过利用许多廉价的服务器,Hadoop使数据分析师能储存大量的数据集合。它在服务器上的Java虚拟机上操作运行MapReduce,协调、结合、提炼数据。MapReduce通过一个数据集收到一个任务请求,然后拆分任务,之后在多个节点上同时运行处理。数据问题任务被分解,然后分发到大量的单个机器上,每个机器都胜任自己被分配的任务。通过让MapReduce与许多组接入Linux服务器的电脑结合,分析师能在几乎任何设备上得到价格低廉的超级计算机资源。
最近在旧金山举行的JavaOne 2015会议上,Dan McClary,一位来自甲骨文公司的Hadoop和大数据产品经理,在发表讲话中鼓励Java开发商去转移他们的程序设计技能到大数据商业发展项目,以作为一种促进职业生涯发展以及他们所在公司的财富的有效途径。McClary 称赞Java取得新的进步,但是也警告开发商小心一些技术“陷阱”,同时不要对这些关键因素放松警惕。“举个例子,如果你不关注数据块是怎样编写以及在哪里编写, 你可能是以特别的数组在数据节点上结束,而不是恰当、均匀分配的数据。
当然,Java的发展形式会是一直不断地成长。在过去的18个月中,McClary 说,Apache Spark已经在大数据领域里非常受欢迎。对比Hadoop基于磁盘的两阶段MapReduce范例,Spark(也是用Java编写)给予了多级的、可记忆的操作方式,在某些应用上,那提供了比Hadoop和MapReduce最多快100倍的表现。“对于编程立场,什么才是重要的,” McClary说,“那就是减少两到五倍的代码,因为你有更多抽象概念和功能是用Java,Scala,或者Pytho语言编写。”
随后,McClary提到了针对大量级机器学习的DeepLearning4J项目,也提到了Apache Zeppelin项目,这个项目是被设计成为数据科学提供单纯的环境,“如果任何人对机器学习有兴趣,DeepLearning4J项目明显是值得研究的”他总结说道。英文原文来自:forbes
「相关阅读」
hadoop是什么?
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。
用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。
Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS.HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。
Hadoop的框架最核心的设计就是:HDFS和MapReduce.HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。
详细:hadoop是什么:分布式系统基础架构
Spark概念解读
Spark是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用并行框架,Spark,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。
Spark 是一种与 Hadoop 相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些有用的不同之处使 Spark 在某些工作负载方面表现得更加优越,换句话说,Spark 启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载。
Spark 是在 Scala 语言中实现的,它将 Scala 用作其应用程序框架。与Hadoop不同,Spark 和 Scala 能够紧密集成,其中的 Scala 可以像操作本地集合对象一样轻松地操作分布式数据集。
尽管创建 Spark 是为了支持分布式数据集上的迭代作业,但是实际上它是对 Hadoop 的补充,可以在 Hadoop 文件系统中并行运行。通过名为 Mesos 的第三方集群框架可以支持此行为。Spark 由加州大学伯克利分校 AMP 实验室 (Algorithms, Machines, and People Lab) 开发,可用来构建大型的、低延迟的数据分析应用程序。
详细:Spark概念解读以及与Hadoop技术对比
MapReduce概念
MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)"和"Reduce(归约)",和它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。 当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组。