导航:首页 > 网络数据 > 大数据处理性能

大数据处理性能

发布时间:2023-07-20 19:47:21

① 如何进行大数据分析及处理

探码科技大数据分析及处理过程


聚云化雨的处理方式

② 如何提高大数据业务系统的性能

本文介绍如何提升 java Web 服务性能,主要介绍了三种方法:一是采用 Web 服务的异步调用,二是引入 Web 服务批处理模式,三是压缩 SOAP 消息。重点介绍在编程过程中如何使用异步 Web 服务以及异步调用和同步调用的差异点。本文还示范了如何在项目中使用以上三种方法,以及各种方法所适合的应用场景。 Java Web 服务简介 Web 服务是一种面向服务架构的技术,通过标准的 Web 协议提供服务,目的是保证不同平台的应用服务可以互操作。Web 服务(Web Service)是基于 XML 和 HTTP 通讯的一种服务,其通信协议主要基于 SOAP,服务的描述通过 WSDL、UDDI 来发现和获得服务的元数据。 这种建立在 XML 标准和 Internet 协议基础上的 Web 服务是分布式计算的下一步发展方向,Web 服务为那些由不同资源构建的商业应用程序之间的通信和协作带来了光明的前景,从而使它们可以彼此协作,而不受各自底层实现方案的影响。 JAX-RPC 1.0 是 Java 方面的 Web 服务的原始标准 , 但是由于 JAX-RPC 1.0 对 Web 服务功能的认识有一定的局限,于是 JAX-WS 2.0 应用而生。JAX-WS 2.0 开发工作的主要目标是对各项标准进行更新,成功实现了业界对 JAX-RPC 1.X 的各种期望。此外,JAX-WS 2.0 直接支持 XOP/MTOM,提高了系统附件传送能力以及系统之间的互操作性。 实例剖析 Web 服务性能瓶颈 通过以上简述不难体会到,Web 服务以其 XML + HTTP 的松耦合、平台无关的特性,集万般宠爱于一身,必将成为未来数据共享的基础。但与此同时我们也应当认识到世间完事万物均有其矛盾的两面性:有优点,必将存在缺点,Web 服务亦是如此。就像当初 JAVA 大行其道的时候性能成为其致命诟病一样,Web 服务也同样面临性能问题,似乎“性能问题”天生就是“平台无关”挥之不去的冤家。但问题终归要解决,实践是检验和分析问题的唯一途径,让我们先来创建一个简单的 Web 服务再来审视和分析隐含其中的性能问题。 创建服务 创建服务 Java Bean: 首先我们创建一个尽可能简单的书店服务 Bean,服务的内容只有一个 qryBooksByAuthor,即根据作者 (Author) 查询其名下的书籍 (List)。 图 1. 书店服务 Bean(BookStoreSrvBean) 服务 Input- 作者 (Author) 的实体类 : 图 2. 作者实体类 (Author) 服务出参 Output- 书籍 (Book) 列表的实体类: 图 3. 书籍实体类 (Book) 至此我们的服务代码已经完成,我们不在此讨论此服务的业务合理性,创建此服务的目的只是举一个尽可能简单的实例以分析 web 服务的性能。 下面的任务就是开发 Web 服务了,手工编写及发布符合规范的 Web 服务过程极为繁琐,在此使用 IBM 的 Rational Software Architect(后面简称 RSA)来进行 Web 服务的服务器端以及客户端的开发。 发布 Web 服务 创建动态 Web 项目 : 发布 Web 服务的前提当然需要一个 J2EE 的 Web 项目,打开 RSA->File->New->Dynamic Web Project, 项目名称为 testWebService, 其余选项根据需要进行选择 ( 注意需要选择加入 Web 项目到 EAR)。创建好的 Web 项目和 EAR 项目效果如下 : 图 4. Web 项目以及应用项目的结构 创建 Web 服务: 选中导入的 com.ibm.test.ws.srv.BookStoreSrvBean,右键 New->Other->Web Service 来创建并发布 Web 服务。创建的时候选择常用的 JAX-WS 标准 , 并选择生成 WSDL 文件。由于 Web 服务的创建不是本文重点,此部分内容暂且省略。服务创建完成之后就可以发布到上一步建好的 Web 项目中了。 创建客户端 使用 RSA,客户端的创建工作将会非常简单:右键点击上面生成的 WSDL 文件 ->Web Services->Generate Client 图 5. 创建客户端界面 在此界面,根据实际情况选择 server,JAX-WS 标准以及 Client 代码的目标项目,然后点击下一步。 图 6. 输入客户端信息 此界面暂时使用默认配置,某些特殊选项将在后面章节进行描述。 客户端调用 由于 JAX-WS 规范大部分的 stub 调用代码是实时生成的,我们只需要修改客户端 WSDL 的 port 就可以用以下代码进行 Web 服务的调用。这里修改 WSDL 端口的目的是让客户端调用 RSA 提供的 TCP/IP Monitor 的虚拟端口,这样我们就可以很轻易地看到 Web 服务实际的调用以及返回的 SOAP 消息了。 客户端调用代码如下 : 图 7. 客户端调用代码 使用 TCP/IP Monitor 看到的 SOAP 消息如下 : 图 8. Web 服务调用产生的 SOAP 消息 Java Web 服务性能分析 从以上实例我们可以看到,Web 服务的调用与传统的 RPC 还是有较大差异的。最大的特点是调用双方使用 XML 格式的 SOAP 规范消息进行传输,这样以文本进行传输的好处是抛弃了私有协议,无论调用双方是何种平台,只要能够构造以及解析 XML 文本,并且存在双方都支持的传输协议,那么调用就成为了可能。而 XML 的日益规范以及 HTTP 协议的普及更是给这两个必要条件提供了坚强的后盾,Web 服务成为未来通用的服务提供标准已是不争的事实。 但是相信使用过 Web 服务的人都曾经经受过其性能不佳的窘境,原因为何我们结合刚才的实例可以分析出以下几点: ● SOAP 文本消息转化导致效率低下 从刚才的 TCP/IP Monitor 监测到的 request 以及 response 的消息我们可以看到,在发送消息时,我们传入了 Author 对象,在实际的调用发生时,这个 Author 对象会被转化成 XML 格式的 SOAP 消息,此消息在到达 Server 端会被解析并重新构造成 Server 端的 Author 对象。Response 也是同理,Books List 也会经历 XML 序列化和反序列化的过程。最糟糕的是,这种过程会在每一次调用的时候都会发生,这种构造以及解析的过程都会极大地消耗 CPU,造成资源的消耗。 ●SOAP 文本消息传输导致传输内容膨胀 以 request 参数 Author 为例,必要的信息仅仅是”Bruce Eckel”这几个字节,但转化成 XML 消息后,可以从 SOAP 消息看到,多了很多 SOAP 规范的标签,这些信息会导致需要传输的内容急剧增大,几个字节很可能会变成几千字节。当调用频度和参数内容增多的时候,这种传输内容的膨胀将不是一个可以忽略的影响,它不但会吃掉网络的带宽,还会给 Server 的数据吞吐能力造成负担,后果可想而知。 ●同步阻塞调用在某些情况下导致性能低下 同步阻塞调用是指客户端在调用 Web 服务发送 request 后一直处于阻塞状态,客户端线程就会挂起,一直处于等待状态,不能进行其他任务的处理。这样就会造成线程的浪费,如果相应线程占用了一些资源,也不能够及时释放。 这个问题在纯客户端访问 Server 端的情况下并不明显,但如果是两个 Server 端之间进行 Web 服务调用的话,阻塞模式就会成为调用 Server 端的性能瓶颈。 Web 服务性能优化实践 使用异步方式调用 web 服务 先需要强调一点的是,这里的异步方式指的是客户端的异步,无论客户端是同步还是异步,都对服务端没有任何影响。我们期望的理想结果是:当客户端发送了调用请求后不必阻塞等待 server 端的返回结果。最新的 JAX-WS 标准中增加了这一异步调用的特性,更好的消息是,RSA 工具中也对 JAX-WS 的这一特性进行了支持,这样就极大地方便了我们进行异步调用客户端的创建。 其实讲客户端配置为异步模式极其简单,只要在 RSA 生成 Client 端代码时将‘ Enable asynchronous invocation for generated client ’ 选中即可 , 如下图 : 图 9. 异步客户端创建选项 这样在生成的客户端的 BookStoreSrvBeanService 中就会多了 qryBooksByAuthorAsync 的异步方法。既然是异步方法,回调 (Call Back) 就是必不可少的,在下面的异步客户端测试代码中可以看到匿名内部类作为回调 handler 的具体使用方法 : 图 10. 异步客户端调用示例代码 测试代码的输出结果如下: 图 11. 异步调用控制台输出 可以看到,当 Web 服务没有返回时,客户端仍然有机会做自己的输出 :“not done yet, can do something else…”。有些人可能会认为作为客户端此处的输出并无实际意义,但试想如果一个 server 作为客户端去访问一个 Web 服务,如果在服务等待期间能够有机会脱离阻塞状态执行自己需要的代码,甚至可以使用 wait 等方法释放被当前线程占用的资源,那么对于此 server 来说这将是一个对性能提升起到本质作用的因素。 使 web 服务支持批处理模式 ● 批处理模式简介 批处理顾名思义是采用一次性处理多条事务的方式来取代一次一条事务的传统处理方式。Java Database Connectivty (JDBC) 中提供了大量的批处理 API 用于优化数据库操作性能,例如 Statement.executeBatch() 可以一次性接收并执行多条 SQL 语句。批处理思想可以方便的移植到 Web 服务调用场景以达到优化 Web 服务调用响应的目的。通过实际 Web 服务调用时间戳分析不难看出网络通讯是 Web 服务性能的瓶颈之一,因此通过减少网络通讯开销来优化 Web 服务性能,批处理模式是其中较为直接的一种实现方式。 ●批处理模式适应性 批处理模式虽然作用显著,但是也不适合所有场景。使用批处理模式处理 Web 服务请求时需要考虑一下几点: 1.不同 Web 服务执行时间差异性 不同 Web 服务执行时间不尽相同,因此在同时处理多 Web 服务请求时需要考虑这种时间差异性。一般情况下是等待最长处理时间的 Web 服务执行完毕后汇总所有 Web 服务执行结果从而返回到客户端,因此存在批处理多 Web 服务反而比顺序单次调用 Web 服务消耗更长时间可能性。需要在采用批处理模式前对 Web 服务性能有清晰的了解,尽可能将性能参数相似的 Web 服务纳入批处理,而分别处理执行时间差异较大的 Web 服务。一般建议将性能差异在 30% 以内的多 Web 服务可以考虑纳入批处理。比方说 AccountWebService 中有一个获取用户账户列表的 Web 服务 getUserAccounts,这个 Web 服务执行需要 15 秒,另外 UserWebService 中有一个获取用户目前 pending 的待处理通知 getUserPendingNotifications,这个 Web 服务执行需要 2 秒时间,我们可以看到这两个 Web 服务执行时间差异较大,因此在这种情况下我们不建议将这两个 Web 服务纳入批处理。而 AccountWebService 中有一个增加第三方用户账号的 Web 服务 addThirdPartyNonHostAccount,该 Web 服务执行需要 3 秒,此时就就可以考虑能将 getUserPendingNotifications Web 服务和 addThirdPartyNonHostAccount 放在一个批处理中一次性调用处理。 2.不同 Web 服务业务相关性 一般情况下建议考虑将存在业务相关性的多 Web 服务放入批处理中,只有业务存在相关性的多 Web 服务才会涉及到减少调用次数以提高应用系统性能的需求。比方说用户在增加第三方账号 addThirdPartyNonHostAccount 以后会默认自动发送一条 pending 的 notification 给用户用以提示用户来激活增加的账号,因此这种场景下可以完美的将 addThirdPartyNonHostAccount Web 服务和 getUserPendingNotifications Web 服务放入一个批处理中,在用户增加完三方账号后系统自动刷新 pending notification 区域以提示用户激活账号。UserWebService 中有一个获取用户主账号的 Web 服务 getUserHostAccounts 和获取用户三方账号的 Web 服务 getUserNonHostAccounts,MetaDataService 中有一个获取国家金融机构假期数据的 Web 服务 getFinacialAgencyHolidays,该 Web 服务明显和 getUserHostAccounts,getUserNonHostAccounts 不存在业务上相关性,因此不应该将它们纳入批处理。 3.尽量避免将存在依赖关系的多 Web 服务放入同一个批处理中 将多个存在依赖关系的多 Web 服务放入同一批处理中需要专门考虑、处理多 Web 服务彼此间的依赖关系,进而无法将方便的这些 Web 服务并发执行而不得不串行执行有依赖关系的 Web 服务,最悲观情况下批处理响应时间将是批处理中所有 Web 服务串行执行时间和。原则上即使批处理中 Web 服务间存在依赖关系,通过动态指定依赖关系也可以实现多 Web 服务的批处理调用。但是这样将大大增加批处理实现的技术复杂性,因此不建议如此操作。 4.多线程方式处理批处理 Web 服务请求 批处理模式在服务实现端一般通过多线程处理方法来并发处理多个 Web 服务调用请求。通过集中的解析器解析批处理模式请求,之后针对每一个 Web 服务调用会启动一个单独的线程来处理此 Web 请求,同时会有一个总的线程管理器来调度不同 Web 服务执行线程,监控线程执行进度等。在所有线程执行完成后汇总 Web 服务执行结果返回客户端。 ●批处理实现方式 批处理实现方式一般有两种:静态批处理模式,动态批处理模式: 静态批处理模式实现较为简单,但是相对缺乏灵活性。静态批处理的核心思想就是在已有 Web 服务的基础上通过组合封装的方式来得到批处理的目的。举例来说将系统中已有的 Web 服务请求结构组合成一个新的数据对象模型作为 Web 服务批处理请求结构,在客户端进行批处理调用时通过初始化批处理请求数据对象,并将特定的 Web 服务请求对象赋值给批处理请求对象属性的方式。同理在服务实现端在生成批处理响应数据对象时也是通过将具体 Web 服务的响应组合起来生成并返回客户端。 动态批处理模式实现较为复杂,但也能提供更大的操作灵活性。动态批处理模式一般需要应用采用 Java 反射 API 开发具有容器功能的批处理实现框架。客户端可以动态的向容器中增加 Web 服务调用请求,比方说客户端可以动态的将 addThirdPartyNonHostAccount,getUserPendingNotifications 两个 Web 服务加入到这个容器中然后发起一个框架提供的批处理 Web 服务调用请求。该批处理 Web 服务在实现端将解析容器并将其中的各个 Web 服务请求抽取解析并启动独立的线程来处理。 压缩 SOAP 当 Web Service SOAP 消息体比较大的时候,我们可以通过压缩 soap 来提高网络传输性能。通过 GZIP 压缩 SOAP 消息,得到二进制数据,然后把二进制数据作为附件传输。以前常规方法是把二进制数据 Base64 编码,但是 Base64 编码后的大小是二进制数据的 1.33 倍。辛苦压缩的,被 Base64 给抵消差不多了。是否可以直接传输二进制数据呢? JAX-WS 的 MTOM 是可以的,通过 HTTP 的 MIME 规范, SOAP message 可以字符,二进制混合。我们在 client 和 server 端各注册一个 handler 来处理压缩和解压。 由于压缩后的 SOAP 消息附件与消息体中的部分不是基于 MTOM 自动关联的,需要单独处理附件。在生成 client 端和 server 端代码的时候需要 enable MTOM。 Handler 具体代码在本文代码附件中, test.TestClientHanlder, test.TestServerHanlder。 写好了 handler 了之后还要为 service 注册 handler。 客户端 handler 样例代码如下: 客户端代码 public boolean handleMessage(MessageContext arg0) { SOAPMessageContext ct = (SOAPMessageContext) arg0; boolean isRequestFlag = (Boolean) arg0 .get(MessageContext.MESSAGE_OUTBOUND_PROPERTY); SOAPMessage msg = ct.getMessage(); if (isRequestFlag) { try { SOAPBody body = msg.getSOAPBody(); Node port = body.getChildNodes().item(0); String portContent = port.toString(); NodeList list = port.getChildNodes(); for (int i = 0; i < list.getLength(); i++) { port.removeChild(list.item(i)); } ByteArrayOutputStream outArr = new ByteArrayOutputStream(); GZIPOutputStream zip = new GZIPOutputStream(outArr); zip.write(portContent.getBytes()); zip.flush(); zip.close(); byte[] arr = outArr.toByteArray(); TestDataSource ds = new TestDataSource(arr); AttachmentPart attPart = msg.createAttachmentPart(); attPart.setDataHandler(new DataHandler(ds)); msg.addAttachmentPart(attPart); } catch (SOAPException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } return true; } Web 服务端 handler 样例代码如下: 服务端代码 public boolean handleMessage(MessageContext arg0) { SOAPMessageContext ct = (SOAPMessageContext) arg0; boolean isRequestFlag = (Boolean) arg0 .get(MessageContext.MESSAGE_OUTBOUND_PROPERTY); SOAPMessage msg = ct.getMessage(); if (!isRequestFlag) { try { Object obj = ct.get(“Attachments”); Attachments atts = (Attachments) obj; List list = atts.getContentIDList(); for (int i = 1; i < list.size(); i++) { String id = (String) list.get(i); DataHandler d = atts.getDataHandler(id); InputStream in = d.getInputStream(); ByteArrayOutputStream out = new ByteArrayOutputStream(); GZIPInputStream zip = new GZIPInputStream(in); byte[] arr = new byte[1024]; int n = 0; while ((n = zip.read(arr)) > 0) { out.write(arr, 0, n); } Document doc = DocumentBuilderFactory.newInstance() .newDocumentBuilder() .parse(new ByteArrayInputStream(out.toByteArray())); SOAPBody body = msg.getSOAPBody(); Node port = body.getChildNodes().item(0); port.appendChild(doc.getFirstChild().getFirstChild()); } } catch (SOAPException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); } catch (ParserConfigurationException e) { e.printStackTrace(); } } return true; } 在 web.xml 中 service-ref 部分添加 handler. Server 端 handler 也是同样添加。 配置代码 <handler-chains> <handler-chain> <handler> <handler-name>TestClientHandler</handler-name> <handler-class>test.TestClientHandler </handler-class> </handler> </handler-chain> </handler-chains> 结束语 以上三种解决方案是根据笔者的经验和分析,针对 Web 服务当前所面临的性能瓶颈进行提出的。并且,这几种解决方案在实际项目使用中都取得了比较好的效果。 综上所述, 在实际项目中,根据不同的需求采用上述方法中一个或者多个组合,可以使 Web 服务性能更加优化。 文章来源:伯乐在线

③ 有没有人知道哪个BI工具处理大数据的性能好,而且处理速度快

国外:tableau、PowerBI、QlikView
但是国外BI产品大多无法适应中国式复杂报表,本土化做的没有国内的好,而且对汉化程度也有限,如果不是英语水平很高,且有特殊需求建议你选择国货哦~
国内:ElephantBI、OurwayBI、 永洪BI、FineBI
1、ElephantBI:
ElephantBI 是企业大数据管理分析和商业智能平台,实时连接聚合企业所有数据,包括MySQL、PostgreSQL、Oracle Databas等数据库,HRM、CRM,ERP、OA等业务系统和本地excel文件。而且它的数据中心支持在线设计和编辑。
ElephantBI采用先进的敏捷BI模式,反应灵敏,可以深入挖掘大数据价值,更快获得全局洞察,助力企业精准制定数据支持的商业决策。
2、OurwayBI
奥威BI 商业智能BI工具,能集成用友/金蝶/SAP/鼎捷ERP的商业智能BI数据可视化分析软件,真正做到零开发,安装即可用。将AI技术融入到产品中,除此之外,还包括百货商超、医药连锁、服装连锁、房地产、酒店连锁、生产制造等10+行业标准数据可视化BI解决方案。(引用自其官网)
3、永洪BI
国内的老牌BI产品。把大数据分析所需的产品功能全部融入一个平台下,进行统一管控。
为各种规模的企业提供灵活易用的全业务链的大数据分析解决方案,但永洪BI个人感觉劣势在产品的视觉、定制以及行业化方案上,比较不实用。
4、FineBI
是国内名气比较大的一款BI 产品,采用B/S架构,在浏览器端对数据进行分析和查看,以及系统平台的管理。更像是一款企业数据管理应用。而且使用的时候需要搭配FineReport,性价比方面待考量。

④ 如何为大数据处理构建高性能Hadoop集群

越来越多的企业开始使用Hadoop来对大数据进行处理分析,但Hadoop集群的整体性能却取决于CPU、内存、网络以及存储之间的性能平衡。而在这篇文章中,我们将探讨如何为Hadoop集群构建高性能网络,这是对大数据进行处理分析的关键所在。

关于Hadoop

“大数据”是松散的数据集合,海量数据的不断增长迫使企业需要通过一种新的方式去管理。大数据是结构化或非结构化的多种数据类型的大集合。而 Hadoop则是Apache发布的软件架构,用以分析PB级的非结构化数据,并将其转换成其他应用程序可管理处理的形式。Hadoop使得对大数据处理成为可能,并能够帮助企业可从客户数据之中发掘新的商机。如果能够进行实时处理或者接近实时处理,那么其将为许多行业的用户提供强大的优势。

Hadoop是基于谷歌的MapRece和分布式文件系统原理而专门设计的,其可在通用的网络和服务器硬件上进行部署,并使之成为计算集群。

Hadoop模型

Hadoop的工作原理是将一个非常大的数据集切割成一个较小的单元,以能够被查询处理。同一个节点的计算资源用于并行查询处理。当任务处理结束后,其处理结果将被汇总并向用户报告,或者通过业务分析应用程序处理以进行进一步分析或仪表盘显示。

为了最大限度地减少处理时间,在此并行架构中,Hadoop“moves jobs to data”,而非像传统模式那样“moving data to jobs”。这就意味着,一旦数据存储在分布式系统之中,在实时搜索、查询或数据挖掘等操作时,如访问本地数据,在数据处理过程中,各节点之间将只有一个本地查询结果,这样可降低运营开支。

Hadoop的最大特点在于其内置的并行处理和线性扩展能力,提供对大型数据集查询并生成结果。在结构上,Hadoop主要有两个部分:

Hadoop分布式文件系统(HDFS)将数据文件切割成数据块,并将其存储在多个节点之内,以提供容错性和高性能。除了大量的多个节点的聚合I/O,性能通常取决于数据块的大小——如128MB。而传统的Linux系统下的较为典型的数据块大小可能是4KB。

MapRece引擎通过JobTracker节点接受来自客户端的分析工作,采用“分而治之”的方式来将一个较大的任务分解成多个较小的任务,然后分配给各个TaskTrack节点,并采用主站/从站的分布方式(具体如下图所示):

Hadoop系统有三个主要的功能节点:客户机、主机和从机。客户机将数据文件注入到系统之中,从系统中检索结果,以及通过系统的主机节点提交分析工作等。主机节点有两个基本作用:管理分布式文件系统中各节点以及从机节点的数据存储,以及管理Map/Rece从机节点的任务跟踪分配和任务处理。数据存储和分析处理的实际性能取决于运行数据节点和任务跟踪器的从机节点性能,而这些从机节点则由各自的主机节点负责沟通和控制。从节点通常有多个数据块,并在作业期间被分配处理多个任务。

部署实施Hadoop

各个节点硬件的主要要求是市县计算、内存、网络以及存储等四个资源的平衡。目前常用的并被誉为“最佳”的解决方案是采用相对较低成本的旧有硬件,部署足够多的服务器以应对任何可能的故障,并部署一个完整机架的系统。

Hadoop模式要求服务器与SAN或者NAS进行直接连接存储(DAS)。采用DAS主要有三个原因,在标准化配置的集群中,节点的缩放数以千计,随着存储系统的成本、低延迟性以及存储容量需求不断提高,简单配置和部署个主要的考虑因素。随着极具成本效益的1TB磁盘的普及,可使大型集群的TB级数据存储在DAS之上。这解决了传统方法利用SAN进行部署极其昂贵的困境,如此多的存储将使得Hadoop和数据存储出现一个令人望而却步的起始成本。有相当大一部分用户的Hadoop部署构建都是采用大容量的DAS服务器,其中数据节点大约1-2TB,名称控制节点大约在1-5TB之间,具体如下图所示:

来源:Brad Hedlund, DELL公司

对于大多数的Hadoop部署来说,基础设施的其他影响因素可能还取决于配件,如服务器内置的千兆以太网卡或千兆以太网交换机。上一代的CPU和内存等硬件的选择,可根据符合成本模型的需求,采用匹配数据传输速率要求的千兆以太网接口来构建低成本的解决方案。采用万兆以太网来部署Hadoop也是相当不错的选择。

万兆以太网对Hadoop集群的作用

千兆以太网的性能是制约Hadoop系统整体性能的一个主要因素。使用较大的数据块大小,例如,如果一个节点发生故障(甚至更糟,整个机架宕机),那么整个集群就需要对TB级的数据进行恢复,这就有可能会超过千兆以太网所能提供的网络带宽,进而使得整个集群性能下降。在拥有成千上万个节点的大型集群中,当运行某些需要数据节点之间需要进行中间结果再分配的工作负载时,在系统正常运行过程中,某个千兆以太网设备可能会遭遇网络拥堵。

每一个Hadoop数据节点的目标都必须实现CPU、内存、存储和网络资源的平衡。如果四者之中的任意一个性能相对较差的话,那么系统的潜在处理能力都有可能遭遇瓶颈。添加更多的CPU和内存组建,将影响存储和网络的平衡,如何使Hadoop集群节点在处理数据时更有效率,减少结果,并在Hadoop集群内添加更多的HDFS存储节点。

幸运的是,影响CPU和内存发展的摩尔定律,同样也正影响着存储技术(TB级容量的磁盘)和以太网技术(从千兆向万兆甚至更高)的发展。预先升级系统组件(如多核处理器、每节点5-20TB容量的磁盘,64-128GB内存),万兆以太网卡和交换机等网络组件是重新平衡资源最合理的选择。万兆以太网将在Hadoop集群证明其价值,高水平的网络利用率将带来效益更高的带宽。下图展示了Hadoop集群与万兆以太网的连接:

许多企业级数据中心已经迁移到10GbE网络,以实现服务器整合和服务器虚拟化。随着越来越多企业开始部署Hadoop,他们发现他们完全不必要大批量部署1U的机架服务器,而是部署更少,但性能更高的服务器,以方便扩展每个数据节点所能运行的任务数量。很多企业选择部署2U或4U的服务器(如戴尔 PowerEdge C2100),每个节点大约12-16个核心以及24TB存储容量。在这种环境下的合理选择是充分利用已经部署的10GbE设备和Hadoop集群中的 10GbE网卡。

在日常的IT环境中构建一个简单的Hadoop集群。可以肯定的是,尽管有很多细节需要微调,但其基础是非常简单的。构建一个计算、存储和网络资源平衡的系统,对项目的成功至关重要。对于拥有密集节点的Hadoop集群而言,万兆以太网能够为计算和存储资源扩展提供与之相匹配的能力,且不会导致系统整体性能下降。

⑤ FineBI的大数据处理性能怎么样

帆软抄的产品有自成一套的袭系统,特别是对于中国式的报表,其处理能力还是相当不错的。但是要说到处理大数据的能力,还是稍有欠缺,且FineBI必须由理解业务的用户进行操作,才能对数据进行分析。其实说到大数据处理性能,推荐一款叫Datafocus的工具,能连接多样数据库,处理庞大的数据量,秒级响应。

⑥ 如何进行大数据分析及处理

探码科技大数据分析及处理过程


聚云化雨的处理方式

⑦ 大数据需突破存储、性能瓶颈

大数据需突破存储、性能瓶颈
大数据的核心是大量数据的分析能力
在亟待优先解决的IT问题千头万绪的情况下,在大数据价值日益凸显的背景下,企业需要首先提高数据中心的成本效益,以满足不断变化的业务需求,加大大数据的应用和相关基础设施的构建,满足对于大数据环境下数据中心高性能、高可扩展性、高安全性和高可用性的要求。
大数据核心分析能力需要强大的后台支撑
所谓大数据,最为核心的就要看对于大量数据的核心分析能力。但是,大数据核心分析能力的影响不仅存在于数据管理策略、数据可视化与分析能力等方面,从根本上也对数据中心IT基础设施架构甚至机房设计原则等提出了更高的要求。为了达到快速高效的处理大量数据的能力,整个IT基础设施需要进行整体优化设计,应充分考量后台数据中心的高节能性、高稳定性、高安全性、高可扩展性、高度冗余,基础设施建设这五个方面,同时更需要解决大规模节点数的数据中心的部署、高速内部网络的构建、机房散热以及强大的数据备份等问题。
大数据离不开效益型数据中心的构建
深入了解大数据应用的数据中心经济学对于提高企业的实际利润率,具有十分重要的价值。数据中心经济学能够提供一个框架,帮助IT管理者认识存储的总体拥有成本(TCO)的长期价值影响。利用数据中心经济学确定存储决策、计算资源的准确支出,将能够帮助企业系统化地持续降低成本,并更好的支持企业采用大数据技术。
大数据更需要突破存储、性能瓶颈
大数据应用除了数据规模巨大之外,还意味着拥有庞大的文件数量。因此如何管理文件系统层累积的元数据是一个难题,处理不当的话会影响到系统的扩展能力和性能,而传统的NAS系统就存在这一瓶颈。所幸的是,基于对象的存储架构就不存在这个问题,它可以在一个系统中管理十亿级别的文件数量,而且还不会像传统存储一样遭遇元数据管理的困扰。基于对象的存储系统还具有广域扩展能力,可以在多个不同的地点部署并组成一个跨区域的大型存储基础架构。此外,大数据应用还存在实时性的问题,特别是涉及到与网上交易或者金融类相关的应用。

⑧ 如何打造高性能大数据分析平台

大数据分析系统作为一个关键性的系统在各个公司迅速崛起。但是这种海量规模的数据带来了前所未有的性能挑战。同时,如果大数据分析系统无法在第一时间为运营决策提供关键数据,那么这样的大数据分析系统一文不值。本文将从技术无关的角度讨论一些提高性能的方法。下面我们将讨论一些能够应用在大数据分析系统不同阶段的技巧和准则(例如数据提取,数据清洗,处理,存储,以及介绍)。本文应作为一个通用准则,以确保最终的大数据分析平台能满足性能要求。

1. 大数据是什么?

大数据是最近IT界最常用的术语之一。然而对大数据的定义也不尽相同,所有已知的论点例如结构化的和非结构化、大规模的数据等等都不够完整。大数据系统通常被认为具有数据的五个主要特征,通常称为数据的5 Vs。分别是大规模,多样性,高效性、准确性和价值性。
互联网是个神奇的大网,大数据开发和软件定制也是一种模式,这里提供最详细的报价,如果真的想做,可以来这里,这个手技的开始数字是一八七中间的是三儿零最后的是一四二五零,按照顺序组合起来就可以找到,想说的是,除非想做或者了解这方面的内容,如果只是凑热闹的话,就不要来了。

据Gartner称,大规模可以被定义为“在本(地)机数据采集和处理技术能力不足以为用户带来商业价值。当现有的技术能够针对性的进行改造后来处理这种规模的数据就可以说是一个成功的大数据解决方案。

这种大规模的数据没将不仅仅是来自于现有的数据源,同时也会来自于一些新兴的数据源,例如常规(手持、工业)设备,日志,汽车等,当然包括结构化的和非结构化的数据。

据Gartner称,多样性可以定义如下:“高度变异的信息资产,在生产和消费时不进行严格定义的包括多种形式、类型和结构的组合。同时还包括以前的历史数据,由于技术的变革历史数据同样也成为多样性数据之一 “。

高效性可以被定义为来自不同源的数据到达的速度。从各种设备,传感器和其他有组织和无组织的数据流都在不断进入IT系统。由此,实时分析和对于该数据的解释(展示)的能力也应该随之增加。

根据Gartner,高效性可以被定义如下:“高速的数据流I/O(生产和消费),但主要聚焦在一个数据集内或多个数据集之间的数据生产的速率可变上”。

准确性,或真实性或叫做精度是数据的另一个重要组成方面。要做出正确的商业决策,当务之急是在数据上进行的所有分析必须是正确和准确(精确)的。

大数据系统可以提供巨大的商业价值。像电信,金融,电子商务,社交媒体等,已经认识到他们的数据是一个潜在的巨大的商机。他们可以预测用户行为,并推荐相关产品,提供危险交易预警服务,等等。

与其他IT系统一样,性能是大数据系统获得成功的关键。本文的中心主旨是要说明如何让大数据系统保证其性能。

2. 大数据系统应包含的功能模块

大数据系统应该包含的功能模块,首先是能够从多种数据源获取数据的功能,数据的预处理(例如,清洗,验证等),存储数据,数据处理、数据分析等(例如做预测分析??,生成在线使用建议等等),最后呈现和可视化的总结、汇总结果。

下图描述了大数据系统的这些高层次的组件

描述本节的其余部分简要说明了每个组分,如图1。

2.1 各种各样的数据源当今的IT生态系统,需要对各种不同种类来源的数据进行分析。这些来源可能是从在线Web应用程序,批量上传或feed,流媒体直播数据,来自工业、手持、家居传感的任何东西等等。

显然从不同数据源获取的数据具有不同的格式、使用不同的协议。例如,在线的Web应用程序可能会使用SOAP / XML格式通过HTTP发送数据,feed可能会来自于CSV文件,其他设备则可能使用MQTT通信协议。

由于这些单独的系统的性能是不在大数据系统的控制范围之内,并且通常这些系统都是外部应用程序,由第三方供应商或团队提供并维护,所以本文将不会在深入到这些系统的性能分析中去。

2.2 数据采集第一步,获取数据。这个过程包括分析,验证,清洗,转换,去重,然后存到适合你们公司的一个持久化设备中(硬盘、存储、云等)。

在下面的章节中,本文将重点介绍一些关于如何获取数据方面的非常重要的技巧。请注意,本文将不讨论各种数据采集技术的优缺点。

2.3 存储数据第二步,一旦数据进入大数据系统,清洗,并转化为所需格式时,这些过程都将在数据存储到一个合适的持久化层中进行。

在下面的章节中,本文将介绍一些存储方面的最佳实践(包括逻辑上和物理上)。在本文结尾也会讨论一部分涉及数据安全方面的问题。

2.4 数据处理和分析第三步,在这一阶段中的一部分干净数据是去规范化的,包括对一些相关的数据集的数据进行一些排序,在规定的时间间隔内进行数据结果归集,执行机器学习算法,预测分析等。

在下面的章节中,本文将针对大数据系统性能优化介绍一些进行数据处理和分析的最佳实践。

2.5 数据的可视化和数据展示最后一个步骤,展示经过各个不同分析算法处理过的数据结果。该步骤包括从预先计算汇总的结果(或其他类似数据集)中的读取和用一种友好界面或者表格(图表等等)的形式展示出来。这样便于对于数据分析结果的理解。

3. 数据采集中的性能技巧

数据采集是各种来自不同数据源的数据进入大数据系统的第一步。这个步骤的性能将会直接决定在一个给定的时间段内大数据系统能够处理的数据量的能力。

数据采集??过程基于对该系统的个性化需求,但一些常用执行的步骤是 - 解析传入数据,做必要的验证,数据清晰,例如数据去重,转换格式,并将其存储到某种持久层。

涉及数据采集过程的逻辑步骤示如下图所示:

下面是一些性能方面的技巧:

来自不同数据源的传输应该是异步的。可以使用文件来传输、或者使用面向消息的(MoM)中间件来实现。由于数据异步传输,所以数据采集过程的吞吐量可以大大高于大数据系统的处理能力。 异步数据传输同样可以在大数据系统和不同的数据源之间进行解耦。大数据基础架构设计使得其很容易进行动态伸缩,数据采集的峰值流量对于大数据系统来说算是安全的。

如果数据是直接从一些外部数据库中抽取的,确保拉取数据是使用批量的方式。

如果数据是从feed file解析,请务必使用合适的解析器。例如,如果从一个XML文件中读取也有不同的解析器像JDOM,SAX,DOM等。类似地,对于CSV,JSON和其它这样的格式,多个解析器和API是可供选择。选择能够符合需求的性能最好的。

优先使用内置的验证解决方案。大多数解析/验证工作流程的通常运行在服务器环境(ESB /应用服务器)中。大部分的场景基本上都有现成的标准校验工具。在大多数的情况下,这些标准的现成的工具一般来说要比你自己开发的工具性能要好很多。

类似地,如果数据XML格式的,优先使用XML(XSD)用于验证。

即使解析器或者校等流程使用自定义的脚本来完成,例如使用java优先还是应该使用内置的函数库或者开发框架。在大多数的情况下通常会比你开发任何自定义代码快得多。

尽量提前滤掉无效数据,以便后续的处理流程都不用在无效数据上浪费过多的计算能力。

大多数系统处理无效数据的做法通常是存放在一个专门的表中,请在系统建设之初考虑这部分的数据库存储和其他额外的存储开销。

如果来自数据源的数据需要清洗,例如去掉一些不需要的信息,尽量保持所有数据源的抽取程序版本一致,确保一次处理的是一个大批量的数据,而不是一条记录一条记录的来处理。一般来说数据清洗需要进行表关联。数据清洗中需要用到的静态数据关联一次,并且一次处理一个很大的批量就能够大幅提高数据处理效率。

数据去重非常重要这个过程决定了主键的是由哪些字段构成。通常主键都是时间戳或者id等可以追加的类型。一般情况下,每条记录都可能根据主键进行索引来更新,所以最好能够让主键简单一些,以保证在更新的时候检索的性能。

来自多个源接收的数据可以是不同的格式。有时,需要进行数据移植,使接收到的数据从多种格式转化成一种或一组标准格式。

和解析过程一样,我们建议使用内置的工具,相比于你自己从零开发的工具性能会提高很多。

数据移植的过程一般是数据处理过程中最复杂、最紧急、消耗资源最多的一步。因此,确保在这一过程中尽可能多的使用并行计算。

一旦所有的数据采集的上述活动完成后,转换后的数据通常存储在某些持久层,以便以后分析处理,综述,聚合等使用。

多种技术解决方案的存在是为了处理这种持久(RDBMS,NoSQL的分布式文件系统,如Hadoop和等)。

谨慎选择一个能够最大限度的满足需求的解决方案。

4. 数据存储中的性能技巧

一旦所有的数据采集步骤完成后,数据将进入持久层。

在本节中将讨论一些与数据数据存储性能相关的技巧包括物理存储优化和逻辑存储结构(数据模型)。这些技巧适用于所有的数据处理过程,无论是一些解析函数生的或最终输出的数据还是预计算的汇总数据等。

首先选择数据范式。您对数据的建模方式对性能有直接的影响,例如像数据冗余,磁盘存储容量等方面。对于一些简单的文件导入数据库中的场景,你也许需要保持数据原始的格式,对于另外一些场景,如执行一些分析计算聚集等,你可能不需要将数据范式化。

大多数的大数据系统使用NoSQL数据库替代RDBMS处理数据。

不同的NoSQL数据库适用不同的场景,一部分在select时性能更好,有些是在插入或者更新性能更好。

数据库分为行存储和列存储。

具体的数据库选型依赖于你的具体需求(例如,你的应用程序的数据库读写比)。

同样每个数据库都会根据不同的配置从而控制这些数据库用于数据库复制备份或者严格保持数据一致性?这些设置会直接影响数据库性能。在数据库技术选型前一定要注意。

压缩率、缓冲池、超时的大小,和缓存的对于不同的NoSQL数据库来说配置都是不同的,同时对数据库性能的影响也是不一样的。

数据Sharding和分区是这些数据库的另一个非常重要的功能。数据Sharding的方式能够对系统的性能产生巨大的影响,所以在数据Sharding和分区时请谨慎选择。

并非所有的NoSQL数据库都内置了支持连接,排序,汇总,过滤器,索引等。

如果有需要还是建议使用内置的类似功能,因为自己开发的还是不灵。

NoSQLs内置了压缩、编解码器和数据移植工具。如果这些可以满足您的部分需求,那么优先选择使用这些内置的功能。这些工具可以执行各种各样的任务,如格式转换、压缩数据等,使用内置的工具不仅能够带来更好的性能还可以降低网络的使用率。

许多NoSQL数据库支持多种类型的文件系统。其中包括本地文件系统,分布式文件系统,甚至基于云的存储解决方案。

如果在交互式需求上有严格的要求,否则还是尽量尝试使用NoSQL本地(内置)文件系统(例如HBase 使用HDFS)。

这是因为,如果使用一些外部文件系统/格式,则需要对数据进行相应的编解码/数据移植。它将在整个读/写过程中增加原本不必要的冗余处理。

大数据系统的数据模型一般来说需要根据需求用例来综合设计。与此形成鲜明对比的是RDMBS数据建模技术基本都是设计成为一个通用的模型,用外键和表之间的关系用来描述数据实体与现实世界之间的交互。

在硬件一级,本地RAID模式也许不太适用。请考虑使用SAN存储。

5. 数据处理分析中的性能技巧

数据处理和分析是一个大数据系统的核心。像聚合,预测,聚集,和其它这样的逻辑操作都需要在这一步完成。

本节讨论一些数据处理性能方面的技巧。需要注意的是大数据系统架构有两个组成部分,实时数据流处理和批量数据处理。本节涵盖数据处理的各个方面。

在细节评估和数据格式和模型后选择适当的数据处理框架。

其中一些框架适用于批量数据处理,而另外一些适用于实时数据处理。

同样一些框架使用内存模式,另外一些是基于磁盘io处理模式。

有些框架擅长高度并行计算,这样能够大大提高数据效率。

基于内存的框架性能明显优于基于磁盘io的框架,但是同时成本也可想而知。

概括地说,当务之急是选择一个能够满足需求的框架。否则就有可能既无法满足功能需求也无法满足非功能需求,当然也包括性能需求。

一些这些框架将数据划分成较小的块。这些小数据块由各个作业独立处理。协调器管理所有这些独立的子作业?在数据分块是需要当心。

该数据快越小,就会产生越多的作业,这样就会增加系统初始化作业和清理作业的负担。

如果数据快太大,数据传输可能需要很长时间才能完成。这也可能导致资源利用不均衡,长时间在一台服务器上运行一个大作业,而其他服务器就会等待。

不要忘了查看一个任务的作业总数。在必要时调整这个参数。

最好实时监控数据块的传输。在本机机型io的效率会更高,这么做也会带来一个副作用就是需要将数据块的冗余参数提高(一般hadoop默认是3份)这样又会反作用使得系统性能下降。

此外,实时数据流需要与批量数据处理的结果进行合并。设计系统时尽量减少对其他作业的影响。

大多数情况下同一数据集需要经过多次计算。这种情况可能是由于数据抓取等初始步骤就有报错,或者某些业务流程发生变化,值得一提的是旧数据也是如此。设计系统时需要注意这个地方的容错。

这意味着你可能需要存储原始数据的时间较长,因此需要更多的存储。

数据结果输出后应该保存成用户期望看到的格式。例如,如果最终的结果是用户要求按照每周的时间序列汇总输出,那么你就要将结果以周为单位进行汇总保存。

为了达到这个目标,大数据系统的数据库建模就要在满足用例的前提下进行。例如,大数据系统经常会输出一些结构化的数据表,这样在展示输出上就有很大的优势。

更常见的是,这可能会这将会让用户感觉到性能问题。例如用户只需要上周的数据汇总结果,如果在数据规模较大的时候按照每周来汇总数据,这样就会大大降低数据处理能力。

一些框架提供了大数据查询懒评价功能。在数据没有在其他地方被使用时效果不错。

实时监控系统的性能,这样能够帮助你预估作业的完成时间。

6. 数据可视化和展示中的性能技巧

精心设计的高性能大数据系统通过对数据的深入分析,能够提供有价值战略指导。这就是可视化的用武之地。良好的可视化帮助用户获取数据的多维度透视视图。

需要注意的是传统的BI和报告工具,或用于构建自定义报表系统无法大规模扩展满足大数据系统的可视化需求。同时,许多COTS可视化工具现已上市。

本文将不会对这些个别工具如何进行调节,而是聚焦在一些通用的技术,帮助您能打造可视化层。

确保可视化层显示的数据都是从最后的汇总输出表中取得的数据。这些总结表可以根据时间短进行汇总,建议使用分类或者用例进行汇总。这么做可以避免直接从可视化层读取整个原始数据。

这不仅最大限度地减少数据传输,而且当用户在线查看在报告时还有助于避免性能卡顿问题。

重分利用大化可视化工具的缓存。缓存可以对可视化层的整体性能产生非常不错的影响。

物化视图是可以提高性能的另一个重要的技术。

大部分可视化工具允许通过增加线程数来提高请求响应的速度。如果资源足够、访问量较大那么这是提高系统性能的好办法。

尽量提前将数据进行预处理,如果一些数据必须在运行时计算请将运行时计算简化到最小。

可视化工具可以按照各种各样的展示方法对应不同的读取策略。其中一些是离线模式、提取模式或者在线连接模式。每种服务模式都是针对不同场景设计的。

同样,一些工具可以进行增量数据同步。这最大限度地减少了数据传输,并将整个可视化过程固化下来。

保持像图形,图表等使用最小的尺寸。

大多数可视化框架和工具的使用可缩放矢量图形(SVG)。使用SVG复杂的布局可能会产生严重的性能影响。

7. 数据安全以及对于性能的影响

像任何IT系统一样安全性要求也对大数据系统的性能有很大的影响。在本节中,我们讨论一下安全对大数据平台性能的影响。

- 首先确保所有的数据源都是经过认证的。即使所有的数据源都是安全的,并且没有针对安全方面的需求,那么你可以灵活设计一个安全模块来配置实现。

- 数据进过一次认证,那么就不要进行二次认证。如果实在需要进行二次认证,那么使用一些类似于token的技术保存下来以便后续继续使用。这将节省数据一遍遍认证的开销。

- 您可能需要支持其他的认证方式,例如基于PKI解决方案或Kerberos。每一个都有不同的性能指标,在最终方案确定前需要将其考虑进去。

- 通常情况下数据压缩后进入大数据处理系统。这么做好处非常明显不细说。

- 针对不同算法的效率、对cpu的使用量你需要进行比较来选出一个传输量、cpu使用量等方面均衡的压缩算法。

- 同样,评估加密逻辑和算法,然后再选择。

- 明智的做法是敏感信息始终进行限制。

- 在审计跟踪表或登录时您可能需要维护记录或类似的访问,更新等不同的活动记录。这可能需要根据不同的监管策略和用户需求个性化的进行设计和修改。

- 注意,这种需求不仅增加了数据处理的复杂度,但会增加存储成本。

- 尽量使用下层提供的安全技术,例如操作系统、数据库等。这些安全解决方案会比你自己设计开发性能要好很多。

8. 总结

本文介绍了各种性能方面的技巧,这些技术性的知道可以作为打造大数据分析平台的一般准则。大数据分析平台非常复杂,为了满足这种类型系统的性能需求,需要我们从开始建设的时候进行考量。

本文介绍的技术准则可以用在大数据平台建设的各个不同阶段,包括安全如何影响大数据分析平台的性能。

阅读全文

与大数据处理性能相关的资料

热点内容
数据标准化是怎么做的 浏览:277
网络共享看不到本机 浏览:27
js怎么实现树 浏览:679
java输出流缓冲区内容清除 浏览:823
广告软件下载的app在哪里 浏览:242
联通和电信的用户名和密码 浏览:630
如何装linux双系统 浏览:816
wiiu文件夹游戏怎么转格式 浏览:350
iphone5文稿与数据怎么删除 浏览:145
java匿名函数参数 浏览:215
excel怎么将csv文件内容分列 浏览:550
文件路径不转义字符 浏览:285
怎样使用手机锁屏密码 浏览:802
如何将pdf文件规格缩小 浏览:421
魔兽世界70治疗升级 浏览:103
linuxarm线程数量 浏览:880
数据库的重要性是什么 浏览:881
toolboxjs安装 浏览:85
安卓3g上网卡代码 浏览:306
vuejsjs数据绑定 浏览:323

友情链接