目录

简介


Apache Spark 是一个用来实现快速而通用的集群计算平台。是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)开发。 Spark并不是真的依赖于Hadoop,它有自己的集群管理。 Hadoop只是实现Spark的方法之一。 Spark 速度比MapReduce快,内存中计算快100倍以上,硬盘计算快10倍以上。 Spark 是在 Scala 语言中实现的,它将 Scala 用作其应用程序框架。与 Hadoop 不同,Spark 和 Scala 能够紧密集成,其中的 Scala 可以像操作本地集合对象一样轻松地操作分布式数据集。


Spark项目包含多个组件。
Spark Core:基本功能,包含任务调度,内存管理,错误恢复,与存储系统交互等
RDD的定义,RDD表示分布在多个节点的集合,Spark Core还提供了创建和操作RDD的API

Spark Stream:可以实现高吞吐量,具体容错机制的实时流数据的处理,支持从多个数据源获取数据,如kafka,Flume,Twitter,Socket等。

Spark SQL:操作结构化数据的程序包,可以使用SQL或Hive来查询数据,数据源支持Hive,JSON和Cassndar。

注:之前有个项目叫Shark,和Hive联系太密切,已经被Spark SQL代替。
Mlib:提供一个常见的机器学习功能库。包括分类,回归,聚类,协同过滤和模型评估,模型导入。

GraphX:用来操作图的程序库,可以进行并行的图计算。比如社交网络的朋友圈。
提供了一些常用图算法。例:PageRank,三角计数,操作所有顶点,图分割。
集群管理器:Spark自带一个简易的调度器,支持集群上工作,但如果用了Hadoop Yarn,那就不再用它。

有同学混淆Zookeeper和Yarn,说一下区别:
YARN管理应用程序分配给哪个空闲资源
zookeeper记录所有节点状态,出现故障可以进行转移。


 

配置

配置系统环境变量

《伪分布转分布式集群架构安装手册》已安装完成且配置部分步骤,下面修改配置


conf/spark-env.sh cp spark-env.sh.template spark-env.sh


#spark export SPARK_MASTER_IP=master export SPARK_MASTER_PORT=7077 #指定spark老大Master的端口


使用

启动

hadoop


start-all.sh stop-all.sh


spark


~/spark/sbin/start-all.sh ~/spark/sbin/stop-all.sh


spark shell


spark-shell --master spark://master:7077 --executor-memory 512m --total-executor-cores 2


进程情况


#主节点 进程开启:追加 SparkSubmit #子节点 进程启动:追加 CoarseGrainedExecutorBackend


测试

准备文件

sogou.utf8

本地创建 进入文件夹test

winscp放入sogou.utf8

hdfs上创建文件夹


hadoop fs -mkdir /input


上传文件到hdfs


hadoop fs -put ~/test/sogou.utf8 /input


通过hdfs上的文件创建rdd数据


val rdd1 = sc.textFile("hdfs://master:9000/input/sogou.utf8")


操作文件


rdd1.map(_.split("/t")).map(_(0)).filter(_>"20111230010101").count


用/t切割

 

 

意外

如果mysql没有设置远程访问


1.编辑mysql的配置文件
vim /etc/mysql/my.cnf
把下面一行注释掉
bind-address        = 127.0.0.1
2.授权从其他的IP可以访问,以root的身份访问
grant all privileges on *.* to 'root'@'%' identified  by '1'
3.重启mysql
sudo service mysql restart