大数据时代

MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算

thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发。它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml 这些编程语言间无缝结合的、高效的服务。

在某种意义上,WebService、REST均是RPC的实现,那么RPC的发展过程如何呢?本文参考了wikipedia,对RPC做一下简要摘记。

RPC(RemoteProcedureCall),是进程间通信(IPC,Inter-Process Communication)的一种技术,一般指不同机器上的进程间通信。在采用C等古老语言编程的时候,RPC被称作了对S端的“子程序”的调用,所以称“过程调用”。在OOP出现后,RPC也可以称为远程方法调用(RemoteMethodInvocation),或者远程调用(RemoteInvocation)。

RPC过程可以是同步的,也可以是异步的。同步方式:C端向S端发送请求,阻塞等待;S端执行一段子程序,发送响应;C端继续执行;异步方式,比如XHTTP调用。

RPC的调用过程(Stub这个术语应该是借鉴了JavaRMI):

  1. Client向ClientStub发送请求(Call)。
  2. ClientStub对请求参数进行封包(也叫Marshalling),发出系统调用,OS向S端发送消息。
  3. S端接收到消息后,把封包消息传递给ServerStub。ServerStub解包(UnMarshalling)。
  4. ServerStub调用S端的子程序。处理完毕后,以同样的方式向C端发送结果。

注:ServerStub又叫Skeleton。

什么是Stub?

Stub是一段代码,用来转换RPC过程中传递的参数。处理内容包括不同OS之间的大小端问题。另外,Client端一般叫Stub,Server端一般叫Skeleton。

生产方式:1)手动生成,比较麻烦;2)自动生成,使用IDL(InterfaceDescriptionLanguate),定义C/S的接口。

交互机制标准:一般采用IDL,生成IDL的工具 RPCGEN()。

RPC相关实现方式

  • JavaRMI
  • XML-RPC,XML+HTTP来进行机器之间的调用
  • JSON-RPC
  • SOAP,XML-RPC的升级版
  • Facebook Thrift
  • CORBA
  • AMF,AdobeFlex
  • Libevent,是一个用于构建RPC Server和Client的框架。
  • WCF,来自微软
  • .net Remoting,逐步被WCF取代

对大数据这一概念,大部分企业都不会陌生,而对于其中应用到的技术,却并没有几个人了解的到。一方面,很多人用到的软件都比较简洁,专业,只需要会操作就可以,比如FineBI商业智能解决方案软件,它内部所有的技术都不需要操作者了解,只需要了解表面的一些沟通需求即可,也不需要考虑如何建模,这样能够节省项目实施过程中的沟通时间,从而为企业带来更多的收益。

另一方面,很多老板也并不擅长这个,了解也对他们并没有实际作用,但是对于经常接触这些软件的人来说,了解其背后的技术,将会对自己的工作有更好的帮助。那么,大数据背后都用到了哪些技术呢?

一、NoSQL数据库

在我们生活的环境当中,新技术的出现并不会等太久就被人们所重用,事实上,很多技术在出现一个月之后就会陆续有人开始使用。NoSQL数据库在广义上本身也包含很多技术,他们关注关系型数据库引擎如索引、流媒体以及高访问网站服务等的限制,同时也关系其他的,而在这些领域当中,NoSQL数据库的使用频率最高。

二、HadoopMapReduce

这是一种能够处理大数据分析所带来的挑战的技术,不仅应用频率高,而且在处理上更有得天独厚的优势。就老家,很多企业在使用HadoopMapReduce技术研发的数据平台时,都认为是最好用的。由此可见,该技术确实能给企业带来意想不到的好处。

三、内存分析技术

内存最开始出现的时候是昂贵的,但是随着技术的进步,越来越多的内存开始出现,价格自然也是一降再降。但是性能方面却并没有降,反而有上升的趋势,这也是内存在网络中倍受欢迎的原因所在。

不仅如此,专业人士还提到,低廉的内存应用在大数据中心,具有实时、高效的优势,同时也能提升大数据的洞察力,从而为企业提供更好的数据分析和挖掘。

四、集成设备

商业智能以及大数据分析就是在数据仓库设备出现之后才被激发出来的,这种利用数据仓库技术提升自身竞争优势,走在对手前列的方式让很多企业欣喜。不过,集成设备的功效还有很多,其中能够提升传统数据库系统的作用让很多企业最为受用,再加上集成设备已经成为企业应对数据挑战大环境下的重要利器,因此该技术也备受关注。

Erlang是一种通用的面向 并发的编程语言,它由 瑞典电信设备制造商爱立信所辖的CS-Lab开发,目的是创造一种可以应对大规模并发活动的编程语言和运行环境。Erlang问世于1987年,经过十年的发展,于1998年发布开源版本。Erlang是运行于 虚拟机解释性语言,但是现在也包含有 乌普萨拉大学高性能Erlang计划(HiPE)开发的 本地代码 编译器,自R11B-4版本开始,Erlang也开始支持脚本式解释器。在 编程范型上,Erlang属于多重范型编程语言,涵盖函数式、并发式及 分布式。顺序执行的Erlang是一个及早求值, 单次赋值和动态类型的函数式编程语言。
Erlang是一个结构化,动态类型编程语言,内建并行计算支持。最初是由爱立信专门为通信应用设计的,比如控制交换机或者变换协议等,因此非常适 合于构建分布式,实时软并行计算系统。使用Erlang编写出的应用运行时通常由成千上万个轻量级进程组成,并通过消息传递相互通讯。进程间上下文切换对于Erlang来说仅仅 只是一两个环节,比起C程序的线程切换要高效得多得多了。
使用Erlang来编写 分布式应用要简单的多,因为它的分布式机制是透明的:对于程序来说并不知道自己是在分布式运行。Erlang运行时环境是一个 虚拟机,有点像Java虚拟机,这样代码一经编译,同样可以随处运行。它的运行时系统甚至允许代码在不被中断 的情况下更新。另外如果需要更高效的话, 字节代码也可以编译成本地代码运行。
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) 开发,可用来构建大型的、低延迟的数据分析应用程序 

猜你喜欢

转载自weitao1026.iteye.com/blog/2308210