Hadoop和Spark解决了哪些并行数据库没解决的问题

Hadoop和Spark解决了哪些并行数据库没解决的问题,第1张

Spark比较好地解决了一体化数据流水线的问题。即用户可以在Spark单一一个平台上,在单一一个应用内,通过组装Spark的各种组件,高效完成多种范式的计算。例如可以用利用Spark Core做基本的清洗,利用Spark SQL做进一步的复杂ETL,再用MLlib做学习训练。同时利用Spark SQL的DataFrame和外部数据源API可以融合各种存储系统和存储格式,进行混合计算后再以指定的格式写入指定的存储系统,或以DataFrame/RDD的形式作为下一步计算的输入交给其他的Spark组件。

问题一:计算机语言有哪些?怎么分类? 计算机语言(puter Lnguage)指用于人与计算机之间通讯的语言。计算机语言是人与计算机之间传递信息的媒介。
计算机程序设计语言的发展,经历了从机器语言、汇编语言到高级语言的历程。
计算机语言主要分为三类:
- 低级语言
- 高级语言
- 专用语言
1、低级语言
- 机器语言、汇编语言和符号语言。
- 汇编语言源程序必须经过汇编,生成目标文件,然后执行。
2、高级语言
- BASIC(True basic、Qbasic、Virtual Basic)、C、PASCAL、FORTRAN、智能化语言(LISP、Prolog)等等。
- 高级语言源程序可以用解释、编译两种方式执行。通常用后一种。
我们使用的C语言就是使用的后者。
3、专用语言
CAD系统中的绘图语言和DBMS的数据库查询语言。
11机器语言
电子计算机所使用的是由0和1组成的二进制数,二进制是计算机的语言的基础。计算机发明之初,人们只能降贵纡尊,用计算机的语言去命令计算机干这干那,一句话,就是写出一串串由0和1组成的指令序列交由计算机执行,这种计算机能够认识的语言,就是机器语言。使用机器语言是十分痛苦的,特别是在程序有错需要修改时,更是如此。
因此程序就是一个个的二进制文件。一条机器语言成为一条指令。指令是不可分割的最小功能单元。而且,由于每台计算机的指令系统往往各不相同,所以,在一台计算机上执行的程序,要想在另一台计算机上执行,必须另编程序,造成了重复工作。但由于使用的是针对特定型号计算机的语言,故而运算效率是所有语言中最高的。机器语言,是第一代计算机语言。
12汇编语言
为了减轻使用机器语言编程的痛苦,人们进行了一种有益的改进:用一些简洁的英文字母、符号串来替代一个特定的指令的二进制串,比如,用ADD代表加法,MOV代表数据传递等等,这样一来,人们很容易读懂并理解程序在干什么,纠错及维护都变得方便了,这种程序设计语言就称为汇编语言,即第二代计算机语言。然而计算机是不认识这些符号的,这就需要一个专门的程序,专门负责将这些符号翻译成二进制数的机器语言,这种翻译程序被称为汇编程序。
汇编语言同样十分依赖于机器硬件,移植性不好,但效率仍十分高,针对计算机特定硬件而编制的汇编语言程序,能准确发挥计算机硬件的功能和特长,程序精炼而质量高,所以至今仍是一种常用而强有力的软件开发工具。
13高级语言
131高级语言的发展
从最初与计算机交流的痛苦经历中,人们意识到,应该设计一种这样的语言,这种语言接近于数学语言或人的自然语言,同时又不依赖于计算机硬件,编出的程序能在所有机器上通用。经过努力,1954年,第一个完全脱离机器硬件的高级语言--FORTRAN问世了,40 多年来,共有几百种高级语言出现,有重要意义的有几十种,影响较大、使用较普遍的有FORTRAN、ALGOL、COBOL、BASIC、LISP、SNOBOL、PL/1、Pascal、C、PROLOG、Ada、C++、VC、VB、Delphi、JAVA等。
特别要提到的:在C语言诞生以前,系统软件主要是用汇编语言编写的。由于汇编语言程序依赖于计算机硬件,其可读性和可移植性都很差;但一般的高级语言又难以实现对计算机硬件的直接 *** 作(这正是汇编语言的优势),于是人们盼望有一种兼有汇编语言和高级语言特性>>

问题二:计算机语言都包括什么语言?及其各个应用领域? 1、web page script languages
就是网页代码,比如Html、javascript、Css、Asp、Php、Xml都应该属于此类(照蔡的意思,Html不应该属于anguages的,可能他觉得太简单了吧,不过我觉得Html也应该算的,大家爱听谁的就听谁的好了,这个不重要)
2、Interpreted Languages(解释型语言)
包括Perl、Python、REBOL、Ruby等(后面三个听豆没听过),也常被称作Script语言,通常被用于和底下的 *** 作系统沟通。照蔡的意思,每个人至少应该学会一套这类的语言。这类语言的缺点是效率差、源代码外露――所以不适合用来开发软件产品,一般用于网页服务器。
3、Hybrid Laguages(混合型语言)
代表是JAVA和C#。介于解释型和编译型之间。蔡认为C#是NET最重要的语言,值得期待其后续发展;至于JAVA,蔡叫看他的《Sleepless in Java》――我倒!
4、PILING Languages(编译型语言)
C/C++,JAVA都是编译型语言。蔡说C++很复杂,要成为高手没三五年是不行的(就凭这句话,我决定向JAVA投降),虽然如此,但真正要成为高手的都应该懂C/C++。
关于Delphi,蔡说如果想要跨Linux和Windows平台的语言,则Delphi似乎是最好的选择。
5、Assembly Languages(汇编语言)
汇编语言是最接近于硬件的语言,不过现在几乎没多少人用了。
程序语言学习顺序建议
如果完全没有程序经验,可照这个顺序:javascript――解释型语言――混合型语言――编译型语言――汇编(如果需要的话)
用业界流行一句话做结尾“真正的程序员用C++,聪明的程序员用Delphi”,那么,什么样的程序员用JAVA呢?
虚怀若谷题外话
看在我这么晚了还这么辛苦的敲字的面子上,看到这篇帖子的朋友给点掌声吧,虽然没什么自己的思想。
另外,本文完全据蔡学镛先生同名文章精简,所以如果这篇文章给你的程序员生涯有什么不好的作用,那我不介意你去扁他。当然如果这篇文章对你有什么积极影响,我很高兴你能请我吃大餐。
如果您想学习编程,却又不知从何入手,那么您不妨看看下面的几种学习方案,可能会给您一些启示吧!
方案一 Basic语言 & Visual Basic
优点
(1)Basic 简单易学,很容易上手。
(2)Visual Basic 提供了强大的可视化编程能力,可以让你轻松地做出漂亮的程序。
(3)众多的控件让编程变得象垒积木一样简单。
(4)Visual Basic 的全部汉化让我们这些见了English就头大的人喜不自禁。
缺点
(1)Visual Basic 不是真正的面向对象的开发文具。
(2)Visual Basic 的数据类型太少,而且不支持指针,这使得它的表达能力很有限。
(3)Visual Basic 不是真正的编译型语言,它产生的最终代码不是可执行的,是一种伪代码。它需要一个动态链接库去解释执行,这使得Visual Basic 的编译速度大大变慢。
综述:方案一适合初涉编程的朋友,它对学习者的要求不高,几乎每个人都可以在一个比较短的时间里学会vB编程,并用VB>>

问题三:常用的计算机编程语言有那些 种类很多,要学的话,主要看你要从事哪个方面,编程都是大同小异,如果你学会一门,其他的学起来也就轻松许多。 如果你想当个普通的公司职员,建议C\C++这类的。 如果你想当个破解人员,建议汇编(我觉得是相当的难)。 如果你想当个黑客,拥有一定的软件知识(很低层的那种)和硬件知识(使用软件掌控硬件)和网络知识(入侵这类的)。 如果你想当个红客,主要是网络安全知识。
这需要看将来想从事什么类型软件的开发吧。如果在国内开发windows类型应用程序,据说vb比较流行,但如果开发和硬件关系较大的嵌入式程序,则使用较多的还是C语言,而网络这个方面,无论是有线还是无线,大多数都选择了JAVA。以上是从应用角度来讲的,如果从性能和投入方面分析,C语言无疑性能上最好的,但它的复杂度太高,开发和维护费用较大,一般比较好的游戏程序或者速度要求较高的程序会选择C++来开发,而VB等由于它的简易性,可以极大缩短开发周期,也是程序员的宠儿之一。另外有一种语言python在国内逐渐出现,国外好像已经流行了十几年吧,linux的引导程序和BT的一些组件都是用它开发的,具有开发周期短,易维护等特点,运行速度也比JAVA要快,并且面向对象,无平台限制,据说还开放了源码,不过由于在国内流行时间不长,各大公司出于对以前开发代码的兼容性的需要,可能一时间接受不这个语言,但可以明显看出,它的发展潜力相当大。 总而言之,C为基础,掌握JAVA,会用VB,了解python,应该看得出这几个词汇之间的轻重差别吧。:)单机编程语言主要有qb,vb,c++,vc++,c语言,我觉得最常用的是c语言,因为现在我们常用的windows *** 作系统就是用c 语言编写的.非常常用. 网络编程语言现在用的是html 语言,还有javaada
asp(含aspNET)
basic(含VB)
b(C语言的前身)
css
c(含VC)
c#(含VC#NET)
c++(含VC++NET)
fortran
foxbase
html(含xhtml和shtml)
jacc(不确定是不是这个名字了,一种开发语言的语言)
java
java script
jsp
latex
lua
pascal
perl
php
prolog
python
ruby
sgml(html和xml用得很多,单独列出,其实也是一种sgml)
shell
sql
tcl/tk
vb script
xml 最常用的是 JAVA C C++java VB 是比较好学的 最牛的要属C#了
世界上编程语言太多了,就像每个国家都有自己的语言一样的但是从编程语言发展的角度说:
大概经历 这样 四个阶段: ############################################################
第一个阶段是 机器码编程 (你肯定知道计算机只能识别0和1,以前就是这样编程的)现在的PC计算机依然是这样,冯诺依曼结构的计算机你可以去网上搜索 冯诺依曼 是干什么的你会想,为什么现在编程不是0,1,计算机怎么识别呢当你开始编程的时候,你用的编译器就在做这些事情
########################################################### ##########################################################
第二个阶段是 低级语言,比如汇编语言,台湾叫做组合语言其实组合>>

问题四:最简单的计算机语言有哪些 网页上的html是最简单的语言,但是功能实在少得可怜,除了描述网页就没有别的用途了(不过话说回来,直接描述网页也只有它才能做到,其他语言做不到)
Script(脚本)系列 也很简单
这里有很多种,常见的有Javascript(引进了Java的一些思想,不过实际内容简单得多了),VBScript (Visual Basic的一部分), C#Script(C#的一部分), 这三种主要用于网页网站设计,辅助html间接描述网页,让网页变得丰富多彩绚丽,而单机上也可以运行以执行一些可自动化的 *** 作,实现一些简单的小程序和一些手动 *** 作非常麻烦甚至是不可能的 *** 作,但还是难以编完整的独立的程序,还有批处理bat,这也是一种脚本,也很简单,专门单机使用,擅长代替大量的手工 *** 作和系统维护,但要做出我们常用的这种漂亮的程序,是不可能的。
想要做我们常用的程序要用以下几种语言,不过相比之上面的语言都复杂许多:
Basic系列是最简单的,不过因为版本多样不统一还有一些效率的问题,所以用的人不是非常多
不过其中有一个例外:Visual Basic 有微软的支持,可视化的,可以很快有成就感编出像样的程序,而且很多文档中的宏 VBA(Visual Basic for Application)还有以上说的VBScript都是它的一部分,所以还是很受欢迎的。
C语言,入门还比较简单,但挺枯燥,初学没什么成就感,要想编大程序要学得挺深,有点难,编出来的程序在高级语言中效率最高,所以是第二广泛使用的语言仅次于Java。
C++,C#,会更难一点,但是程序要编大的会相比之下简单点,这些都是C语言的扩展,其中C++擅长本机大程序,C#适合网络编程(刚才说的C#Script是它的一部分)
Java,语法上类似C++,在跨平台的时候会省你很多麻烦,所以由于手机的普及近一两年它才超过C/C++成了应用最广泛的语言。不过开发出来的程序效率比较不怎么样,但有些人挺喜欢它的思想,所以不跨平台的话,见仁见智
其余的还有Delphi,Pascal,等等不过那些都不怎么常用而且比较复杂,要图简单,强烈推荐Visual Basic,要深究程序内部的东西那还是从C开始比较好

问题五:计算机有哪些语言 工业编程语言: A+ | Ada | 汇编语言| B | Brain | C | C++ | C++/CLI| Cg | COBOL | Eiffel | Erlang | FORTRAN | IronPython | Java | JRuby | Jython | LISP | Oberon | Objective-C| Ocaml | Pascal | Perl | Powerbuilder | Python | QBASIC | R | REXX | Ruby | Self | Smalltalk | SQL | Tcl/Tk | Visual Basic | PHP | C# | F# | J# | Visual Basic NET
脚本编程语言: ActionScript | JavaScript | JScript | Nuva | PostScript | VBScript | lua
学术编程语言: APL/J | Haskell | Logo | ML | pascal|Prolog | Scheme | SAC
其他编程语言: ALGOL | BASIC| Clipper | Forth | Modula-2/Modula-3 | MUMPS | PL/I | Simula

问题六:计算机所有的编程语言都有哪些? ALGOL (also under FORTRAN)
Atlas Autocode
ALGOL 60
Simula (see also Simula based languages)
ALGOL 68
Burroughs Extended ALGOL
ALGOL W
Pascal
Ada
SPARK
Turbo Pascal
Object Pascal (Delphi)
Free Pascal (FPC)
Kylix (same as Delphi, but for Linux)
Euclid
Concurrent Euclid
Turing
Turing Plus
Object Oriented Turing
Modula-2
Modula-3
Oberon (Oberon-1)
Oberon-2
ponent Pascal
Objective Modula-2 (also under Objective-C and Smalltalk)
CPL
BCPL
B
C
tcsh (also under sh)
Alef
Limbo
Coyote
C++
Java
Groovy
Join Java
J#
Processing
X10
C#
Windows PowerShell (also under DCL, ksh and Perl)
C--
D
ColdFusion
eC (Ecere C)
LPC
Pike
Objective-C (also under Smalltalk)
Objective Modula-2 (also under Modula-2 and Smalltalk)
PCASTL (also under Lisp)
Perl
Windows PowerShell (also under C#, DCL and ksh)
S2
PHP
PDL (also under APL)
QuakeC
MCPL
APL
A+
Glee
J (also under FL)
K (also under LISP)
NESL
PDL (also under Perl)
BASIC (also under FORTRAN II)
Amiga Basic
AMOS BASIC
BASIC Stamp
BASIC09
Basic4GL
BlitzBasic
Blitz3D
BlitzMax
BlitzPlus
Business Basic
Caché Basic
AL
DarkBASIC
Euphoria
PlayBASIC
PowerBASIC
Quickbasic
QBasic
Liberty BASIC
Just BASIC
Run BASIC RealBasic
thinBasic
TI-BASIC
TrueBASIC
Visual Basic
VBScript
Visual Basic for Applications (VBA)
Visual Basic NET
YaBasic
COBOL
DIBOL
WATBOL
MS-DOS Batch files
Winbatch
CLIST
IBM Job Control Language (JCL)
IT
SNOBOL
Icon
Unico>>

问题七:计算机语言中常用的有哪些? 1 计算机常用语言除了C ,C++ ,VB ,JAVA 外还有什么? 他们的优点和区别?
还有很多了,不过一般都不怎么常用
优点嘛,C,C++运行比VB要快
VB是解释型语言,运行的话需要对应的运行库的支持。不过上手容易。
JAVA的话最大的优点是跨平台。
2 学习做网页HTML PHP ASP JSP 和(问题1)中的哪些语言挂钩 ? 是否均需要HTML做基础?
一般HTML中的脚本和VB与JAVA都有点联系。
不过语言都是通的,就是关键字,系统保留字不一样而已。
学习的话最好是要有HTML的基础。
3 PHP ASP JSP 和SQL MYSQL 等其他数据库怎样搭配?
随意的,看具体的用途。
有些数据库不能用于大型的站点,好象有限制的。
具体可以查一下数据库的说明。

问题八:电脑编程语言都有哪些啊? 工业编程语言: A+ | Ada | 汇编语言| B | Brain | C | C++ | C++/CLI| Cg | COBOL | Eiffel | Erlang | FORTRAN | IronPython | Java | JRuby | Jython | LISP | Oberon | Objective-C| Ocaml | Pascal | Perl | Powerbuilder | Python | QBASIC | R | REXX | Ruby | Self | Smalltalk | SQL | Tcl/Tk | Visual Basic | PHP | C# | F# | J# | Visual Basic NET
脚本编程语言: ActionScript | JavaScript | JScript | Nuva | PostScript | VBScript | lua
学术编程语言: APL/J | Haskell | Logo | ML | pascal|Prolog | Scheme | SAC
其他编程语言: ALGOL | BASIC| Clipper | Forth | Modula-2/Modula-3 | MUMPS | PL/I | Simula

问题九:计算机语言有多少种?分别是哪些?最早的是? 太多了 主要分为三类:高级、低级、专用语言。
高级有:FORTRAN、ALGOL、COBOL、BASIC、LISP、SNOBOL、PL/1、Pascal、C、PROLOG、Ada、C++、VC、VB、JAVA等
低级有:机器语言、汇编语言和符号语言等
专用语言:CAD系统中的绘图语言和DBMS的数据库查询语言等
最早的应该是汇编语言

问题十:计算机语言有哪些?怎么分类? 计算机语言(puter Lnguage)指用于人与计算机之间通讯的语言。计算机语言是人与计算机之间传递信息的媒介。
计算机程序设计语言的发展,经历了从机器语言、汇编语言到高级语言的历程。
计算机语言主要分为三类:
- 低级语言
- 高级语言
- 专用语言
1、低级语言
- 机器语言、汇编语言和符号语言。
- 汇编语言源程序必须经过汇编,生成目标文件,然后执行。
2、高级语言
- BASIC(True basic、Qbasic、Virtual Basic)、C、PASCAL、FORTRAN、智能化语言(LISP、Prolog)等等。
- 高级语言源程序可以用解释、编译两种方式执行。通常用后一种。
我们使用的C语言就是使用的后者。
3、专用语言
CAD系统中的绘图语言和DBMS的数据库查询语言。
11机器语言
电子计算机所使用的是由0和1组成的二进制数,二进制是计算机的语言的基础。计算机发明之初,人们只能降贵纡尊,用计算机的语言去命令计算机干这干那,一句话,就是写出一串串由0和1组成的指令序列交由计算机执行,这种计算机能够认识的语言,就是机器语言。使用机器语言是十分痛苦的,特别是在程序有错需要修改时,更是如此。
因此程序就是一个个的二进制文件。一条机器语言成为一条指令。指令是不可分割的最小功能单元。而且,由于每台计算机的指令系统往往各不相同,所以,在一台计算机上执行的程序,要想在另一台计算机上执行,必须另编程序,造成了重复工作。但由于使用的是针对特定型号计算机的语言,故而运算效率是所有语言中最高的。机器语言,是第一代计算机语言。
12汇编语言
为了减轻使用机器语言编程的痛苦,人们进行了一种有益的改进:用一些简洁的英文字母、符号串来替代一个特定的指令的二进制串,比如,用ADD代表加法,MOV代表数据传递等等,这样一来,人们很容易读懂并理解程序在干什么,纠错及维护都变得方便了,这种程序设计语言就称为汇编语言,即第二代计算机语言。然而计算机是不认识这些符号的,这就需要一个专门的程序,专门负责将这些符号翻译成二进制数的机器语言,这种翻译程序被称为汇编程序。
汇编语言同样十分依赖于机器硬件,移植性不好,但效率仍十分高,针对计算机特定硬件而编制的汇编语言程序,能准确发挥计算机硬件的功能和特长,程序精炼而质量高,所以至今仍是一种常用而强有力的软件开发工具。
13高级语言
131高级语言的发展
从最初与计算机交流的痛苦经历中,人们意识到,应该设计一种这样的语言,这种语言接近于数学语言或人的自然语言,同时又不依赖于计算机硬件,编出的程序能在所有机器上通用。经过努力,1954年,第一个完全脱离机器硬件的高级语言--FORTRAN问世了,40 多年来,共有几百种高级语言出现,有重要意义的有几十种,影响较大、使用较普遍的有FORTRAN、ALGOL、COBOL、BASIC、LISP、SNOBOL、PL/1、Pascal、C、PROLOG、Ada、C++、VC、VB、Delphi、JAVA等。
特别要提到的:在C语言诞生以前,系统软件主要是用汇编语言编写的。由于汇编语言程序依赖于计算机硬件,其可读性和可移植性都很差;但一般的高级语言又难以实现对计算机硬件的直接 *** 作(这正是汇编语言的优势),于是人们盼望有一种兼有汇编语言和高级语言特性>>

DataSourceAPI就是如何从存储系统进行读写的相关API接口。
一般而言,DataSourceAPI应该是比较底层的API,但是这个版本的DataSourceAPI依赖了上层的API,比如SQLContext、DataFrame以及RDD等。在Spark20中,SQLContext已经被遗弃了,逐渐被SparkSession替代,同理,DataFrame也被DatasetAPI取代。但是Spark无法更新数据源API以反映这些变化。我们可以看到高层次的API随着时间的推移而发展。较低层次的数据源API依赖于高层次的API不是一个好主意。如果我们想添加其他优化,比如添加limiy优化,那么我们需要添加其他接口:
buildScan(limit)
buildScan(limit,requiredCols)
buildScan(limit,filters)
buildScan(limit,requiredCols,filters)
缺乏对列式存储读取的支持从上面的buildScanAPI可以看出,Spark数据源进支持以行式的形式读取数据。即使Spark内部引擎支持列式数据表示,它也不会暴露给数据源。但是我们知道使用列式数据进行分析会有很多性能提升,所以Spark完全没必要读取列式数据的时候把其转换成行式,然后再再Spark里面转换成列式进行分析。缺乏分区和排序信息物理存储信息(例如,分区和排序)不会从数据源传递到Spark计算引擎,因此不会在Spark优化器中使用。这对于像HBase/Cassandra这些针对分区访问进行了优化的数据库来说并不友好。在DataSourceV1API中,当Spark从这些数据源读取数据时,它不会尝试将处理与分区相关联,这将导致性能不佳。写 *** 作不支持事务当前的写接口非常通用。它的构建主要是为了支持在HDFS等系统中存储数据。但是像数据库这样更复杂的Sink需要更多地控制数据写入。例如,当数据部分写入数据库并且作业出现异常时,Spark数据源接口将不会清理这些行。这个在HDFS写文件不存在这个问题,因为写HDFS文件时,如果写成功将生成一个名为_SUCCESS的文件,但是这种机制在数据库中是不存在的。在这种情况下,会导致数据库里面的数据出现不一致的状态。这种情况通常可以引入事务进行处理,但是DataSourceV1版本不支持这个功能。不支持流处理越来越多的场景需要流式处理,但是DataSourceAPIV1不支持这个功能,这导致想Kafka这样的数据源不得不调用一些专用的内部API或者独自实现。正是因为DataSourceAPIV1的这些缺点和不足,引入DataSourceAPIV2势在必行。DataSourceAPIV2为了解决DataSourceV1的一些问题,从ApacheSpark230版本开始,社区引入了DataSourceAPIV2,在保留原有的功能之外,还解决了DataSourceAPIV1存在的一些问题,比如不再依赖上层API,扩展能力增强。

Spark SQL是一种用于处理大型数据集的分布式计算引擎,它可以处理各种数据源,包括英文字母。它可以提供高性能的SQL查询,以及丰富的数据挖掘功能,可以帮助用户快速解决复杂的数据分析问题。Spark SQL支持多种数据源,包括文件、数据库、NoSQL存储和流式数据处理系统。它可以支持多种数据格式,包括JSON、Parquet、Avro和ORC等。Spark SQL可以支持多种查询语言,包括SQL、HiveQL和Scala等,可以帮助用户快速构建复杂的数据分析应用程序。

f(isset($_POST['submit'])&&$_POST['submit']=='提交'){
3 //判断是否是提交过来的
4 $intext = $_POST['intext'];
5 if($intext!=null||$intext!=''){
6 $link = mysql_connect("localhost", "root", "123456");
7 //数据库配置信息 第一个参数数据库位置第二个是用户名第三个是密码
8 mysql_select_db("szn_test");
9 //设置要使用的数据库
10 $sql = "select from demo where res = '"$intext"'";

之前做过一年的spark研发,之前在阿里与腾讯也做了很久的hive,所以对这方面比较了解。

第一:其实快多少除了跟spark与hive本身的技术实现外,也跟机器性能,底层 *** 作系统的参数优化息息相关,不能一概而论。

第二:hive 目前应该还是业界的主流,毕竟快与慢很多时候并非是至关重要的,对于一个生产系统来说,更重要的应该是稳定性,spark毕竟还算是比较新兴的事务,快确实快,但是稳定性上距离hive相差甚远。关于spark我们也修复了很多关于内存泄露的BUG,因为您问的是性能,所以不过多介绍(可以跟我要YDB编程指南,里面有我对这些BUG的修正)

第三:关于性能,我测试的可能不够全面,只能在排序与检索过滤上提供我之前的基于YDB的BLOCK sort测试报告供您参考(百度上贴word太费劲,您可以跟我要 word文档)。

排序可以说是很多日志系统的硬指标(如按照时间逆序排序),如果一个大数据系统不能进行排序,基本上是这个系统属于不可用状态,排序算得上是大数据系统的一个“刚需”,无论大数据采用的是hadoop,还是spark,还是impala,hive,总之排序是必不可少的,排序的性能测试也是必不可少的。
有着计算奥运会之称的Sort Benchmark全球排序每年都会举行一次,每年巨头都会在排序上进行巨大的投入,可见排序速度的高低有多么重要!但是对于大多数企业来说,动辄上亿的硬件投入,实在划不来、甚至远远超出了企业的项目预算。相比大数据领域的暴力排序有没有一种更廉价的实现方式?
在这里,我们为大家介绍一种新的廉价排序方法,我们称为blockSort。
500G的数据300亿条数据,只使用4台 16核,32G内存,千兆网卡的虚拟机即可实现 2~15秒的 排序 (可以全表排序,也可以与任意筛选条件筛选后排序)。

一、基本的思想是这样的,如下图所示:

1将数据按照大小预先划分好,如划分成 大、中、小三个块(block)。

2如果想找最大的数据,那么只需要在最大的那个块里去找就可以了。

3这个快还是有层级结构的,如果每个块内的数据量很多,可以到下面的子快内进行继续查找,可以分多个层进行排序。

4采用这种方法,一个亿万亿级别的数据(如long类型),最坏最坏的极端情况也就进行2048次文件seek就可以筛选到结果。

怎么样,原理是不是非常简单,这样数据量即使特别多,那么排序与查找的次数是固定的。

二、这个是我们之前基于spark做的性能测试,供大家参考

在排序上,YDB具有绝对优势,无论是全表,还是基于任意条件组合过滤,基本秒杀Spark任何格式。

测试结果(时间单位为秒)

三、当然除了排序上,我们的其他性能也是远远高于spark,这块大家也可以了解一下

1、与Spark txt在检索上的性能对比测试。

注释:备忘。下图的这块,其实没什么特别的,只不过由于YDB本身索引的特性,不想spark那样暴力,才会导致在扫描上的性能远高于spark,性能高百倍不足为奇。

下图为ydb相对于spark txt提升的倍数

2、这些是与 Parquet 格式对比(单位为秒)

3、与ORACLE性能对比

跟传统数据库的对比,已经没啥意义,Oracle不适合大数据,任意一个大数据工具都远超oracle 性能。

4稽查布控场景性能测试

四、YDB是怎么样让spark加速的?

基于Hadoop分布式架构下的实时的、多维的、交互式的查询、统计、分析引擎,具有万亿数据规模下的秒级性能表现,并具备企业级的稳定可靠表现。

YDB是一个细粒度的索引,精确粒度的索引。数据即时导入,索引即时生成,通过索引高效定位到相关数据。YDB与Spark深度集成,Spark对YDB检索结果集直接分析计算,同样场景让Spark性能加快百倍。

五、哪些用户适合使用YDB?

1传统关系型数据,已经无法容纳更多的数据,查询效率严重受到影响的用户。

2目前在使用SOLR、ES做全文检索,觉得solr与ES提供的分析功能太少,无法完成复杂的业务逻辑,或者数据量变多后SOLR与ES变得不稳定,在掉片与均衡中不断恶性循环,不能自动恢复服务,运维人员需经常半夜起来重启集群的情况。

3基于对海量数据的分析,但是苦于现有的离线计算平台的速度和响应时间无满足业务要求的用户。

4需要对用户画像行为类数据做多维定向分析的用户。

5需要对大量的UGC(User Generate Content)数据进行检索的用户。

6当你需要在大数据集上面进行快速的,交互式的查询时。

7当你需要进行数据分析,而不只是简单的键值对存储时。

8当你想要分析实时产生的数据时。

ps: 说了一大堆,说白了最适合的还是踪迹分析因为数据量大,数据还要求实时,查询还要求快。这才是关键。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13406405.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-30
下一篇 2023-07-30

发表评论

登录后才能评论

评论列表(0条)

保存