免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 26168 | 回复: 19
打印 上一主题 下一主题

[Spark] [话题讨论]Spark到底有多么高大上? [复制链接]

论坛徽章:
32
CU大牛徽章
日期:2013-05-20 10:45:13每日论坛发贴之星
日期:2015-09-07 06:20:00每日论坛发贴之星
日期:2015-09-07 06:20:00数据库技术版块每日发帖之星
日期:2015-12-13 06:20:0015-16赛季CBA联赛之江苏
日期:2016-03-03 11:56:13IT运维版块每日发帖之星
日期:2016-03-06 06:20:00fulanqi
日期:2016-06-17 17:54:25IT运维版块每日发帖之星
日期:2016-07-23 06:20:0015-16赛季CBA联赛之佛山
日期:2016-08-11 18:06:41JAVA
日期:2016-10-25 16:09:072017金鸡报晓
日期:2017-01-10 15:13:292017金鸡报晓
日期:2017-02-08 10:33:21
跳转到指定楼层
[收藏(0)] [报告]
发表于 2016-03-03 11:53 |只看该作者 |正序浏览
获奖详情:http://bbs.chinaunix.net/thread-4245932-1-1.html



话题背景:

生活离不开水,同样离不开数据,我们被数据包围,在数据中生活。当数据越来越多时,就成了大数据。

想要理解大数据,就需要理解大数据相关的查询、处理、机器学习、图计算和统计分析等,Spark 作为新一代轻量级大数据快速处理平台,集成了大数据相关的各种能力,是理解大数据的首选。

现在,让我们以向大师致敬的方式开始学习之旅,向Doug Cutting 和Matei Zaharia 两位大师致敬!

什么是Spark?Spark作为Apache 顶级的开源项目,是一个快速、通用的大规模数据处理引擎,和Hadoop 的MapReduce 计算框架类似,但是相对于MapReduce,Spark 凭借其可伸缩、基于内存计算等特点,以及可以直接读写Hadoop 上任何格式数据的优势,进行批处理时更加高效,并有更低的延迟。相对于“ one stack to rule them all ”的目标,实际上,Spark 已经成为轻量级大数据快速处理的统一平台,各种不同的应用,如实时流处理、机器学习、交互式查询等,都可以通过Spark 建立在不同的存储和运行系统上,下面我们来具体认识一下Spark。




讨论话题:
1、Spark在大数据领域的影响力越来越强,采用Spark解决方案的公司也越来越多,那么问题来了,为什么我们国家搞不出Spark这样的技术?为什么高大上的技术大多在美国?
2、请对比分析MLlib库与Apache Mahout库
3、在Spark开发中使用Scala好?还是使用Java好?你的理由是?
说明:可任选1题或多题回答,回答越有深度越容易中奖。



讨论时间
2016年3月3日至2016年4月3日



活动奖励
活动结束后将选取4名讨论精彩的童鞋,每人赠送一本《Spark核心技术与高级应用》图书作为奖励。



奖品简介

作者: 于俊    向海    代其锋    马海平   
丛书名: 大数据技术丛书
出版社:机械工业出版社
出版日期:2016 年1月
开本:16开
页码:300
版次:1-1
当当



内容简介
于俊、向海、代其锋、马海平编写的《Spark核 心技术与高级应用》是spark领域少有的专注于核心 原理与深度应用的*作,由科大讯飞和百分点科技的 4位大数据专家撰写。不仅细致介绍了spark的程序开 发、编程模型、作业执行解析等基础知识,还深度讲 解了spark sQL、sparkML、spark stteaming等大量 内部模块和周边模块的原理与使用。除此之外,还从 管理和性能优化的角度对spark进行了深入探索。


论坛徽章:
5
IT运维版块每日发帖之星
日期:2016-05-25 06:20:00每日论坛发贴之星
日期:2016-05-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-29 06:20:00数据库技术版块每日发帖之星
日期:2016-06-01 06:20:00每日论坛发贴之星
日期:2016-06-01 06:20:00
19 [报告]
发表于 2016-05-22 18:14 |只看该作者
thank for you ,i'm big-brother of student,it's very well

论坛徽章:
3
CU十二周年纪念徽章
日期:2013-10-24 15:41:34双子座
日期:2014-03-02 00:11:39fulanqi
日期:2016-06-17 17:54:25
18 [报告]
发表于 2016-04-03 14:37 |只看该作者
1、Spark在大数据领域的影响力越来越强,采用Spark解决方案的公司也越来越多,那么问题来了,为什么我们国家搞不出Spark这样的技术?为什么高大上的技术大多在美国?
从创新的视野角度来看,
其实我们国人不缺创造力,但是我们缺乏培养创造力的土壤,我们的创造形不成影响力,没人看见也没人重视。
1)我们的创新缺少深度
常见的是组合型创新,只是简单的把两个产品的功能组合在一起。这是一种应用型创新,这种创新就是别人有一个先进技术,我们拿来用在一个某个特殊场合。这种没有深度一拍脑袋就能想到的创新,没有任何技术壁垒也很容易被别人复制甚至超越。
2)我们的创新难以形成产业规模
一个产业只有达到一定规模,带动上下游从算法研究、芯片设计、软件设计、外观设计、界面设计等各个领域的大量优秀企业参与,才能成为有纵深有影响力的创新。
3)缺少创新的环境
当今社会的创新很少是一个人闭门冥思苦想就可以做出的。一个点子从萌芽到最后产出创新成果,需要非常多的步骤。我们不擅长通过热烈的讨论把一些创新的火花逐渐做成有深度的创意,我们的企业也不擅长通过合作竞争做成一个创新。长期文化和政治生活的影响,让我们养成了习惯基于立场驱动的联盟,而不是利益驱动的合作竞争。
4)严谨科学的创新流程
一个点子在变成产品的路上需要无数次的磨合通过科学的流程才能做出成功的产品,这里没有捷径。




3、在Spark开发中使用Scala好?还是使用Java好?你的理由是?
使用两者都可以,就我而言,更喜欢使用Scala。因为
1)Scala代码更为精简,我喜欢这种精简。
2)Scala支持函数式编程,Java 8虽然也支持,但Java 8的函数式编程还很弱,远不如Scala。
3)类型安全,虽然Java是一种类型安全的语言, 但是Scala的类型显然更加安全。
要说Scala的缺点,那肯定是学习曲线比较陡峭吧。

评分

参与人数 1信誉积分 +10 收起 理由
jieforest + 10 很给力!

查看全部评分

论坛徽章:
3
IT运维版块每日发帖之星
日期:2015-12-05 06:20:00数据库技术版块每日发帖之星
日期:2015-12-05 06:20:00luobin
日期:2016-06-17 17:46:36
17 [报告]
发表于 2016-03-21 09:52 |只看该作者
好               

论坛徽章:
3
15-16赛季CBA联赛之同曦
日期:2016-03-15 17:09:4315-16赛季CBA联赛之新疆
日期:2016-04-18 14:21:37shanzhi
日期:2016-06-17 17:59:31
16 [报告]
发表于 2016-03-15 17:14 |只看该作者
1、Spark在大数据领域的影响力越来越强,采用Spark解决方案的公司也越来越多,那么问题来了,为什么我们国家搞不出Spark这样的技术?为什么高大上的技术大多在美国?
这就是技术的沉淀了,一步领先步步领先。

2、请对比分析MLlib库与Apache Mahout库
它们主要的区别是来自底层的框架。若Mahout主要是Hadoop MapReduce框架,而MLib则是Spark。更具体的说就是它们工作负载的差异。如果将你的ML算法映射到单一的MR时,它们主要的区别是启动所耗费的时间,Hadoop MR需要耗费几十秒,而Spark仅仅只需要1秒钟。
倘若将你的算法映射到大量的任务的时候则会有很大的不同,在这种情况下,倘若对于每次迭代具有相同的差异,请看下面的例子
假设需要100次迭代,每次需要CPU运行5秒:
Spark:总共需要花费100*5+100*1=600秒
Hadoop:总共需要花费100*5+100*30=3500秒

3、在Spark开发中使用Scala好?还是使用Java好?你的理由是?
Spark 是在 Scala 语言中实现的,它将 Scala 用作其应用程序框架。Spark 和 Scala 能够紧密集成,其中的 Scala 可以像操作本地集合对象一样轻松地操作分布式数据集,所以还是用Scala好!

说明:可任选1题或多题回答,回答越有深度越容易中奖。

论坛徽章:
0
15 [报告]
发表于 2016-03-14 10:14 |只看该作者
TranzAlpine是1910年牛顿家族在新西兰南岛阿什伯顿创建的百年家族企业。百年老字号,百分百新西兰有机认证麦卢卡-卡玛西混合蜂蜜。本天然野生混合丛林蜂蜜是由我们的蜂蜜在最佳收成时机采集的。它们的采集时机上佳,蜂蜜由混合麦卢卡与卡玛西花粉一起制成。

   

论坛徽章:
6
数据库技术版块每日发帖之星
日期:2015-11-27 06:20:00程序设计版块每日发帖之星
日期:2015-12-01 06:20:00每日论坛发贴之星
日期:2015-12-01 06:20:0015-16赛季CBA联赛之佛山
日期:2017-03-26 23:38:0315-16赛季CBA联赛之江苏
日期:2017-07-17 10:08:4415-16赛季CBA联赛之北京
日期:2018-03-04 17:01:50
14 [报告]
发表于 2016-03-10 22:01 |只看该作者
当数据越来越多时,spk就成了。

论坛徽章:
0
13 [报告]
发表于 2016-03-10 14:21 |只看该作者
回复 1# jieforest


   

论坛徽章:
15
2015七夕节徽章
日期:2015-08-21 11:06:172017金鸡报晓
日期:2017-01-10 15:19:56极客徽章
日期:2016-12-07 14:07:30shanzhi
日期:2016-06-17 17:59:3115-16赛季CBA联赛之四川
日期:2016-04-13 14:36:562016猴年福章徽章
日期:2016-02-18 15:30:34IT运维版块每日发帖之星
日期:2016-01-28 06:20:0015-16赛季CBA联赛之新疆
日期:2016-01-25 14:01:34IT运维版块每周发帖之星
日期:2016-01-07 23:04:26数据库技术版块每日发帖之星
日期:2016-01-03 06:20:00数据库技术版块每日发帖之星
日期:2015-12-01 06:20:00IT运维版块每日发帖之星
日期:2015-11-10 06:20:00
12 [报告]
发表于 2016-03-10 13:08 |只看该作者
本帖最后由 heguangwu 于 2016-03-10 14:20 编辑

1、Spark在大数据领域的影响力越来越强,采用Spark解决方案的公司也越来越多,那么问题来了,为什么我们国家搞不出Spark这样的技术?为什么高大上的技术大多在美国?
美国是研究到产品转化最多最成功的国家,原因是多方面的,从我了解的的信息总结如下,如有错误请轻拍
1)美国教授有全世界最优秀博士生人才和自由开放的研究氛围,很多教授可以做专心一个事情五六年,且在前两三年都没有论文产出,如果是中国估计早就慌张了
2)教授毕业的博士生大多去了美国的科技大公司,后面和导师及团队联系比较紧密,所以工业级和学术界没有隔膜
3)良好的产业环境,美国教授可以保留教职投身工业界,我记得好像是3年,而且这个是有多次的,比如spark的UC Berkeley AMP lab这帮人,mit的Mike Stonebraker等等
4)良好的投资环境和知识产权保护,风投一般都看好并投入了大量的钱支撑再加上硅谷大量的人才,同时风投和工业圈关系很好,很容易形成一股技术潮流,而不会被人恶意模仿

3、在Spark开发中使用Scala好?还是使用Java好?你的理由是?
看自己熟悉那样,当前看来还是scala配合好一点,Java也能用,但使用起来还是比较别扭

评分

参与人数 1信誉积分 +5 收起 理由
jieforest + 5 赞一个!

查看全部评分

论坛徽章:
0
11 [报告]
发表于 2016-03-10 10:55 |只看该作者
为什么我们国家做不出spark,这种问题真不适合在技术版面上讨论,没啥意义。
Scala语言没太仔细研究过,不过有什么必要一个一个地发明新的语言。 什么叫java学习曲线高?  学计算机专业的有哪个不懂C或Java的,一遍遍学习新的语言,新的语法,而实质功能是其实是一样的,这是不是有些浪费时间啊?

论坛徽章:
10
数据库技术版块每日发帖之星
日期:2015-06-14 22:20:00数据库技术版块每日发帖之星
日期:2016-03-10 06:20:00数据库技术版块每日发帖之星
日期:2015-12-01 06:20:00IT运维版块每日发帖之星
日期:2015-11-09 06:20:00IT运维版块每日发帖之星
日期:2015-11-02 06:20:00IT运维版块每日发帖之星
日期:2015-07-13 22:59:28IT运维版块每日发帖之星
日期:2015-06-23 22:20:00程序设计版块每日发帖之星
日期:2015-06-21 22:20:00每日论坛发贴之星
日期:2015-06-14 22:20:00IT运维版块每日发帖之星
日期:2016-08-02 06:20:00
10 [报告]
发表于 2016-03-07 18:29 |只看该作者
1、Spark在大数据领域的影响力越来越强,采用Spark解决方案的公司也越来越多,那么问题来了,为什么我们国家搞不出Spark这样的技术?为什么高大上的技术大多在美国?
技术积累还没到。
2、请对比分析MLlib库与Apache Mahout库
它们主要的区别将来自底层的框架。若Mahout主要是Hadoop MapReduce框架,而MLib则是Spark。更具体的说就是它们工作负载的差异。如果将你的ML算法映射到单一的MR时,它们主要的区别是启动所耗费的时间,Hadoop MR需要耗费几十秒,而Spark仅仅只需要1秒钟。倘若将你的算法映射到大量的任务的时候则会有很大的不同,在这种情况下,倘若对于每次迭代具有相同的差异,请看下面的例子
假设需要100次迭代,每次需要CPU运行5秒:
Spark:总共需要花费100*5+100*1=600秒
Hadoop:总共需要花费100*5+100*30=3500秒
在同一时间的Hadoop MR是更加成熟的框架,其次是Spark。如果你有大量的数据需要处理,那么稳定则是最重要的,这里可以考虑Mahout作为替代的选择。
即:mahout 支持mapreduce,mlib 支持spark。如果ML 算法是单一的一个MRjob.跟spark相比主要的区别是启动时候的耗时。
2).mahout 是在2014之后支持spark。现在可以支持H2O.
3).如果你想跑一些通用的引擎如R,那么可以使用mahout。如果你想使用特定的算法,可以根据情况来选。
4).Mahout包含一些老的hadoop算法,

MLlib机器学习算法的流程
用户可以容易地使用MLbase这个工具来处理自己的数据。大部分的机器学习算法都包含训练以及预测两个部分,训练出模型,然后对未知样本进行预测。Spark中的机器学习包也是如此。
Spark将机器学习算法都分成了两个模块:
    训练模块:通过训练样本输出模型参数
    预测模块:利用模型参数初始化,预测测试样本,输出与测值。
MLbase提供了函数式编程语言Scala,利用MLlib可以很方便的实现机器学习的常用算法。
比如说,我们要做分类,只需要写如下scala代码:
    1 var X = load("some_data", 2 to 10)
    2 var y = load("some_data", 1)
    3 var (fn-model, summary) = doClassify(X, y)
代码解释:X是需要分类的数据集,y是从这个数据集里取的一个分类标签,doClassify()分类。
这样的处理有两个主要好处:
    每一步数据处理很清楚,可以很容易地可视化出来;
    对用户来说,用ML算法处理是透明的,不用关心和考虑用什么分类方法,是SVM还是AdaBoost,SVM用的kernel是线性的还是RBF的,original和scaled的参数调成多少等等。
MLbase的三大组成部分之一:ML Optimizer,会选择它认为最适合的已经在内部实现好了的机器学习算法和相关参数,来处理用户输入的数据,并返回模型或别的帮助分析的结果。总体上的处理流程如下图:
    用户输入的Task比如doClassify(X, y)或者做协同过滤doCollabFilter(X, y)、图计算findTopKDegreeNodes(G, k = 1000)之类的事情,先会传给Parser处理,然后交给LLP。LLP是logical learning plan,即是逻辑上的一个学习选择过程,在这个过程里选择该用什么算法,特征提取应该用什么做,参数应该选什么,数据集怎么拆子数据集的策略等事情。
    LLP决定之后交给Optimizer。Optimizer是MLbase的核心,它会把数据拆分成若干份,对每一份使用不同的算法和参数来运算出结果,看哪一种搭配方式得到的结果最优(注意这次最优结果是初步的),优化器做完这些事之后就交给PLP。
    PLP是physical learning plan,即物理(实际)执行的计划,让MLbase的master把任务分配给具体slave去最后执行之前选好的算法方案,把结果计算出来返回,同时返回这次计算的学习模型。
    这个流程是Task -> Parser -> LLP -> Optimizer -> PLP -> Execute -> Result/Model,先从逻辑上,在已有的算法里选几个适合这个场景的,让优化器都去做一遍,把认为当时最优的方案给实际执行的部分去执行,返回结果。
MLbase不仅仅把结果返回给用户。在LLP、Optimizer,MLbase会存储一些中间结果和特征,然后会继续搜寻和测试结果更好的算法和相关参数,并且会通知用户。LLP内部实现的算法是可以扩充的。
总之,MLbase会自动寻找合适的算法,自动选择和优化,还可以进行扩充。
     MLlib实现KMeans
以MLlib实现KMeans算法,利用MLlib KMeans训练出来的模型,可以对新的数据作出分类预测,具体见代码和输出结果。
Scala代码:
    1 package com.hq
    2
    3 import org.apache.spark.mllib.clustering.KMeans
    4 import org.apache.spark.mllib.linalg.Vectors
    5 import org.apache.spark.{SparkContext, SparkConf}
    6
    7 object KMeansTest {
    8   def main(args: Array[String]) {
    9     if (args.length < 1) {
    10       System.err.println("Usage: <file>")
    11       System.exit(1)
    12     }
    13
    14     val conf = new SparkConf()
    15     val sc = new SparkContext(conf)
    16     val data = sc.textFile(args(0))
    17     val parsedData = data.map(s => Vectors.dense(s.split(' ').map(_.toDouble)))
    18     val numClusters = 2
    19     val numIterations = 20
    20     val clusters = KMeans.train(parsedData,numClusters,numIterations)
    21
    22     println("------Predict the existing line in the analyzed data file: "+args(0))
    23     println("Vector 1.0 2.1 3.8 belongs to clustering "+ clusters.predict(Vectors.dense("1.0 2.1 3.8".split(' ').map(_.toDouble))))
    24     println("Vector 5.6 7.6 8.9 belongs to clustering "+ clusters.predict(Vectors.dense("5.6 7.6 8.9".split(' ').map(_.toDouble))))
    25     println("Vector 3.2 3.3 6.6 belongs to clustering "+ clusters.predict(Vectors.dense("3.2 3.3 6.6".split(' ').map(_.toDouble))))
    26     println("Vector 8.1 9.2 9.3 belongs to clustering "+ clusters.predict(Vectors.dense("8.1 9.2 9.3".split(' ').map(_.toDouble))))
    27     println("Vector 6.2 6.5 7.3 belongs to clustering "+ clusters.predict(Vectors.dense("6.2 6.5 7.3".split(' ').map(_.toDouble))))
    28
    29     println("-------Predict the non-existent line in the analyzed data file: ----------------")
    30     println("Vector 1.1 2.2 3.9  belongs to clustering "+ clusters.predict(Vectors.dense("1.1 2.2 3.9".split(' ').map(_.toDouble))))
    31     println("Vector 5.5 7.5 8.8  belongs to clustering "+ clusters.predict(Vectors.dense("5.5 7.5 8.8".split(' ').map(_.toDouble))))
    32
    33     println("-------Evaluate clustering by computing Within Set Sum of Squared Errors:-----")
    34     val wssse = clusters.computeCost(parsedData)
    35     println("Within Set Sum of Squared Errors = "+ wssse)
    36     sc.stop()
    37   }
    38 }
3.4 以Spark集群standalone方式运行
①在IDEA打成jar包(如果忘记了,参见Spark:用Scala和Java实现WordCount),上传到用户目录下/home/ebupt/test/kmeans.jar
②准备训练样本数据:hdfs://eb170:8020/user/ebupt/kmeansData,内容如下
[ebupt@eb170 ~]$ hadoop fs -cat ./kmeansData
    1.0 2.1 3.8
    5.6 7.6 8.9
    3.2 3.3 6.6
    8.1 9.2 9.3
    6.2 6.5 7.3
③spark-submit提交运行
[ebupt@eb174 test]$ spark-submit --master spark://eb174:7077 --name KmeansWithMLib --class com.hq.KMeansTest --executor-memory 2G --total-executor-cores 4 ~/test/kmeans.jar hdfs://eb170:8020/user/ebupt/kmeansData
输出结果摘要:
    1 ------Predict the existing line in the analyzed data file: hdfs://eb170:8020/user/ebupt/kmeansData
    2 Vector 1.0 2.1 3.8 belongs to clustering 0
    3 Vector 5.6 7.6 8.9 belongs to clustering 1
    4 Vector 3.2 3.3 6.6 belongs to clustering 0
    5 Vector 8.1 9.2 9.3 belongs to clustering 1
    6 Vector 6.2 6.5 7.3 belongs to clustering 1
    7 -------Predict the non-existent line in the analyzed data file: ----------------
    8 Vector 1.1 2.2 3.9  belongs to clustering 0
    9 Vector 5.5 7.5 8.8  belongs to clustering 1
    10 -------Evaluate clustering by computing Within Set Sum of Squared Errors:-----
    11 Within Set Sum of Squared Errors = 16.393333333333388
4.MLbase总结
介绍了MLbase如何实现机器学习算法,简单介绍了MLBase的设计思想。总的来说,Mlbase的核心是ML Optimizer,把声明式的任务转化成复杂的学习计划,输出最优的模型和计算结果。
与其它机器学习系统Weka、mahout不同:
    MLbase是分布式的,Weka是单机的。
    Mlbase是自动化的,Weka和mahout都需要使用者具备机器学习技能,来选择自己想要的算法和参数来做处理。
    MLbase提供了不同抽象程度的接口,可以扩充ML算法。

3、在Spark开发中使用Scala好?还是使用Java好?你的理由是?
我最熟悉的语言是java,但是我们公司会python的比较多,openstack就是用python
scala也是要用的,也是擅长的。因为我读spark源码来作研发。
结论用大多数用scala,
和openstack接口用python接口
和hadoop接口用java

评分

参与人数 1信誉积分 +5 收起 理由
jieforest + 5 很给力!

查看全部评分

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP