hadoop有三种模式,即单机模式、伪分布模式和集群模式,对这三种模式的效率分析有利于读者更进一步的了解hadoop及大数据分析师。对于这三种模式的安装,在经管之家的大数据培训会详细介绍并要求学员掌握。
比较这三种模式的效率,可以通过一个hadoop的例子进行比较分析。
一、hadoop的例子--蒙特卡罗法求π值介绍
- 1. 蒙特卡罗法求π值的实验例子
讲hadoop一般都喜欢举蒙特卡罗法求PI值的例子,这个例子的起源,要追溯到1777年,古稀之年的蒲丰(法国数学家、自然科学家)在家中请来很多客人玩投针游戏(针长是线距之半),他事先没有给客人讲与π有关的事。客人们虽然不知道主人的用意,但是都参加了游戏。他们共投针2212次,其中704次相交。蒲丰说,2212/704=3.142,这就是π值。这着实让到场的客人惊喜不已。
以上这个例子是著名的蒲丰投针实验,更详细的过程,读者也可以参看神奇数学中的投针游戏视频:http://my.tv.sohu.com/us/155377172/59974471.shtml,更形象的把握这个例子。
- 2. 蒙特卡罗法
蒙特卡罗法是以概率和统计理论方法为基础的一种计算方法。将所求解的问题同一定的概率模型相联系,用电子计算机实现统计模拟或抽样,以获得问题的近似解。为象征性地表明这一方法的概率统计特征,故借用赌城蒙特卡罗命名。又称统计模拟法、随机抽样技术。由S.M.乌拉姆和J.冯·诺伊曼在20世纪40年代为研制核武器而首先提出 。简单的说就是指用统计模拟实验的办法求得问题的近似解。比如hadoop的examples中计算π的方法,就是使用大量实验求得π值的近似解。
- 3. hadoop中计算π的方法
hadoop的examples中的计算π的方法属于是采用大量采样的统计学方法,属于计算密集型的工作。该方法的JAVA文件位于hadoop-mapreduce-examples项目下(hadoop源代码项目如何查看会在人大经济论坛的大数据培训中讲到),文件名为QuasiMonterCarlo.java。 该方法有两个参数,第1个指的是要运行map任务的个数,第2个数字指的是每个map任务,要投掷的次数,2个参数的乘积就是总的投掷次数。
在hadoop的三种模式下,都可以近似地计算π值。三种模式安装好后,使用如下命令即可计算π值:
./bin/hadoop jar./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar pi 10 20
命令中设置map任务的个数为10个,每个map上投掷的次数为20次。实验中,单机模式和伪分布模式都使用一台计算机,由于条件的限制,集群模式仅使用三台计算机,所有这些计算机的配置都是一样的。
二、对三种模式运行效率比较的描述性分析
将上述命令在hadoop的三个模式上运行,得到运行结果如下三个图所示:
- 1.单机模式
- 2.伪分布模式
- 3.集群模式
从三个图上的运行结果可以看出,三种模式下,程序的运行时间呈逐渐上升的过程,如下图所示:
在200个样本量的情况下,随着模式的不同,运行时间在逐渐增加,在集群模式下,运行时间最长。说明在样本量很少,且集群结点数据很少的情况下,集群模式的运行效率低于单机模式或者伪分布模式。如果在集群结点很多(条件许可)的情况下,实验结果可能是另一个情形,但有一点是可以肯定的,就是hadoop可以实现单机的功能,但它在处理小规模数据时是没有优势的,因此读者在学习hadoop时一定要明确其在大数据时代才有用武之地这一特点,才能更好地学好hadoop。
三、对三种模式运行效率比较的统计分析
在描述性分析中,我们只是感性地了解了hadoop的集群模式在处理小数据时的劣势,无法对其得出科学性论断。一般的大数据工程师也都是仅限于此,不知道也不会进行更深入的分析。将上述实验过程在三个模式中均运行11次(本文只是作为一种示例,展示大数据分析的思想,仅采样11次,感兴趣的读者可以进行多次实验,在人大经济论坛的培训中会以作业的形式要求学员进行更多次数的采样),得到样本数据如下:
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | |
单机 | 1.392 | 1.359 | 1.493 | 2.485 | 1.447 | 2.496 | 2.055 | 1.411 | 1.404 | 1.381 | 1.451 |
伪分布 | 3.764 | 2.477 | 2.467 | 2.397 | 2.443 | 3.019 | 2.475 | 2.417 | 2.454 | 2.566 | 2.419 |
集群 | 103.424 | 107.096 | 60.931 | 96.058 | 117.477 | 42.444 | 87.871 | 24.747 | 20.696 | 19.753 | 52.096 |
对样本数据使用SPSS进行方差分析(为什么选择方差分析,和运行软件过程,在培训时者会有涉及),得到的实验结果如下: [td]
Descriptives | ||||||||
运行时间 | ||||||||
N | Mean | Std. Deviation | Std. Error | 95% Confidence Interval for Mean | Minimum | Maximum | ||
Lower Bound | Upper Bound | |||||||
1 | 11 | 1.67036 | .449345 | .135483 | 1.36849 | 1.97224 | 1.359 | 2.496 |
2 | 11 | 2.62709 | .415380 | .125242 | 2.34803 | 2.90615 | 2.397 | 3.764 |
3 | 11 | 66.59936 | 37.126998 | 11.194211 | 41.65711 | 91.54162 | 19.753 | 117.477 |
Total | 33 | 23.63227 | 37.188178 | 6.473631 | 10.44592 | 36.81863 | 1.359 | 117.477 |
[td]
Test of Homogeneity of Variances | |||
运行时间 | |||
Levene Statistic | df1 | df2 | Sig. |
53.241 | 2 | 30 | .000 |
[td]
ANOVA | |||||
运行时间 | |||||
Sum of Squares | df | Mean Square | F | Sig. | |
Between Groups | 30466.854 | 2 | 15233.427 | 33.145 | .000 |
Within Groups | 13787.884 | 30 | 459.596 |
|
|
Total | 44254.738 | 32 |
|
|
|
[td]
Multiple Comparisons | |||||||
Dependent Variable:运行时间 | |||||||
| (I) 模式 | (J) 模式 | Mean Difference (I-J) | Std. Error | Sig. | 95% Confidence Interval | |
| Lower Bound | Upper Bound | |||||
LSD | 1 | 2 | -.956727 | 9.141276 | .917 | -19.62570 | 17.71225 |
3 | -64.929000* | 9.141276 | .000 | -83.59798 | -46.26002 | ||
2 | 1 | .956727 | 9.141276 | .917 | -17.71225 | 19.62570 | |
3 | -63.972273* | 9.141276 | .000 | -82.64125 | -45.30330 | ||
3 | 1 | 64.929000* | 9.141276 | .000 | 46.26002 | 83.59798 | |
2 | 63.972273* | 9.141276 | .000 | 45.30330 | 82.64125 | ||
Tamhane | 1 | 2 | -.956727* | .184502 | .000 | -1.43757 | -.47588 |
3 | -64.929000* | 11.195031 | .001 | -96.94669 | -32.91131 | ||
2 | 1 | .956727* | .184502 | .000 | .47588 | 1.43757 | |
3 | -63.972273* | 11.194912 | .001 | -95.98989 | -31.95466 | ||
3 | 1 | 64.929000* | 11.195031 | .001 | 32.91131 | 96.94669 | |
2 | 63.972273* | 11.194912 | .001 | 31.95466 | 95.98989 | ||
*. The mean difference is significant at the 0.05 level. |
从上面的实验结果数据可以看出,模型具有显著的统计学意义,而且在95%或者更高的可信度的概率保证程度下,可以得出三种模式的运行效率有显著差异的结论。当然笔者在现有的硬件环境下,集群模式的运行效率是较差的,这也更好地提示读者需要更好地理解hadoop的应用条件。读者可在此基础上,增加map个数和投掷次数,并增加集群的设备个数,当数据量达到海量程度的时候,集群模式将优于单机模式,本文由于条件的限制,就不再展开,此处仅描述其实验和分析过程,以供读者参考。
四、大数据分析师与大数据工程师的思考
【工程师之论】 由于hadoop架构基于java语言,使得最早进入这个行业的都是JAVA程序员,但他们的宿命就在于他们太IT了,因此他们只能是大数据工程师。一般来讲,大数据工程师只会对三种模式运行效率比较的描述性分析,很难进行多次实验数据的数据分析。当发现上述结论时,他们更倾向于将结果以图表的形式告诉决策者,或者用更深的计算机术语进行描述问题的原因,或者追求更好的程序方面的调优。
【分析师之论】有一点我们是可以肯定的,由于计算机运行过程的随机性,因此每次运行的结果都是随机的,根据此一特点,因此每一次程序运行的结果都是随机实验,得到的运行时间都是一个随机抽样,这样在比较三种模式的运行效率时,必须使用统计学中抽样估计方法进行分析,因此作为一名大数据分析师,此时应该做的是进行多次的随机抽样,并选择方差分析进行统计分析,最后得出一个科学的结论。
五、结论
通过本例,除了认识了hadoop三种模式下运行效率的差距,我们还应更深刻体会大数据分析师和大数据工程师的区别,那就是否具有数据分析的思维。作为一名优秀的大数据分析师,应拥有数据分析的思维,才能得出更科学的企业运营需要的结论,为企业创造更多的价值。在培训大数据分析师时,应更多的引导学员进行深入细致的统计分析,这一点也是经管之家hadoop大数据培训的一大特色。
2015年2月7日
经管之家大数据讲师团