这好像是个多余的问题,大部分大数据平台都把集群透明化作为一个基本目标在努力实现。

所谓集群透明化,是指把一个多台机器的集群模拟得像一个巨大的单机,只是系统管理层面知道体系是由很多单机集群而成,应用程序则应当尽量少地感受到集群的存在,在概念上可以把整个集群理解成一台机器,甚至在代码级都可能和单机运算兼容。

透明化主要有两个方面。一方面是数据存储,提供统一的集群文件系统或者数据库系统,应用程序不需要关心数据具体存放在哪里了,系统将自动寻找合适的节点,并提供一定的冗余容错机制;内存的透明化相对要困难一些,有时需要应用程序知道集群的存在。另一方面是任务分配,系统负责将大任务拆分成小任务并分配给各个节点机去执行,在有节点故障时能再将任务分配给其它节点;有时任务拆分比较困难,也需要程序员事先设计好拆分方案。

透明化显然有好处,可以降低理解难度,开发程序时和单机情况差不多,也能提高代码的兼容性。从这个意义上讲,只要能透明化就都应当去做,除非是实现难度太大(比如上面提到内存和任务拆分)的情况。

那么,为什么还要提出该不该透明化的问题呢?

因为,透明化难以获得最优的性能,而高性能对于大数据计算又是一个关键的目标。

高性能计算方案因运算目标和数据特征而异,并没有普适的优化方法。好算法需要特定的数据分布及任务分配方案,而使用系统自动的机制就很可能无法实现了。有些优化手段还是互相矛盾的,如果不做透明化则可以根据场景选用哪种。而实现透明化时,为了保证在任何情况都能正常工作,经常只能选择较保险的方案,常常这并不是性能最好的方案。

比如在做JOIN运算时,我们可以从业务上区分维表和事实表,也事先知道维表的容量,如果维表数据量较小,则可以将维表主动存储到所有节点中甚至读入内存,而只把事实表分段存储到节点中,并按此分布设计更优的算法能。而透明化方案不能做这些假定,要处理一般情况,就不能区分维表和事实表,也不能假定维表足够小。有些计算平台能够临时测定数据特征以采用更优的计算 方案,针对JOIN这种被研究得很透的运算有可能做到,但更复杂的情况就不一定了。

另外,透明化体系一般都会有一个较复杂的框架来控制数据分布及实现任务调度,这个事并不简单,本身也会消耗很多资源,而如果不搞透明化或透明化程度较弱时,则可以把这些资源本用到计算上。比如容错机制,节点机可能有故障,集群体系要能在故障机数量不多时保证计算仍然可以进行下去,这需要重新设计数据的冗余方案,要求高时还要及时保存中间结果。

一定程度地牺牲透明化,可以换来更高的性能。数据存储可以直接使用节点机的文件系统,程序员可以根据运算的特征以及节点的能力来决定数据的分布以及冗余方案,对应用层并不提供一个统一的网络文件系统。任务分配也由程序员自行处理,也是根据运算特殊及数据分布以及节点能力来安排任务,养活框架消耗,将尽量多的资源都用到计算任务本身上。

当然,牺牲透明化会带来程序的开发复杂度提高,与单机情况的兼容性变差,这也是需要权衡的问题。透明化与否,并不是非黑即白的选择。完全透明化,可能得不到最优的性能;彻底不透明,又会导致开发成本又过高。具体要透明到什么程度,根据实际场来选择。

一般来讲,规模较大的集群要做好透明化,小规模集群则可以实施个性化管理。

大集群的节点多,如果不采用透明化方案,每个节点都个性化管理,那复杂度会提升太多,虽然可能获得一些性能提升,但带来的麻烦度很可能更高。而小集群则实施每个节点的个性化管理是管得过来的,节点存储的数据各有不同。对于容错,大集群在很短的时间段内就可能发生故障节点,一定要有较强的自动容错能力,这时花在框架上的开销是必须的;而小集群则没有这个问题,几个节点的集群保证连续正常工作许多天并不是个小概率事件,就没必要在框架上消耗太多资源。

原文发布时间为:2018-03-13

本文作者:蒋步星

本文来自云栖社区合作伙伴“数据蒋堂”,了解相关信息可以关注“数据蒋堂”微信公众号

【数据蒋堂】第46期:大数据集群该不该透明化?相关推荐

  1. 数据蒋堂 | 大数据集群该不该透明化?

    作者:蒋步星 来源:数据蒋堂 本文约1500字,建议阅读5分钟. 通过本文为大家解读大数据集群透明化的利弊! 这好像是个多余的问题,大部分大数据平台都把集群透明化作为一个基本目标在努力实现. 所谓集群 ...

  2. python大数据运维库_大数据集群运维(10)Pycharm下安装模块

    方法一:使用Pycharm的终端安装 一.网络爬虫 1.安装requests包 作用:简洁且简单的处理HTTP请求的第三方库 pip install requests 2.安装scrapy包 作用:快 ...

  3. 大数据集群被窃取数据怎么办?透明加密可以一试

    摘要:传统大数据集群中,用户数据明文保存在HDFS中,集群的维护人员或者恶意攻击者可在OS层面绕过HDFS的权限控制机制或者窃取磁盘直接访问用户数据. 本文分享自华为云社区<FusionInsi ...

  4. 一篇运维老司机的大数据平台监控宝典(1)-联通大数据集群平台监控体系进程详解

    一篇运维老司机的大数据平台监控宝典(1)-联通大数据集群平台监控体系进程详解 "如果你是一个经验丰富的运维开发人员,那么你一定知道ganglia.nagios.zabbix.elastics ...

  5. 大数据集群机房搬迁数据迁移

    [一.背景] 按照中心总体计划,目前部署在生产区的运营大数据集群需要搬迁至万国机房. 本次采用的搬迁的方案是通过万国机房的72台物理主机上新建运营大数据集群,老集群应用数据同步至新集群的方式,之后应用 ...

  6. python自动化部署hadoop集群_大数据集群的自动化运维实现思路

    原标题:大数据集群的自动化运维实现思路 | 作者简介 王晓伟 知数堂<大数据实战就业>课程讲师 六年大数据相关工作经验 清华大学软件工程硕士 曾就职于网易.搜狗等互联网企业 从事大数据及数 ...

  7. Zabbix监控大数据集群(一)

    Zabbix监控大数据集群 一.监控Linux系统 ​ 对于各种大数据框架的监控可能要用到Zabbix-Sender组件,我们这里首先进行安装(如果不安装,可能会导致数据无法发送): yum inst ...

  8. 使用ansible部署CDH 5.15.1大数据集群

    使用ansible离线部署CDH 5.15.1大数据集群 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在此之前,我之前分享过使用shell自定义脚本部署大数据集群,不管是部署CD ...

  9. 架构-大数据集群资源评估方法

    架构-大数据集群资源评估方法 转载声明 本文大量内容系转载自网络,有删改,并参考其他文档资料加入了一些内容: 1 资源需求背景 二手电商网站需要构建一个Kafka集群,目标是每天抗住10亿请求量. 2 ...

最新文章

  1. 使用纯C++实现SQL Server2005 数据库读写操作详细步骤
  2. OTA整包的制作流程(未完)
  3. 计算机一级应用于段落还是文字,计算机一级复习资料
  4. 用jar 命令打包war包
  5. KVM详解(六)——KVM虚拟机快照
  6. STL 算法罗列 (转)
  7. mysql优化方面的面试题
  8. android版here地图下载,HERE WeGo地图安卓版
  9. python pdf提取数据_python从PDF中提取数据的示例
  10. 大脑简史(1)-历史上的大事件
  11. 连续复利怎么用计算机算,请问银行的连续复利计算公式
  12. 带你玩转序列模型之循环神经网络(一)
  13. 2015届互联网名企校招网址一览表
  14. JVM-SandBox使用入门
  15. Hack movies
  16. 一款QQ盗号木马分析
  17. Navicat Premium使用
  18. STM32MX电源管理低功耗模式
  19. vb.net 教程 5-12 绘图实例之统计图1
  20. 一步步搞定Android行情K线蜡烛图(带十字光标)

热门文章

  1. 进阶 09 Map集合
  2. 计算机网络实验【静态路由】
  3. java数组求和函数_令人头痛的表格函数,今天送你11个常用技巧,一次学会受用一生...
  4. centos7 mysql读写监控,《Centos7——zabbix监控mysql的常规操作》
  5. php 日期 星期_php日期如何转星期
  6. 打印浏览器文章为pdf
  7. linux下mysql主从不同步
  8. easyui 的 toolbar配合图标使用
  9. java单链表选票_Hackerrank Practice
  10. pcie数据反_PCIe事务层の详解(一)