Welcome to mumu-spark’s documentation!

mumu-spark是一个学习项目,主要通过这个项目来了解和学习spark的基本使用方式和工作原理。mumu-spark主要包括弹性数据集rdd、spark sql、机器学习语言 mllib、实时工作流streaming、图形数据库graphx。通过这些模块的学习,初步掌握spark的使用方式。

The code is open source, and available on GitHub.

项目描述

mumu-spark是一个学习项目,主要通过这个项目来了解和学习spark的基本使用方式和工作原理。mumu-spark主要包括弹性数据集rdd、spark sql、机器学习语言 mllib、实时工作流streaming、图形数据库graphx。通过这些模块的学习,初步掌握spark的使用方式。

版本日志

版本日志记录主要记录了项目的经历和变更。

mumu-spark:0.0.1

项目的第一个版本,该版本创建了该项目,本项目主要包含四个模块。

  • spark rdd的初步学习
  • spark sql的初步学习
  • spark hive的初步学习
  • spark streaming的初步学习
  • spark ml的初步学习
  • spark graphx 的了解,目前spark2.2.0版本没有提供java的API,只能通过scala来学习。

有向无环图

spark提交job之后会把job分成多个stage,多个stage之间是有依赖关系的,正如前面所看到的的,stage0依赖于stage1,因此构成了有向无环图DAG。而且stage中 的依赖分为窄依赖和宽依赖,窄依赖是一个worker节点的数据只能被一个worker使用,而宽依赖是一个worker节点的数据被多个worker使用。一般讲多个窄依赖归 类为一个stage,方便与pipeline管道执行,而将以宽依赖分为一个stage。

spark正是使用dag有向无环图来实现容错机制,当节点的数据丢失的时候,我们可以通过dag向父节点重新计算数据,这种容错机制成为lineage。

spark sql

spark streaming

spark mlib

spark Graphx

常见问题

jdk版本低问题

spark2.2.0版本依赖于java1.8,如果执行spark程序的时候jdk版本低于1.8的时候会包版本错误问题。

hadoop的文件系统异常问题

当项目中同时依赖hadoop-commons包和hadoop-hdfs包的时候,打包项目的时候会存在一个问题,那就是hadoop-hdfs(hadoop2.8.1之后是hadoop-client包)包下 的MATA-INF/service/org.apache.hadoop.fs.FileSystem文件会被覆盖,导致打包程序无法使用org.apache.hadoop.hdfs.DistributedFileSystem文件系统无法 使用。

hadoop-common包

org.apache.hadoop.fs.LocalFileSystem
org.apache.hadoop.fs.viewfs.ViewFileSystem
org.apache.hadoop.fs.ftp.FTPFileSystem
org.apache.hadoop.fs.HarFileSystem

hadoop-hdfs或者hadoop-client包

org.apache.hadoop.hdfs.DistributedFileSystem
org.apache.hadoop.hdfs.web.WebHdfsFileSystem
org.apache.hadoop.hdfs.web.SWebHdfsFileSystem
org.apache.hadoop.hdfs.web.HftpFileSystem
org.apache.hadoop.hdfs.web.HsftpFileSystem