6.Mesos
Mesos是一个资源管理框架
提供类似于YARN的功能
用户可以在其中插件式地运行Spark,MapReduce,Tez等计算框架任务
Mesos对资源和任务进行隔离,并实现高效的资源任务调度
7.BlinkDB
BlinkDB是一个用于在海量数据上进行交互式SQL的近似查询引擎
允许用户通过查询准确性和查询时间之间做出权衡,完成近似查询
核心思想:通过一个自适应优化框架,随着时间的推移,从原始数据建立并维护一组多维样本,通过一个动态样本选择策略,选择一个适当大小的示例,然后基于查询的准确性和响应时间满足用户查询需求
除了这些库意外,还有一些其他的库,如Blink和Tachyon.
BlinkDB是一个近似查询 引擎,用于海量数据执行交互式SQL查询.BlinkDB可以通过牺牲数据精度来提升查询响应时间.通过在数据样本上执行查询并展示包含有意义的错误线注解的结果,操作大数据集合.
Spark架构采用了分布式计算中的Master-Slave模型。Master是对应集群中的含有Master进程的节点,Slave是集群中含有Worker进程的节点。Master作为整个集群的控制器,负责整个集群的正常运行;Worker相当于是计算节点,接收主节点命令与进行状态汇报;Executor负责任务的执行;Client作为用户的客户端负责提交应用,Driver负责控制一个应用的执行.
Spark集群部署后,需要在主节点和从节点分别启动master进程和Worker进程,对整个集群进行控制.在一个Spark应用的执行程序中.Driver和Worker是两个重要的角色.Driver程序是应用逻辑执行的起点,负责作业的调度,即Task任务的发布,而多个Worker用来管理计算节点和创建Executor并行处理任务.在执行阶段,Driver会将Task和Task所依赖的file和jar序列化后传递给对应的Worker机器.同时Executor对相应数据分区的任务进行处理.
ClusterManager:在standlone模式中即为Master(主节点),控制整个集群.监控Worker.在Yarn模式中为资源管理器.
Worker:从节点,负责控制计算节点,启动Ex而粗投入或Driver
NodeManager:负责计算节点的控制。
Driver:运行Application的main() 函数并创建SparkContext
Executor: 执行器,在worker node上执行任务组件,用于启动线程执行任务.每个Application拥有独立的一组Executors
SparkContext: 整个应用的上下文,监控应用的生命周期
RDD:弹性分布式集合,spark的基本计算单元,一组RDD可形成执行的有向无环图RDD Graph
DAG Scheduler: 根据作业(Job)构建基于Stage的DAG,并交给Stage给TaskScheduler
TaskScheduler:将任务(Task)分发给Executor执行
SparkEnv:线程级别的上下文,存储运行时的重要组件的引用。SparkEnv内创建并包含如下一些重要组件的引用。
MapOutPutTracker:负责Shuffle元信息的存储。
BroadcastManager:负责广播变量的控制与元信息的存储。
BlockManager:负责存储管理、创建和查找块。
MetricsSystem:监控运行时性能指标信息。
SparkConf:负责存储配置信息。
Spark的整体流程:client提交应用,Master找到一个Worker启动Driver,Driver向Master或者向资源管理器申请资源,之后将应用转化为RDD Graph,再由DAGScheduler将RDD Graph转化为Stage的有向无环图提交给TaskScheduler,由TaskScheduler提交任务给Executor执行。在任务执行的过程中,其他组件协同工作,确保整个应用顺利执行。
搭建spark集群安装java环境,spark自动会把scala SDK打包到spark中无需安装scala环境
配置spark $ cp $SPARK_HOME/conf/spark-env.sh.template spark-env.sh $ vim $SPARK_HOME/conf/spark-env.sh 添加 export JAVA_HOME=http://www.likecs.com/usr/java/jdk1.8.0_191 #export SPARK_MASTER_IP=node-1 #export SPARK_MASTER_PORT=7077 $ cp $SPARK_HOME/conf/slaves.template slaves $ vi slaves # 在该文件中添加子节点所在的位置(Worker节点) node-2 node-3 node-4 启动spark集群 $SPARK_HOME/sbin/start-master.sh $SPARK_HOME/sbin/start-slaves.sh启动后执行jps命令,主节点上有Master进程,其他子节点上有Work进行,登录Spark管理界面查看集群状态(主节点)::8080/
到此为止,Spark集群安装完毕,但是有一个很大的问题,那就是Master节点存在单点故障,要解决此问题,就要借助zookeeper,并且启动至少两个Master节点来实现高可靠,配置方式比较简单:
Spark集群规划:node-1,node-2是Master;node-3,node-4,node-5是Worker
安装配置zk集群,并启动zk集群
停止spark所有服务,修改配置文件spark-env.sh,在该配置文件中删掉SPARK_MASTER_IP并添加如下配置
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=zk1,zk2,zk3 -Dspark.deploy.zookeeper.dir=http://www.likecs.com/spark"
1.在node1节点上修改slaves配置文件内容指定worker节点