如何在对已有数据的硬盘进行重新分区的EAI架构下进行大数据量的传输

前几篇文章都是根据自己所见所知在前人的基础上加以整合,对大数据概念有了初步的了解接下来的四篇文章,抛开大数据的概念与基本知识进入核心。我们从:數据采集、数据存储、数据管理、数据分析与挖掘四个方面讨论大数据在实际应用中涉及的技术与知识点

1对现有数据库管理技术的挑战

2经典数据库技术并没有考虑数据的多类别(variety)、SQL(结构化数据查询语言),在设计的一开始是没有考虑到非结构化数据的存储问題

3实时性技术的挑战:一般而言,传统数据仓库系统BI应用,对处理时间的要求并不高因此这类应用通过建模,运行1-2天获得结果依嘫没什么问题但实时处理的要求,是区别大数据应用和传统数据仓库技术、BI技术的关键差别之一

4网络架构、数据中心、运维的挑战:随着每天创建的数据量爆炸性的增长,就数据保存来说我们能改进的技术却不大,而数据丢失的可能性却不断增加如此庞大的数据量存储就是首先面临的非常严峻的问题,硬件的更新速速将是大数据发展的基石但效果确实不甚理想。

1数据处理:自然语言处理技术(NLP)

2统计和分析:A/B testtop N排行榜、地域占比、文本情感分析

3数据挖掘:关联规则分析、分类、聚类

4、模型预测:预测模型、机器学习、建模仿真

1结构化数据:海量数据的查询、统计、更新等操作效率低

2非结构化数据:图片、视频、wordPDFPPT等文件存储、不利于检索查询和存储

3半结构化数据:转换为结构化数据存储、按照非结构化存储

1云计算的模式是业务模式,本质是数据处理技术

2数据是资产云为數据资产提供存储、访问和计算

3当前云计算更偏重海量存储和计算以及提供的云服务运行云应用。但是缺乏盘活数据资产的能力挖掘价值性信息和预测性分析,为国家、企业、个人提供决策方案和服务是大数据核心议题,也是云计算的最终方向

       这里也不多涉及這方面的概念,在接下来的几篇文章中会对下图中相关的部分(主要介绍PaaS模块中涉及的部分)以及上面提及的技术挑战和相关技术的介紹。

数据存储:关系数据库、NoSqlSQL

数据管理:(基础架构支持)云存储、分布式文件系统

数据分析与挖掘:(结果展现)数据的可视化

本攵章的目的不是为了让大家对ETL的详细过程有彻底的了解。只需要知道这是数据处理的第一步,一切的开端

       这里不过多的说数据采集嘚过程,可以简单的理解:有数据库就会有数据

       在数据挖掘的范畴了,数据清洗的前期过程可简单的认为就是ETL的过程。ETL的发展过程伴隨着数据挖掘至今其相关技术也已非常成熟。这里我们也不过多的探讨ETL过程日后如有涉及,在细分

ETL(extract提取、transform转换、load加载)。ETL负责将汾散的、异构数据源中的数据如关系数据、平面数据文件等抽取到临时中间层后进行清洗、转换、集成,最后加载到数据仓库数据集市中成为联机分析处理数据挖掘提供决策支持的数据

ETL是构建数据仓库的重要的一环用户从数据源抽取所需的数据,经过数据清洗最终按照预先定义好的数据仓库模型将数据加载到数据仓库中其定义域来源也不下于十几年,技术发展也应相当成熟可乍眼一看,似乎并没有什么技术可言也没有什么深奥之处,但在实际的项目中却常常在这个环节上耗费太多的人力,而在后期的维护上往往哽费脑筋。导致上面的原因往往是在项目初期没有正确的估计ETL的工作,没有认真的考虑其与工具支撑有很大的关系

在做ETL产品选型的时候,任然必不可少的要面临四点(成本、人员经验、案例和技术支持)来考量在做ETL的过程中,也随之产生于一些ETL工具如Datastage、Powercenter、ETLAutomation。而在实際ETL工具应用的对比上对元数据的支持对数据质量的支持维护的方便性、定制开发功能的支持等方面是我们选择的切入点。一个项目从数据源到最终目标表,多则达上百个ETL过程少则也十几个。这些过程之间的依赖关系出错控制以及恢复的流程处理都是工具需要偅点考虑。这里不再多讨论具体应用再具体说明。

在整个数据仓库的构建中ETL工作占整个工作的50%-70%。下面有人给出团队之间的ETL过程是如何實现的在面临耗费绝大时间的分析过程中,要求第一点就是:团队协作性要好ETL包含E,TL还有日志的控制数据模型原数据验证数據质量等等方面

例如我们要整合一个企业亚太区的数据,但是每个国家都有自己的数据源有的是ERP,有的是Access而且数据库都不一样,好偠考虑网络的性能问题如果直接用ODBC去连接两地的数据源,这样的做法很显然是不合理的因为网络不好,经常连接很容易数据库链接鈈能释放导致死机。如果我们在各地区的服务器放置一个数据导出为access或者flat file的程序这样文件就比较方便的通过FTP的方式进行传输。

下面我们指出上述案例需要的几项工作:
      1、有人写一个通用的数据导出工具可以用java,可以用脚本或其他的工具,总之要通用可以通过不同的腳本文件来控制,使各地区的不同数据库导出的文件格式是一样的而且还可以实现并行操作。
      2、有人写FTP的程序可以用bat,可以用ETL工具鈳以用其他的方式,总之要准确而且方便调用和控制。

这里我们简述ETL的过程:主要从E、T、L和异常处理简单的说明这里不再细说明。如果用到我想大家一定会有更深的调研。

      ·数据补缺:对空数据、缺失数据进行数据补缺操作无法处理的做标记。

      ·格式规范化:将源數据抽取的数据格式转换成为便于进入仓库处理的目标数据格式

      ·主外键约束:通过建立主外键约束,对非法数据进行数据替换或导出箌错误文件重新处理

      ·数据合并:多用表关联实现,大小表关联用lookup大大表相交用join(每个字段家索引,保证关联查询的效率)

      ·时间戳方式:在业务表中统一添加字段作为时间戳当OLAP系统更新修改业务数据时,同时修改时间戳字段值

      ·日志表方式:在OLAP系统中添加日志表,业务数据发生变化时更新维护日志表内容。

      · 全表对比方式:抽取所有源数据在更新目标表之前先根据主键和字段进行数据比对,囿更新的进行update或insert

      1、将错误信息单独输出,继续执行ETL错误数据修改后再单独加载。中断ETL修改后重新执行ETL。原则:最大限度接收数据

      2、对于网络中断等外部原因造成的异常,设定尝试次数或尝试时间超数或超时后,由外部人员手工干预

      3、 例如源数据结构改变、接口妀变等异常状况,应进行同步后在装载数据。

       在这里涉及到ETL中我们只要有一个清晰的认识,它不是想象中的简单一蹴而就在实际的過程,你可以会遇到各种各样的问题甚至是部门之间沟通的问题。在给它定义到占据整个数据挖掘或分析的过程中50%-70%是不足为过的

1. Redis默认不是以守护进程的方式运行可以通过该配置项修改,使用yes启用守护进程

3. 指定Redis监听端口默认端口为6379,作者在自己的一篇博文中解释了为什么选用6379作为默认端口因為6379在手机按键上MERZ对应的号码,而MERZ取自意大利歌女Alessia Merz的名字

5.当 客户端闲置多长时间后关闭连接如果指定为0,表示关闭该功能

7. 日志记录方式默认为标准输出,如果配置Redis为守护进程方式运行而这里又配置为日志记录方式为标准输出,则日志将会发送给/dev/null

8. 设置数据库的数量默认數据库为0,可以使用SELECT <dbid>命令在连接上指定数据库id

9. 指定在多长时间内有多少次更新操作,就将数据同步到数据文件可以多个条件配合

  Redis默认配置文件中提供了三个条件:

  分别表示900秒(15分钟)内有1个更改,300秒(5分钟)内有10个更改以及60秒内有10000个更改

10. 指定存储至本地数据库时是否壓缩数据,默认为yesRedis采用LZF压缩,如果为了节省CPU时间可以关闭该选项,但会导致数据库文件变的巨大

11. 指定本地数据库文件名默认值为dump.rdb

12. 指萣本地数据库存放目录

13. 设置当本机为slav服务时,设置master服务的IP地址及端口在Redis启动时,它会自动从master进行数据同步

15. 设置Redis连接密码如果配置了连接密码,客户端在连接Redis时需要通过AUTH <password>命令提供密码默认关闭

16. 设置同一时间最大客户端连接数,默认无限制Redis可以同时打开的客户端连接数為Redis进程可以打开的最大文件描述符数,如果设置 maxclients 0表示不作限制。当客户端连接数到达限制时Redis会关闭新的连接并向客户端返回max number of clients reached错误信息

17. 指定Redis最大内存限制,Redis在启动时会把数据加载到内存中达到最大内存后,Redis会先尝试清除已到期或即将到期的Key当此方法处理 后,仍然到达朂大内存设置将无法再进行写入操作,但仍然可以进行读取操作Redis新的vm机制,会把Key存放内存Value会存放在swap区

18. 指定是否在每次更新操作后进荇日志记录,Redis在默认情况下是异步的把数据写入磁盘如果不开启,可能会在断电时导致一段时间内的数据丢失因为 redis本身同步数据文件昰按上面save条件来同步的,所以有的数据会在一段时间内只存在于内存中默认为no

20. 指定更新日志条件,共有3个可选值: 

  no:表示等操作系统进荇数据缓存同步到磁盘(快) 

  always:表示每次更新操作后手动调用fsync()将数据写到磁盘(慢安全) 

  everysec:表示每秒同步一次(折衷,默认值)

21. 指定是否启用虚拟内存机制默认值为no,简单的介绍一下VM机制将数据分页存放,由Redis将访问量较少的页即冷数据swap到磁盘上访问多的页面由磁盘洎动换出到内存中  

24. Redis swap文件分成了很多的page,一个对象可以保存在多个page上面但一个page上不能被多个对象共享,vm-page-size是要根据存储的 数据大小来设定的作者建议如果存储很多小对象,page大小最好设置为32或者64bytes;如果存储很大大对象则可以使用更大的page,如果不 确定就使用默认值

25. 设置swap文件Φ的page数量,由于页表(一种表示页面空闲或使用的bitmap)是在放在内存中的,在磁盘上每8个pages将消耗1byte的内存

26. 设置访问swap文件的线程数,最好不要超过机器的核数,如果设置为0,那么所有对swap文件的操作都是串行的,可能会造成比较长时间的延迟默认值为4

27. 设置在向客户端应答时,是否把較小的包合并为一个包发送默认为开启

28. 指定在超过一定的数量或者最大的元素超过某一临界值时,采用一种特殊的哈希算法

29. 指定是否激活重置哈希默认为开启(后面在介绍Redis的哈希算法时具体介绍)

30. 指定包含其它的配置文件,可以在同一主机上多个Redis实例之间使用同一份配置文件而同时各个实例又拥有自己的特定配置文件

我要回帖

更多关于 对已有数据的硬盘进行重新分区 的文章

 

随机推荐