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

来源:互联网 发布:社交网络图 软件 编辑:程序博客网 时间:2024/05/16 15:56

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到底快在哪儿,数据处理代码到底少在哪儿,尚不能够分辨,要说快,倒是在sparksbin目录启动start-all.sh stop-all.sh脚本的时候速度比hadoop 快,至于说数据处理代码少,那也只能说Spark 支持的scala语言人家本身代码量就很少,官网spark 实例一共支持三种运行方式,即Scala,Python,Java,以实例处理代码量由小到大排名:Scala<Python<Java,不过这并不代表代码量小,学习周期就小,Spark Hadoop 数据分析方面,熟优熟劣,熟好熟坏,可能真得不断深入的学习实践,才能慢慢体会得到。

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

2. 技术实践内容:

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

Spark 配置文件比较简单,主要配置的文件仅为spark-env.shslaves,主要配置的参数项为四个,即JAVA_HOMESCALA_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")

   SparkwordCount 的使用方法。

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中一直提示文件找不到,多亏老师给点播了这个大错误,要不然,后面的工程整个无法进行。

0 0
原创粉丝点击