- ?
大数据之Hadoop分布式文件系统(HDFS)篇之一
绿兰
展开
简介
HADOOPDISTRIBUTEDFILESYSTEM,简称HDFS,是一个分布式文件系统。它是谷歌的GFS提出之后出现的另外一种文件系统。它的设计目标是把超大数据集存储到分布在网络中的多台普通商用计算机上,并且能够提供高可靠性和高吞吐量的服务。分布式文件系统要比普通磁盘文件系统复杂。因为它要引入网络编程。HDFS提供了一个高度容错性和高吞吐量的海量数据存储解决方案。
HADOOP最初是作为ApacheNutch搜索引擎项目的基础架构而开发的,后来让它成为HADOOPCORE项目的一部分。它的项目的地址是http://hadoop.apache.org/core/
设计前提和目标
专为存储超大文件而设计:HDFS能够支持GB级别大小的文件,它能够提供很大的数据带宽并且能够在集群中拓展到成百上千个节点,它的一个实例应该能够支持千万数量级别的文件。
适用于流式的数据访问:HDFS适用于批处理的情况而不是交互式处理,它的重点是保证高吞吐量而不是低延迟的用户响应。
容错性:完善的冗余备份机制。
支持简单的一致性模型:HDFS需要支持一次写入多次读取的模型,而且写入过程文件不会经常变化。
移动计算优于移动数据:一个应用请求的计算,离它操作的数据越近就越高效,在数据达到海量级别的时候更是如此。因为这样就能降低网络阻塞的影响,提高系统数据的吞吐量。将计算移动到数据附近,比之将数据移动到应用所在显然更好。HDFS提供了使应用计算移动到离它最近数据位置的接口(减少数据传输)。
兼容各种硬件和软件平台:如linux、window系统都可以安装部署并兼容使用
架构和设计
HDFS主要由3个组件构成:分别是NameNode、SecondaryNameNode和DataNode,HSFS是以master/slave模式运行的,其中NameNode、SecondaryNameNode运行在master节点,DataNode运行slave节点。
NameNode中心服务器(Master):维护文件系统树、以及整棵树内的文件目录、负责整个数据集群的管理。如:元数据信息,比如命名空间信息,块信息。
SecondaryNameNode:它给人的感觉就像是NameNode的备份,但它实际上却不是。经常由于名字而被人误解它真正的用途。其实它真正的用途是用来合并fsimage和edits文件来更新NameNode和metadata的,并减少NameNode重启的时间。
如下图所示:
1.NameNode管理着元数据信息,metadata信息会定期的刷到磁盘中,其中的两个文件是edits即操作日志文件和fsimage即metadata镜像文件,新的操作日志不会立即与fsimage进行合并,也不会刷到NameNode的内存中,而是会先写到edits中(因为合并需要消耗大量的资源)。当edits文件的大小达到一个临界值(默认是64MB)或者间隔一段时间(默认是1小时)的时候checkpoint会触发SecondaryNameNode进行工作。
2.当触发一个checkpoint操作时,NameNode会生成一个新的edits即上图中的edits.new文件,同时SecondaryNameNode会将edits文件和fsimage复制到本地。
3.SecondaryNameNode将本地的fsimage文件加载到内存中,然后再与edits文件进行合并生成一个新的fsimage文件即上图中的Fsimage.ckpt文件。
4.SecondaryNameNode将新生成的Fsimage.ckpt文件复制到NameNode节点。
5.在NameNode结点的edits.new文件和Fsimage.ckpt文件会替换掉原来的edits文件和fsimage文件,至此,刚好是一个轮回即在NameNode中又是edits和fsimage文件了。
6.等待下一次checkpoint触发SecondaryNameNode进行工作,一直这样循环操作。
DataNode分布在不同的机架上(Slaver):在客户端或者NameNode的调度下,存储并检索数据块,并且定期向NameNode发送所存储的数据块的列表。
做个比喻:NameNode相当项目经理来制定软件开发计划,分配程序员工作,整体架构设计,开发过程中监工,NameNode是程序员,根据分配任务具体开发系统功能。SecondaryNameNode是项目助理整理文档什么的。可能不是很恰当。
工作原理
HDFS读取文件步骤图如下:
详解如下:
1.首先调用FileSystem对象的open方法,其实获取的是一个DistributedFileSystem的实例。
2.DistributedFileSystem通过RPC(远程过程调用)获得文件的第一批block的locations,同一block按照重复数会返回多个locations,这些locations按照hadoop拓扑结构排序,距离客户端近的排在前面。
3.前两步会返回一个FSDataInputStream对象,该对象会被封装成DFSInputStream对象,DFSInputStream可以方便的管理DataNode和NameNode数据流。客户端调用read方法,DFSInputStream就会找出离客户端最近的DataNode并连接DataNode。
4.数据从DataNode源源不断的流向客户端。
5.如果第一个block块的数据读完了,就会关闭指向第一个block块的DataNode连接,接着读取下一个block块。这些操作对客户端来说是透明的,从客户端的角度来看只是读一个持续不断的流。
6.如果第一批block都读完了,DFSInputStream就会去NameNode拿下一批blocks的location,然后继续读,如果所有的block块都读完,这时就会关闭掉所有的流。
HDFS文件写入步骤图如下:
HDFS的文件写入原理详解如下:
1.客户端通过调用DistributedFileSystem的create方法,创建一个新的文件。
2.DistributedFileSystem通过RPC(远程过程调用)调用NameNode,去创建一个没有blocks关联的新文件。创建前,NameNode会做各种校验,比如文件是否存在,客户端有无权限去创建等。如果校验通过,NameNode就会记录下新文件,否则就会抛出IO异常。
3.前两步结束后会返回FSDataOutputStream的对象,和读文件的时候相似,FSDataOutputStream被封装成DFSOutputStream,DFSOutputStream可以协调NameNode和DataNode。客户端开始写数据到DFSOutputStream,DFSOutputStream会把数据切成一个个小packet,然后排成队列dataqueue。
4.DataStreamer会去处理接受dataqueue,它先问询NameNode这个新的block最适合存储的在哪几个DataNode里,比如重复数是3,那么就找到3个最适合的DataNode,把它们排成一个pipeline。DataStreamer把packet按队列输出到管道的第一个DataNode中,第一个DataNode又把packet输出到第二个DataNode中,以此类推。
5.DFSOutputStream还有一个队列叫ackqueue,也是由packet组成,等待DataNode的收到响应,当pipeline中的所有DataNode都表示已经收到的时候,这时akcqueue才会把对应的packet包移除掉。
6.客户端完成写数据后,调用close方法关闭写入流。
7.DataStreamer把剩余的包都刷到pipeline里,然后等待ack信息,收到最后一个ack后,通知DataNode把文件标示为已完成。
注:HDFS篇之一先介绍这里,计划为HDFS写
HDFS篇之二讲解Hadoop安装过程与HDFS常用命令。
HDFS篇之三讲解结合java语言的J2EE工程调用HDFS开发。
- ?
GPU+分布式计算,能把数据性能提升100倍吗?
海水枯
展开
Zilliz是中国首家将GPU的技术应用在分布式数据库中的数据处理公司,据星爵透露,Zilliz的处理性能比普通数据库的性能提高100倍,并且能够在此基础上,将硬件成本降低10倍。本文共计1968字,阅读时间4分钟。
记者 | 刘娜
编辑 | 赵力
项目要点:
Zilliz定位于基于GPU硬件加速的新一代OLAP(联机分析处理)数据库系统,专注于研发基于GPU的智能数据处理平台,是一家分布式数据库公司。Zilliz的应用领域包括了金融、游戏、电商、物联网、零售、电信等领域。Zilliz的产品还处于内测阶段,产品预计2018年年底正式发布公测版本,未来将在银行、政府、电信等行业进行重点布局。目前,Zilliz现在不超过20人,大部分为技术人员,主要来自于甲骨文等公司。科技发展至今,人类巨大数据量的产生以指数级的速度增长中。在此基础上,云计算、大数据、以及需要大数据支撑的AI技术也在不断蓬勃发展,并在不同垂直领域陆续实现商业化落地。
近几年来,中国大数据行业遍地开花,大数据创业公司也在短期内如雨后春笋般出现。大数据领域创业公司也在抓紧赛道窗口期跑马圈地中,寻找中国创客(ID:xjbmaker)曾经报道过行业大数据(数澜科技、云英数据)、人力大数据(E成科技)、零售大数据(超盟数据)、移动游戏大数据(热云数据)、再到营销大数据(ZMT众盟)。
在竞争加剧的同时,大数据公司在使用场景、目标客户上更加细分化,形成一定差异化竞争。定位银行、政府等大型客户,Zilliz是一家专注于研发基于GPU硬件加速的新一代OLAP的分布式数据库公司。
创业契机:数据的爆发性增长带来机遇
“我天生对数据敏感,整个工作生涯似乎都在与数据和计算机打交道。”在美国威斯康星大学计算机专业硕士毕业后,Zilliz的创始人星爵加入甲骨文(Oracle)公司总部。后来在Oracle工作多年,当时他主要负责多租户数据库(OracleMultitenant)的核心研发工作,是一个典型的技术研发工程师。
在当时,数据的产生速度每两年发生一次迭代,基本上是两年之前的一倍。在星爵看来,各行各业都存在数据产能过剩,数据不能够得以利用的问题。这是由于现有大数据处理的速度不能够赶上数据增加迭代的速度,导致大量数据没有被分析利用。
研究报告表明,人类数据的生产量和存储量呈指数级增长。过去5年里数据量已经从TB(1024GB=1TB)级别跃升到PB(1024TB=1PB)、EB(1024PB=1EB)乃至于ZB (1024EB=1ZB)级别。
而在当时,尽管市面上大多数大数据解决方案能处理海量数据,但并不能完全满足瞬时、海量的数据处理需求。在数据行业工作数年的星爵发现,GPU性能改进的速度曲线,跟爆炸式数据增长的曲线非常吻合。
尽管海量数据处理的需求已经存在,“但在数据库软件的发展长期受到硬件成本、处理速度等方面的种种约束,在当时并不适合投入商业化使用。”星爵说,直至近期硬件厂商能够提供更加高速的芯片,帮开发者把门槛降低,为分布式数据库的技术开发提供基础。
看到创业的时机到来,2016年星爵离开Oracle创办了Zilliz,Zilliz的名字来源于英文zillion of zillions,直译为无穷的无穷。Zilliz现在不超过20人,大部分为技术人员,主要来自于甲骨文等公司。
Zilliz创始人兼CEO:星爵
基于GPU的分布式数据库
Zilliz是中国首家将GPU的技术应用在分布式数据库中的数据处理公司,据星爵透露,Zilliz的处理性能比普通数据库的性能提高100倍,并且能够在此基础上,将硬件成本降低10倍。
一直以来,CPU在计算机上负责“计算”,CPU的核数越大,运算能力越强。相较于CPU的十几核来说,GPU上可以承载数千个处理单元。在过去,GPU技术主要被应用于图像渲染和真实场景模拟。
现在,GPU计算已经在深度学习、高性能计算(HPC)中广泛应用,越来越像更高性能的CPU。GPU的这种“大规模并行计算”的能力已经开始被挖掘,定位也从之前协处理器向主流处理器做转移。
“如何运用GPU加速数据处理速度,在2006年的时候就是学术热点,”星爵说,他表示为了简单理解GPU分布式数据库,可以想象为当CPU处理数据时,是一个人在抄写课文;当GPU处理数据时,是多个分散在各个地方不同的人,同时在抄录课文,所以效率会高很多。
这就是GPU分布式数据库,利用GPU处理器上成千上万个处理单元进行大规模并行数据处理,加速数据库操作。百度百科将分布式数据库定义为,利用高速计算机网络将物理上分散的多个数据存储单元连接起来组成一个逻辑上统一的数据库。
当数据量的高速增长,瞬时处理数据的需求得以体现,分布式数据库技术也得到了快速的发展。传统的关系型数据库开始从集中式模型向分布式架构发展,基于关系型的分布式数据库在保留了传统数据库的数据模型和基本特征下,从集中式存储、计算走向分布式存储、计算。Zilliz的技术优势也在于此。
面向银行政府等布局产品
目前,Zilliz还在测试阶段,产品预计2018年年底正式上线,产品应用领域包括金融、游戏、电商、物联网、零售、电信等,主要将在银行、政府、互联网行业进行重点布局。
值得一提的是,近期火爆的区块链技术跟分布式数据库技术有相似之处,也是去中心化分布式存储和计算。区块链可以被看做是一种特殊的分布式数据库,以一个区块为单位,可以分布式、去中心化地存储数据,不可篡改是它的特点。以往的分布式数据库往往是有中心的,而区块链彻底没有中心,用来防止被篡改。
竞品方面,Zilliz对标美国的Kinetica和美国的MapD,二者都是GPU分布式数据库,前者已经于2017年6月完成5千万美元融资,后者于2017年完成2500万B轮融资。而Zilliz于2017年8月完成由云启资本领投,靖亚资本、华岩资本跟投的数千万元天使轮融资。
在国内,分布式数据库创业公司还有柏睿数据和PinCAP,其中PinCAP和Zilliz都还处于研发阶段。而柏睿数据定位运营商、公安局等政企大客户已经投入商业化落地,据了解柏睿数据去年签单总金额约为1亿元人民币。分布式数据库也属于大数据公司的一种,区别在于能够在瞬时处理更大量的数据,所以目标企业往往定位于是银行、政府、运营商等每秒运算需求到TB级别的大型政企客户。
- ?
大数据时代到来程序员必备技能分布式系统,白话解析分布式系统
Fawley
展开
分布式系统在互联网时代,尤其是大数据时代到来之后,成为了每个程序员的必备技能之一。分布式系统主要包含了:分布式网络,分布式存储,分布式计算,分布式应用。
分布式与集群的区别
分布式(distributed)是指在多台不同的服务器中部署不同的服务模块,通过远程调用协同工作,对外提供服务。
集群(cluster)是指在多台不同的服务器中部署相同应用或服务模块,构成一个集群,通过负载均衡设备对外提供服务。
分布式的定义
分布式系统(distributed system)简单来说就是一群独立计算机集合共同对外提供服务,但是对于系统的用户来说,就像是一台计算机在提供服务一样。分布式意味着可以采用更多的普通计算机(相对于昂贵的大型机)组成分布式集群对外提供服务。计算机越多,CPU、内存、存储资源等也就越多,能够处理越大的并发访问量。
分布式的特性
各个主机之间通信和协调主要通过网络进行,所以分布式系统中的计算机在空间上几乎没有任何限制,这些计算机可能被放在不同的机柜上,也可能被部署在不同的机房中,还可能在不同的城市中,对于大型的网站甚至可能分布在不同的国家和地区。但是,无论空间上如何分布,一个标准的分布式系统应该具有以下几个主要特征:
分布性——分布式系统中的多台计算机之间在空间位置上可以随意分布,系统中的多台计算机之间没有主、从之分,即没有控制整个系统的主机,也没有受控的从机。
透明性——系统资源被所有计算机共享。每台计算机的用户不仅可以使用本机的资源,还可以使用本分布式系统中其他计算机的资源(包括CPU、文件、打印机等)。
同一性——系统中的若干台计算机可以互相协作来完成一个共同的任务,或者说一个程序可以分布在几台计算机上并行地运行。
通信性——系统中任意两台计算机都可以通过通信来交换信息。
和集中式系统相比,分布式系统的性价比更高、处理能力更强、可靠性更高、也有很好的扩展性。但是,分布式在解决了网站的高并发问题的同时也带来了一些其他问题。首先,分布式的必要条件就是网络,这可能对性能甚至服务能力造成一定的影响。其次,一个集群中的服务器数量越多,服务器宕机的概率也就越大。另外,由于服务在集群中分布是部署,用户的请求只会落到其中一台机器上,所以,一旦处理不好就很容易产生数据一致性问题。
分布式设计开发注意问题
系统如何拆分为子系统
如何规划子系统间的通信
通信过程中的安全如何考虑
如何让子系统可以扩展
子系统的可靠性如何保证
数据的一致性是如何实现的
总结
分布式系统有着漫无边际的扩展性。(毕竟任何计算机都会有性能的极限,分布式系统可以通过不断扩张主机的数量以实现横向水平性能的扩展)相对集群的另一个好处就是巴菲特的名言:不要把鸡蛋放在一个篮子里,来减轻被一锅端的风险。
- ?
人人都在说的大数据到底是什么?(技术层)
黎书白
展开
前沿技术普及系列·写在前面
不知道大家有没有和象牙妹儿一样的感觉,便是最近1年很多AI产品铺天盖地的来到了我们的生活,比如某些家的智能陪伴音响、翻译棒、智能机器人、AR拍照手机等等。
这里面背后的前沿技术大数据、云计算、区块链、物联网、 5G、数字化…前几年甚至到现在听着还很遥远,但却已有不少在冲击着商业的世界,渗透进我们的生活!
如何拨开层层浓雾,抵达未来的彼岸?如何把握技术的钥匙,启开未来商业世界的大门!
大象互联网圈发起主办的第二届中国【郑州】开发者大会不但关注技术·商业的融合,也关注着前沿技术的分享。
因此,从今天起,大象互联网圈公众号将目光聚焦在大数据、云计算、物联网IOT、人工智能AI、区块链、VR/AR等板块,一一从概念层、目前行业发展状况、企业实际应用层、技术层、岗位前景等为大家带来干货的普及,快来和象牙儿妹一块围观吧!
上一篇:人人都在说的大数据到底是什么?(概念层)
本文由“壹伴编辑器”提供技术支持
提到大数据技术,最基础和核心的仍是大数据的分析和计算。在2017年,大数据分析和计算技术仍旧在飞速的发展,无论老势力Hadoop还是当红小生Spark,亦或是人工智能,都在继续自己的发展和迭代。
目前绝大部分传统数据计算和数据分析服务均是基于批量数据处理模型:使用ETL系统或OLTP系统进行构造数据存储,在线的数据服务通过构造SQL语言访问上述数据存储并取得分析结果。这套数据处理的方法伴随着关系型数据库在工业界的演进而被广泛采用。
本文将分别讨论大数据技术涉及到的技术框架、平台以及未来的发展趋势。
本文由“壹伴编辑器”提供技术支持
1.批处理框架
传统的批量数据处理模型通常基于如下处理模型:
1.使用ETL系统或者OLTP系统构造原始的数据存储,以提供后续的数据服务进行数据分析和数据计算。用户装载数据,系统根据自己的存储和计算情况,对于装载的数据进行索引构建等一些列查询优化工作。
因此,对于批量计算,数据一定需要加载到计算机系统,后续计算系统才在数据加载完成后方能进行计算。
2.用户或系统主动发起一个计算作用并向上述数据系统进行请求。此时计算系统开始调度(启动)计算节点进行大量数据计算,该过程的计算量可能巨大,耗时长达数分钟乃至数小时。
同时,由于数据累计的不可及时性,上述计算过程的数据一定是历史数据,无法保证数据的实时性。
3.计算结果返回,计算作业完成后将数据以结果集形式返回用户,或者可能由于计算结果数量巨大保存着数据计算系统中,用户进行再次数据集成到其他系统。一旦数据结果巨大,整体的数据集成过程漫长,耗时可能长达数分钟乃至数小时。
典型代表:Hadoop
Hadoop是Apache的一个开源项目,是可以提供开源、可靠、可扩展的分布式计算工具。它主要包括HDFS和MapReduce两个组件,分别用于解决大数据的存储和计算。
HDFS是独立的分布式文件系统,为MapReduce计算框架提供存储服务,具有较高的容错性和高可用性,基于块存储以流数据模式进行访问,数据节点之间项目备份。默认存储块大小为64M,用户也可以自定义大小。
HDFS是基于主从结构的分布式文件系统,结构上包括NameNode目录管理、DataNode的数据存储和Client的访问客户端3部分。
NameNode主要负责系统的命名空间、集群的配置管理以及存储块的复制;DataNode是分布式文件系统存储的基本单元;Client为分布式文件系统的应用程序。
对于数据存储,HDFS采用的是多副本的方式来存储数据,即Client将数据首先通过NameNode获取数据将要存储在哪些DataNode上,之后这些存储到最新数据的DataNode将变更数据以同步或异步方式同步到其他DataNode上。
在Hadoop3.0之后,采用Erasure Coding可以大大的降低数据存储空间的占用。对于冷数据,可以采用EC来保存,这样才能降低存储数据的花销,而需要时,还可以通过CPU计算来读取这些数。
MapReduce是一种分布式计算框架,适用于离线大数据计算。采用函数式编程模式,利用Map和Reduce函数来实现复杂的并行计算,主要功能是对一个任务进行分解,以及对结果进行综合汇总。
具体来说,MapReduce是将那些没有经过处理的海量数据进行数据分片,即分解成多个小数据集;每个Map并行地处理每一个数据集中的数据,然后将结果存储为
,并把key值相同的数据进行归并发送到Reduce处理。 本文由“壹伴编辑器”提供技术支持
2.流计算框架
不同于批量计算模型,流式计算更加强调计算数据流和低时延,流式计算数据处理模型如下:
1.使用实时集成工具,将数据实时变化传输到流式数据存储(即消息队列,如RabbitMQ);此时数据的传输编程实时化,将长时间累积大量的数据平摊到每个时间点不停地小批量实时传输,因此数据集成的时延得以保证。
2.数据计算环节在流式和批量处理模型差距更大,由于数据集成从累计变成实时,不同于批量计算等待数据集成全部就绪后才启动计算作业,流式计算作业是一种常驻计算服务,一旦启动将一直处于等待事件触发的状态,一旦小批量数据进入流式数据存储,流计算立刻计算并迅速得到结果。
3.不同于批量计算结果数据需要等待数据计算结果完成后,批量将数据传输到在线系统;流式计算作业在每次小批量数据计算后可以立刻将数据写入在线系统,无需等待整个数据的计算结果,可以立刻将数据结果投递到在线系统,进一步做到实时计算结果的实时化展现。
典型代表:Spark
Spark是一个快速且通用的集群计算平台。它包含Spark Core、Spark SQL、Spark Streaming、MLlib以及Graphx组件。
Spark SQL是处理结构化数据的库,它支持通过SQL查询数据。Spark Streming是实时数据流处理组件。MLlib是一个包含通用机器学习的包。GraphX是处理图的库,并进行图的并行计算一样。
Spark提出了弹性分布式数据集的概念(Resilient Distributed Dataset),简称RDD,每个RDD都被分为多个分区,这些分区运行在集群的不同节点上。一般数据操作分为3个步骤:创建RDD、转换已有的RDD以及调用RDD操作进行求值。
在Spark中,计算建模为有向无环图(DAG),其中每个顶点表示弹性分布式数据集(RDD),每个边表示RDD的操作。
RDD是划分为各(内存中或者交换到磁盘上)分区的对象集合。在DAG上,从顶点A到顶点B的边缘E意味着RDD B是RDD A上执行操作E的结果。有两种操作:转换和动作。
转换(例如;映射、过滤器、连接)对RDD执行操作并产生新的RDD。
本文由“壹伴编辑器”提供技术支持
3.交互式分析框架
在解决了大数据的可靠存储和高效计算后,如何为数据分析人员提供便利日益受到关注,而最便利的分析方式莫过于交互式查询。
这几年交互式分析技术发展迅速,目前这一领域知名的平台有十余个,包括Google开发的Dremel和PowerDrill,Facebook开发的Presto,Hadoop服务商Cloudera和HortonWorks分别开发的Impala和Stinger,以及Apache项目Hive、Drill、Tajo、Kylin、MRQL等。
一些批处理和流计算平台如Spark和Flink也分别内置了交互式分析框架。由于SQL已被业界广泛接受,目前的交互式分析框架都支持用类似SQL的语言进行查询。早期的交互式分析平台建立在Hadoop的基础上,被称作SQL-on-Hadoop。
后来的分析平台改用Spark、Storm等引擎,不过SQL-on-Hadoop的称呼还是沿用了下来。SQL-on-Hadoop也指为分布式数据存储提供SQL查询功能。
典型代表:Hive
ApacheHive是最早出现的架构在Hadoop基础之上的大规模数据仓库,由Facebook设计并开源。Hive的基本思想是,通过定义模式信息,把HDFS中的文件组织成类似传统数据库的存储系统。
Hive保持着Hadoop所提供的可扩展性和灵活性。Hive支持熟悉的关系数据库概念,比如表、列和分区,包含对非结构化数据一定程度的SQL支持。它支持所有主要的原语类型(如整数、浮点数、字符串)和复杂类型(如字典、列表、结构)。
它还支持使用类似SQL的声明性语言HiveQueryLanguage(HiveQL)表达的查询,任何熟悉SQL的人都很容易理解它。HiveQL被编译为MapReduce过程执行。下图说明如何通过MapReduce实现JOIN和GROUPBY。
部分HiveQL操作的实现方式
Hive与传统关系数据库对比如下:
Hive的主要弱点是由于建立在MapReduce的基础上,性能受到限制。很多交互式分析平台基于对Hive的改进和扩展,包括Stinger、Presto、Kylin等。其中Kylin是中国团队提交到Apache上的项目,其与众不同的地方是提供多维分析(OLAP)能力。
Kylin对多维分析可能用到的度量进行预计算,供查询时直接访问,由此提供快速查询和高并发能力。Kylin在eBay、百度、京东、网易、美团均有应用。
本文由“壹伴编辑器”提供技术支持
5.其他类型的框架
除了上面介绍的几种类型的框架外,还有一些目前还不太热门但具有重要潜力的框架类型。图计算是DAG之外的另一种迭代式计算模型,它以图论为基础对现实世界建模和计算,擅长表达数据之间的关联性,适用于PageRank计算、社交网络分析、推荐系统及机器学习。这一类框架有GooglePregel、ApacheGiraph、ApacheHama、PowerGraph、,其中PowerGraph是这一领域目前最杰出的代表。很多图数据库也内置图计算框架。
另一类是增量计算框架,探讨如何只对部分新增数据进行计算来极大提升计算过程的效率,可应用到数据增量或周期性更新的场合。这一类框架包括GooglePercolator、MicrosoftKineograph、阿里Galaxy等。
另外还有像
ApacheIgnite、ApacheGeode(GemFire的开源版本)这样的高性能事务处理框架。
本文由“壹伴编辑器”提供技术支持
6.总结与展望
从Hadoop横空出世到现在10余年的时间中,大数据分布式计算技术得到了迅猛发展。不过由于历史尚短,这方面的技术远未成熟。各种框架都还在不断改进,并相互竞争。
性能优化毫无疑问是大数据计算框架改进的重点方向之一。而性能的提高很大程度上取决于内存的有效利用。这包括前面提到的内存计算,现已在各种类型的框架中广泛采用。
拥抱机器学习和人工智能也是大数据计算的潮流之一。Spark和Flink分别推出机器学习库SparkML和FlinkML。更多的平台在第三方大数据计算框架上提供机器学习,如Mahout、Oryx及一干Apache孵化项目SystemML、HiveMall、PredictionIO、SAMOA、MADLib。
在同一平台上支持多种框架也是发展趋势之一,尤其对于那些开发实力较为雄厚的社区。
Spark以批处理模型为核心,实现了交互式分析框架SparkSQL、流计算框架SparkStreaming(及正在实现的StructuredStreaming)、图计算框架GraphX、机器学习库SparkML。
本文由“壹伴编辑器”提供技术支持
7.学习资料
最后介绍一下大数据计算方面的学习资料。
论坛
首推知乎、Quora、StackOverflow,运气好的话开发者亲自给你解答。其他值得关注的网站或论坛包括炼数成金、人大经济论坛、CSDN、博客园、云栖社区、360大数据、推酷、伯乐在线、小象学院等。
微信订阅号
InfoQ是最权威的,其他还有THU数据派、大数据杂谈、CSDN大数据、数据猿、Hadoop技术博文等,各人根据偏好取舍。
官方网站文档
若要进行系统的学习,则首先应参考官方网站文档。不少大数据平台的官方文档内容都比较详实,胜过多数教材。
书籍
国外O\'Reilly、Manning两家出版社在大数据领域出版了不少优秀书籍,特别是Manning的InAction系列和O\'Reilly的DefinitiveGuide系列。
本篇关于大数据的技术层面分析就介绍到这,下一篇我们将对大数据的最终价值体现——大数据实践进行分析介绍。
END
第二届中国【郑州】开发者大会
线上报名通道全面开放
本次大会将开设从数字化到大数据落地专场,现已开放报名通道,门票分为49.9普通票和VIP票两种,其中VIP票权益非常丰富,票价为199元且仅限200张,下面是两种票的权益对比:
- ?
【独家】一文读懂大数据计算框架与平台
冬菱
展开
1.前言
计算机的基本工作就是处理数据,包括磁盘文件中的数据,通过网络传输的数据流或数据包,数据库中的结构化数据等。随着互联网、物联网等技术得到越来越广泛的应用,数据规模不断增加,TB、PB量级成为常态,对数据的处理已无法由单台计算机完成,而只能由多台机器共同承担计算任务。而在分布式环境中进行大数据处理,除了与存储系统打交道外,还涉及计算任务的分工,计算负荷的分配,计算机之间的数据迁移等工作,并且要考虑计算机或网络发生故障时的数据安全,情况要复杂得多。
举一个简单的例子,假设我们要从销售记录中统计各种商品销售额。在单机环境中,我们只需把销售记录扫描一遍,对各商品的销售额进行累加即可。如果销售记录存放在关系数据库中,则更省事,执行一个SQL语句就可以了。现在假定销售记录实在太多,需要设计出由多台计算机来统计销售额的方案。为保证计算的正确、可靠、高效及方便,这个方案需要考虑下列问题:
如何为每台机器分配任务,是先按商品种类对销售记录分组,不同机器处理不同商品种类的销售记录,还是随机向各台机器分发一部分销售记录进行统计,最后把各台机器的统计结果按商品种类合并?上述两种方式都涉及数据的排序问题,应选择哪种排序算法?应该在哪台机器上执行排序过程?如何定义每台机器处理的数据从哪里来,处理结果到哪里去?数据是主动发送,还是接收方申请时才发送?如果是主动发送,接收方处理不过来怎么办?如果是申请时才发送,那发送方应该保存数据多久?会不会任务分配不均,有的机器很快就处理完了,有的机器一直忙着?甚至,闲着的机器需要等忙着的机器处理完后才能开始执行?如果增加一台机器,它能不能减轻其他机器的负荷,从而缩短任务执行时间?如果一台机器挂了,它没有完成的任务该交给谁?会不会遗漏统计或重复统计?统计过程中,机器之间如何协调,是否需要专门的一台机器指挥调度其他机器?如果这台机器挂了呢?(可选)如果销售记录在源源不断地增加,统计还没执行完新记录又来了,如何保证统计结果的准确性?能不能保证结果是实时更新的?再次统计时能不能避免大量重复计算?(可选)能不能让用户执行一句SQL就可以得到结果?
上述问题中,除了第1个外,其余的都与具体任务无关,在其他分布式计算的场合也会遇到,而且解决起来都相当棘手。即使第1个问题中的分组、统计,在很多数据处理场合也会涉及,只是具体方式不同。如果能把这些问题的解决方案封装到一个计算框架中,则可大大简化这类应用程序的开发。
2004年前后,Google先后发表三篇论文分别介绍分布式文件系统GFS、并行计算模型MapReduce、非关系数据存储系统BigTable,第一次提出了针对大数据分布式处理的可重用方案。在Google论文的启发下,Yahoo的工程师Doug Cutting和Mike Cafarella开发了Hadoop。在借鉴和改进Hadoop的基础上,又先后诞生了数十种应用于分布式环境的大数据计算框架。本文在参考业界惯例的基础上,对这些框架按下列标准分类:
如果不涉及上面提出的第8、9两个问题,则属于批处理框架。批处理框架重点关心数据处理的吞吐量,又可分为非迭代式和迭代式两类,迭代式包括DAG(有向无环图)、图计算等模型。若针对第8个问题提出来应对方案,则分两种情况:如果重点关心处理的实时性,则属于流计算框架;如果侧重于避免重复计算,则属于增量计算框架。如果重点关注的是第9个问题,则属于交互式分析框架。
本文下面分别讨论批处理、流计算、交互式分析三种类别的框架,然后简要介绍大数据计算框架的一些发展趋势。文章最后介绍这一领域的学习资料。
图1.大数据计算框架全景图2.批处理框架
2.1.Hadoop
Hadoop最初主要包含分布式文件系统HDFS和计算框架MapReduce两部分,是从Nutch中独立出来的项目。在2.0版本中,又把资源管理和任务调度功能从MapReduce中剥离形成YARN,使其他框架也可以像MapReduce那样运行在Hadoop之上。与之前的分布式计算框架相比,Hadoop隐藏了很多繁琐的细节,如容错、负载均衡等,更便于使用。
Hadoop也具有很强的横向扩展能力,可以很容易地把新计算机接入到集群中参与计算。在开源社区的支持下,Hadoop不断发展完善,并集成了众多优秀的产品如非关系数据库HBase、数据仓库Hive、数据处理工具Sqoop、机器学习算法库Mahout、一致性服务软件ZooKeeper、管理工具Ambari等,形成了相对完整的生态圈和分布式计算事实上的标准。
图2.Hadoop生态圈(删减版)
MapReduce可以理解为把一堆杂乱无章的数据按照某种特征归并起来,然后处理并得到最后的结果。基本处理步骤如下:
把输入文件按照一定的标准分片,每个分片对应一个map任务。一般情况下,MapReduce和HDFS运行在同一组计算机上,也就是说,每台计算机同时承担存储和计算任务,因此分片通常不涉及计算机之间的数据复制。按照一定的规则把分片中的内容解析成键值对。通常选择一种预定义的规则即可。
执行map任务,处理每个键值对,输出零个或多个键值对。
MapReduce获取应用程序定义的分组方式,并按分组对map任务输出的键值对排序。默认每个键名一组。
待所有节点都执行完上述步骤后,MapReduce启动Reduce任务。每个分组对应一个Reduce任务。
执行reduce任务的进程通过网络获取指定组的所有键值对。
把键名相同的值合并为列表。
执行reduce任务,处理每个键对应的列表,输出结果。
图3.MapReduce处理过程
在上面的步骤中,应用程序主要负责设计map和reduce任务,其他工作均由框架负责。在定义map任务输出数据的方式时,键的选择至关重要,除了影响结果的正确性外,也决定数据如何分组、排序、传输,以及执行reduce任务的计算机如何分工。前面提到的商品销售统计的例子,可选择商品种类为键。MapReduce执行商品销售统计的过程大致如下:
把销售记录分片,分配给多台机器。每条销售记录被解析成键值对,其中值为销售记录的内容,键可忽略。
执行map任务,每条销售记录被转换为新的键值对,其中键为商品种类,值为该条记录中商品的销售额。
MapReduce把map任务生成的数据按商品种类排序。
待所有节点都完成排序后,MapReduce启动reduce任务。每个商品种类对应一个reduce任务。
执行reduce任务的进程通过网络获取指定商品种类的各次销售额。
MapReduce把同一种商品下的各次销售额合并到列表中。
执行reduce任务,累加各次销售额,得到该种商品的总销售额。
上面的过程还有优化的空间。在传输各种商品每次的销售额数据前,可先在map端对各种商品的销售额进行小计,由此可大大减少网络传输的负荷。MapReduce通过一个可选的combine任务支持该类型的优化。
2.2.DAG模型
现在假设我们的目标更进一步,希望知道销售得最好的前10种商品。我们可以分两个环节来计算:
统计各种商品的销售额。通过MapReduce实现,这在前面已经讨论过。对商品种类按销售额排名。可以通过一个排序过程完成。假定商品种类非常多,需要通过多台计算机来加快计算速度的话,我们可以用另一个MapReduce过程来实现,其基本思路是把map和reduce分别当作小组赛和决赛,先计算各分片的前10名,汇总后再计算总排行榜的前10名。
从上面的例子可以看出,通过多个MapReduce的组合,可以表达复杂的计算问题。不过,组合过程需要人工设计,比较麻烦。另外,每个阶段都需要所有的计算机同步,影响了执行效率。
为克服上述问题,业界提出了DAG(有向无环图)计算模型,其核心思想是把任务在内部分解为若干存在先后顺序的子任务,由此可更灵活地表达各种复杂的依赖关系。Microsoft Dryad、Google FlumeJava、Apache Tez是最早出现的DAG模型。Dryad定义了串接、全连接、融合等若干简单的DAG模型,通过组合这些简单结构来描述复杂的任务,FlumeJava、Tez则通过组合若干MapReduce形成DAG任务。
图4.MapReduce(左)与Tez(右)执行复杂任务时对比
MapReduce的另一个不足之处是使用磁盘存储中间结果,严重影响了系统的性能,这在机器学习等需要迭代计算的场合更为明显。加州大学伯克利分校AMP实验室开发的Spark克服了上述问题。Spark对早期的DAG模型作了改进,提出了基于内存的分布式存储抽象模型RDD(Resilient Distributed Datasets,可恢复分布式数据集),把中间数据有选择地加载并驻留到内存中,减少磁盘IO开销。与Hadoop相比,Spark基于内存的运算要快100倍以上,基于磁盘的运算也要快10倍以上。
图5.MapReduce与Spark中间结果保存方式对比
Spark为RDD提供了丰富的操作方法,其中map、 filter、 flatMap、 sample、groupByKey、 reduceByKey、union、join、cogroup、mapValues、sort、partionBy用于执行数据转换,生成新的RDD,而count、collect、 reduce、lookup、save用于收集或输出计算结果。如前面统计商品销售额的例子,在Spark中只需要调用map和reduceByKey两个转换操作就可以实现,整个程序包括加载销售记录和保存统计结果在内也只需要寥寥几行代码,并且支持Java、Scala、Python、R等多种开发语言,比MapReduce编程要方便得多。下图说明reduceByKey的内部实现。
图6.RDD reduceByKey内部实现
RDD由于把数据存放在内存中而不是磁盘上,因此需要比Hadoop更多地考虑容错问题。分布式数据集的容错有两种方式:数据检查点和记录数据的更新。处理海量数据时,数据检查点操作成本很高,因此Spark默认选择记录更新的方式。不过如果更新粒度太细太多,记录更新成本也不低。因此,RDD只支持粗粒度转换,即只记录单个块上执行的单个操作,然后将创建RDD的一系列变换序列记录下来,类似于数据库中的日志。
当RDD的部分分区数据丢失时,Spark根据之前记录的演变过程重新运算,恢复丢失的数据分区。Spark生态圈的另一项目Alluxio(原名Tachyon)也采用类似的思路,使数据写入速度比HDFS有数量级的提升。
下面总结Spark对MapReduce的改进:
MapReduce抽象层次低,需要手工编写代码完成;Spark基于RDD抽象,使数据处理逻辑的代码非常简短。MapReduce只提供了map和reduce两个操作,表达力欠缺;Spark提供了很多转换和动作,很多关系数据库中常见的操作如JOIN、GROUP BY已经在RDD中实现。MapReduce中,只有map和reduce两个阶段,复杂的计算需要大量的组合,并且由开发者自己定义组合方式;Spark中,RDD可以连续执行多个转换操作,如果这些操作对应的RDD分区不变的话,还可以放在同一个任务中执行。MapReduce处理逻辑隐藏在代码中,不直观;Spark代码不包含操作细节,逻辑更清晰。MapReduce中间结果放在HDFS中;Spark中间结果放在内存中,内存放不下时才写入本地磁盘而不是HDFS,这显著提高了性能,特别是在迭代式数据处理的场合。MapReduce中,reduce任务需要等待所有map任务完成后才可以开始;在Spark中,分区相同的转换构成流水线放到同一个任务中运行。3.流计算框架
3.1.流计算概述
在大数据时代,数据通常都是持续不断动态产生的。在很多场合,数据需要在非常短的时间内得到处理,并且还要考虑容错、拥塞控制等问题,避免数据遗漏或重复计算。流计算框架则是针对这一类问题的解决方案。流计算框架一般采用DAG(有向无环图)模型。图中的节点分为两类:一类是数据的输入节点,负责与外界交互而向系统提供数据;另一类是数据的计算节点,负责完成某种处理功能如过滤、累加、合并等。从外部系统不断传入的实时数据则流经这些节点,把它们串接起来。如果把数据流比作水的话,输入节点好比是喷头,源源不断地出水,计算节点则相当于水管的转接口。如下图所示。
图7.流计算DAG模型示意图
为提高并发性,每一个计算节点对应的数据处理功能被分配到多个任务(相同或不同计算机上的线程)。在设计DAG时,需要考虑如何把待处理的数据分发到下游计算节点对应的各个任务,这在实时计算中称为分组(Grouping)。最简单的方案是为每个任务复制一份,不过这样效率很低,更好的方式是每个任务处理数据的不同部分。随机分组能达到负载均衡的效果,应优先考虑。不过在执行累加、数据关联等操作时,需要保证同一属性的数据被固定分发到对应的任务,这时应采用定向分组。在某些情况下,还需要自定义分组方案。
图8.流计算分组
由于应用场合的广泛性,目前市面上已经有不少流计算平台,包括Google MillWheel、Twitter Heron和Apache项目Storm、Samza、S4、Flink、Apex、Gearpump。
3.2.Storm及Trident
在流计算框架中,目前人气最高,应用最广泛的要数Storm。这是由于Storm具有简单的编程模型,且支持Java、Ruby、Python等多种开发语言。Storm也具有良好的性能,在多节点集群上每秒可以处理上百万条消息。Storm在容错方面也设计得很优雅。下面介绍Storm确保消息可靠性的思路。
在DAG模型中,确保消息可靠的难点在于,原始数据被当前的计算节点成功处理后,还不能被丢弃,因为它生成的数据仍然可能在后续的计算节点上处理失败,需要由该消...
- ?
5个大数据处理/数据分析/分布式工具
恋曲
展开
0.Hadoop
Hadoop是一个开源框架,它允许在整个集群使用简单编程模型计算机的分布式环境存储并处理大数据。它的目的是从单一的服务器到上千台机器的扩展,每一个台机都可以提供本地计算和存储。
1.Druid
Druid是实时数据分析存储系统,Java语言中最好的数据库连接池。Druid能够提供强大的监控和扩展功能。
2.Ambari
大数据平台搭建、监控利器;类似的还有CDH
提供Hadoop集群
Ambari为在任意数量的主机上安装Hadoop服务提供了一个逐步向导。Ambari处理集群Hadoop服务的配置。
管理Hadoop集群
Ambari为整个集群提供启动、停止和重新配置Hadoop服务的中央管理。
监视Hadoop集群
Ambari为监视Hadoop集群的健康状况和状态提供了一个仪表板。
3.Spark
大规模数据处理框架(可以应付企业中常见的三种数据处理场景:复杂的批量数据处理(batch data processing);基于历史数据的交互式查询;基于实时数据流的数据处理,Ceph:Linux分布式文件系统。
4.Storm
Storm是一个免费开源、分布式、高容错的实时计算系统。Storm令持续不断的流计算变得容易,弥补了Hadoop批处理所不能满足的实时要求。Storm经常用于在实时分析、在线机器学习、持续计算、分布式远程调用和ETL等领域。Storm的部署管理非常简单,而且,在同类的流式计算工具,Storm的性能也是非常出众的。
以上5个大数据处理/数据分析/分布式工具,有任何IT问题都欢迎问我~这里有一些我收集的资料想要的评.论!回复【资料】即可
- ?
Hadoop的分布式计算框架VS常用分布式计算框架
严瑛
展开
HDFS是Hadoop的分布式文件系统,现在我们已经把那些超大文件划分成数据块,做了备份并且存储在集群中的节点上了,整个集群中有的机器扮演着管理者,是namenode的角色,是客户端访问Hadoop平台的入口,也负责维护HDFS的高可用性和容错性。而有些机器则是工作者,是datanode的角色,负责存储数据块,向namenode上报自己都存储了哪些数据块。
有了分布式存储的文件系统,分布式计算也是数据挖掘,大数据上的必备神器。针对不同的需求出现了下面几种分布式计算框架。
MR(Map-Reduce)主要负责离线计算,一般处理的数据量特别大,对实时性要求不高,不要求很快就会计算出结果,MR的输入就是HDFS文件系统中的数据块。
优点:
大规模处理数据,隐藏细节,能够自动并行化,负载均衡和容错机制。
伸缩性好,可以增加集群中的机器,对MR的计算影响很小。
缺点:
实时性差,响应缓慢,不能快速得出计算结果,延迟大。
Storm一种流式分布式计算框架,用于在实时分析、在线机器学习、持续计算、分布式远程调用和ETL等领域,主要针对的是Hadoop延迟大,响应缓慢,运维复杂而提出的分布式计算框架。
实时性高,延迟低,并且和MR一样具备分布式,可扩展,容错性高等优点。
数据入口的设置比较困难,在考虑如何在流中保存状态,还需要考虑如何将大数据放到分布式平台上去跑,Storm还不是一个完整的解决方案。
Spark基于内存的分布式计算框架,能够快速得到结果。它将中间数据放到内存中,迭代效率更高,反复操作的次数越多,并且读取的数据量越大,那么因为它把中间结果放到了内存中,迭代起来更快,计算效率越高。
Spark最大的优点在于速度,Spark将很多操作都保存在内存中,在高级数据处理上要比Hadoop表现优异。
目前还没有发现Spark的缺点。
虽然Hadoop主要以MR为分布式计算框架,并且有了升级版的MR--Yarn,但现在Spark已经和Hadoop进行了结合,Spark可以直接读写Hadoop的分布式文件系统HDFS,在数据仓库上Spark也借用了Hive,基本上已经实现了兼容。
Map-Reduce中的Map为映射,而Reduce则是针对Map处理后的结果进行化简。这里涉及到Map-Reduce的一个问题:Map-Reduce是如何解决数据负载和数据均衡问题的?先给大家放张图,下篇文章将从Map-Reduce的工作原理上来阐述这个问题。
- ?
这五种大数据计算框架,你一定要知道!
Omar
展开
随着这些年全世界数据的几何式增长,数据的存储和运算都将成为世界级的难题。之前小鸟给大家介绍过一些分布式文件系统,解决的是大数据存储的问题,今天小鸟给大家介绍一些分布式计算框架:
Hadoop框架
提起大数据,第一个想起的肯定是Hadoop,因为Hadoop是目前世界上应用最广泛的大数据工具,他凭借极高的容错率和极低的硬件价格,在大数据市场上风生水起。Hadoop还是第一个在开源社区上引发高度关注的批处理框架,他提出的Map和Reduce的计算模式简洁而优雅。迄今为止,Hadoop已经成为了一个广阔的生态圈,实现了大量算法和组件。由于Hadoop的计算任务需要在集群的多个节点上多次读写,因此在速度上会稍显劣势,但是其吞吐量也同样是其他框架所不能匹敌的。
Storm框架
与Hadoop的批处理模式不同,Storm采用的是流计算框架,由Twitter开源并且托管在GitHub上。与Hadoop类似的是,Storm也提出了两个计算角色,分别为Spout和Bolt。
如果说Hadoop是水桶,只能一桶一桶的去井里扛,那么Storm就是水龙头,只要打开就可以源源不断的出水。Storm支持的语言也比较多,Java、Ruby、Python等语言都能很好的支持。由于Storm是流计算框架,因此使用的是内存,延迟上有极大的优势,但是Storm不会持久化数据。
Samza框架
Smaza也是一种流计算框架,但他目前只支持JVM语言,灵活度上略显不足,并且Samza必须和Kafka共同使用。但是响应的,其也继承了Kafka的低延时、分区、避免回压等优势。对于已经有Hadoop+Kafka工作环境的团队来说,Samza是一个不错的选择,并且Samza在多个团队使用的时候能体现良好的性能。
Spark框架
Spark属于前两种框架形式的集合体,是一种混合式的计算框架。它既有自带的实时流处理工具,也可以和Hadoop集成,代替其中的MapReduce,甚至Spark还可以单独拿出来部署集群,但是还得借助HDFS等分布式存储系统。Spark的强大之处在于其运算速度,与Storm类似,Spark也是基于内存的,并且在内存满负载的时候,硬盘也能运算,运算结果表示,Spark的速度大约为Hadoop的一百倍,并且其成本可能比Hadoop更低。但是Spark目前还没有像Hadoop哪有拥有上万级别的集群,因此现阶段的Spark和Hadoop搭配起来使用更加合适。
Flink框架
Flink也是一种混合式的计算框架,但是在设计初始,Fink的侧重点在于处理流式数据,这与Spark的设计初衷恰恰相反,而在市场需求的驱使下,两者都在朝着更多的兼容性发展。Flink目前不是很成熟,更多情况下Flink还是起到一个借鉴的作用。
以上就是现在比较主流的大数据运算框架的介绍了,欢迎大家收藏转发。关注小鸟,获取更多大数据级相关技术的资讯与教程。
大数据分布式计算
-
1、只需3秒快速实现求和
-
2、如何快速填充序号
-
3、如何自动填充序号(公式法)
-
4、数据条的神奇应用
-
5、多文本快速合并
-
6、查找与替换的不同玩法
-
7、快速定位到指定区域
-
8、数据排序、工资条制作
-
9、快速筛选(模糊、精确筛选)
-
10、快速插入空行
-
11、快速删除空行
-
12.快速跳转到天涯海角
-
13、.同时查看两个Excel文件
-
14、用条件格式扮靓报表
-
15、一键插入Excel图表
-
16、批量处理行高、列宽
-
17、利用拆分功能查看数据
-
18、批量录入相同内容
-
19、工作表快速跳转
-
20、批量录入表格模板(精品课程)
-
21、Excel函数与公式的应用、公式循环引用的查找
-
22、IF函数单条件判断同比增长
-
23、用sum函数 格式相同,连续多表数据汇总
-
24、excel快捷键
-
25、VLOOKUP函数——根据销售员匹配销售额
-
26、统计各部门销售总额
-
27、统计指定条件个数
-
28、怎样输入当前日期和时间、星期数
-
29、销售业绩排名
-
30、Sumproduct函数-万能函数(销售额汇总求和)
-
31、根据销售员,地区,商品名称汇总
-
32、批量替换PPT字体
-
33、给销售额数据批量添加万元单位
-
34、一秒快速核对两列数据
-
35、快速定位到指定单元格或区域
-
36、快速制作双行标题工资条
-
37、给你的表格做个瘦身
-
38、快速打开常用的Excel文件
-
39、快速打开多个Excel文件
-
40、利用创建组—快速隐藏/展开多列数据
-
41、快速制作下拉菜单
-
42、复制粘贴表格,如何保留数据源列宽格式一致?
-
43、两列数据位置互换
-
44、1秒钟扮靓报表——如何实现表格隔行换色
-
45、快速删除重复记录——保留唯一值
-
46、快速向下填充、向右填充,文本或公式
-
47、给Excel文件添加密码
-
48、插入带图片的批注
-
49、输入公式后不计算?
-
50、如何设置单元格缩进
-
51、快速解决Excel表格总显示货币格式
-
52、批量添加万元单位
-
53、你会四舍五入么?
-
54、用RAND函数机选彩票
-
55、冻结首行你会么?
-
56、超链接的高级应用
-
57、IFERROR函数-屏蔽错误值
-
58、批量填充颜色
-
59、录入数据
-
60、快速输入工号
-
61、快速行列转置
-
62、自定义缩放界面
-
63、多个单元格同时输入
-
64、如何计算立方米?
-
65、快速制作双行标题工资条
-
66、输入带方框的√和×
-
67、快速将姓名对齐
-
68、快速输入性别
-
69、按单位职务排序
-
70、自动计算合同到期日期
-
71、计算时间间隔
-
72、日期和时间的拆分
-
73、快速处理不规范的日期格式
-
74、快速填充合并单元格
-
75、效率加倍的快捷键
-
76、快速复制表格和对象
-
77、快速创建工作表副本
-
78、快速复制序列号
-
79、快速显示公式
-
80、多个单元格同时输入
-
81、快速调整显示比例
-
82、快速自动填充
-
83、快速填充(Ctrl+E)
-
84、Ctrl与数字键结合
-
85、快速将多列数据整理为1列
-
86、快速将1列数据拆分为多列
-
87、快速定位公式
-
88、快速录入数据
-
89、快速累计求和
-
90、身份证号码显示为0怎么办?
-
91、快速制作斜线表头
-
92、文本竖向显示
-
93、神奇的监视窗口
-
94、不一样的格式刷
-
95、快速美化图表
-
96、快速生成当前日期
-
97、快速找出循环引用
-
98、快速提取信息
-
99、二维表快速转换为一维表
-
100、快速多表合并