您的位置:首页 > 其它

Spark 专题理论学习与技术实践

2014-06-08 15:55 260 查看
1. Spark 相关理论知识学习和对Hadoop的理解 :

Spark学起来相对比较轻松, 除了其本身具有和Hadoop理论知识第一段讲的如大数据,开源等诸多特点,其本身也是一款优秀的大数据存储分析框架,和hadoop 有着惊人的相似,如果不是业界专门给了这么两个长像不相同的概念,真想说一句“Spark就是Hadoop”,打开apache Spark学习官网,有这么一句很显眼的话“Run programs up to 100x faster than Hadoop MapReduce in memory, or 10x faster on disk”,业界喜欢拿“百倍Hadoop处理速度,亚十倍Hadoop处理代码”来盛赞Spark,可能因为是初学这两个专题技术的原因吧,对于Spark到底快在哪儿,数据处理代码到底少在哪儿,尚不能够分辨,要说快,倒是在spark的sbin目录启动start-all.sh 和stop-all.sh脚本的时候速度比hadoop 快,至于说数据处理代码少,那也只能说Spark 支持的scala语言人家本身代码量就很少,官网spark 实例一共支持三种运行方式,即Scala,Python,Java,以实例处理代码量由小到大排名:Scala<Python<Java,不过这并不代表代码量小,学习周期就小,Spark 和Hadoop 数据分析方面,熟优熟劣,熟好熟坏,可能真得不断深入的学习实践,才能慢慢体会得到。

Spark启动过程中包括两个进程,即Master 和Worker,Master 进程负责接收分配任务,Worker 负责处理各个子任务,当Worker将各个任务处理完成之后,将结果返回给Master.

2. 技术实践内容:

Spark sbin 目录各个启动脚本和关闭脚本的使用方法,主要包括的脚本,start-all.sh,stop-all.sh,spark-daemons.sh,start-master.sh,start-slave.sh.

Spark 配置文件比较简单,主要配置的文件仅为spark-env.sh和slaves,主要配置的参数项为四个,即JAVA_HOME,SCALA_HOME,HADOOP_HOME,SPARK_HOME,salves配置为默认的locolhost即可。

Spark bin 目录中启动spark-shell 运行scala 函数实例的方法,初步尝试的两个能用spark-shell 运行实例的方法:

scala> val textFile = sc.textFile("readme.txt")

scala> textFile.count()

统计一个文件中一共有多少行代码;

val linesWithSpark = textFile.filter(line => line.contains("Hello"))

过滤出文件中包含“Hello”的行数。

val file = spark.textFile("hdfs://localhost:9000/user/hadoop/input/readme.txt ")

val counts = file.flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey(_ + _)

counts.saveAsTextFile("hdfs://localhost:9000/user/hadoop/output/part-00000")

Spark中wordCount 的使用方法。

3. Spark 学习中遇到的主要问题:

使用spark.textFile("hdfs://localhost:9000/user/hadoop/input/readme.txt ")的过程中,出现了hadoop hdfs 文件系统访问不了的状况,原因是自己先前的尝试过程中,在hadoop 的bin 目录中使用 ./hadoop fs –put readme input ,而没有使用 ./hadoop fs –mkdir input率先创建input 这个文件夹,导致系统将readme 的内容写进input ,实际造成input 是个文件,而不是个目录,因此scala中一直提示文件找不到,多亏老师给点播了这个大错误,要不然,后面的工程整个无法进行。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: